这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 【EMF8BB52单片机】工业智能控制研发(熟悉编译软件

共57条 6/6 |‹ 1 2 3 4 5 6 跳转至
助工
2022-01-08 23:22:46     打赏
51楼

总结的还是非常到位的


工程师
2022-01-10 23:26:17     打赏
52楼

讲解的蛮不错的


专家
2022-01-11 23:55:17     打赏
53楼

感谢楼主的分享


专家
2022-01-12 23:43:40     打赏
54楼

谢谢


菜鸟
2022-01-15 15:01:53     打赏
55楼

接下来讲解一下这款单片机的串口。


EFM8BB52这款单片机设计有两个串口,UART0(P0.4&P0.5)和UART1(P2.2&P2.3),除了默认输出引脚外,还可以通过CLU0,1,2路由到其它输出IO口,可以说是灵活便捷。串口具体的初始化设置依然是参照51单片机的经典设计,不过因为功能有所升级,UART1设置要复杂的多的多,鉴于时间有限,精力不足,只能给大家介绍下UART0了。后续如果更多的开发需求,大家可以自行好好研究一下UART1设计的精妙之处,到时候不妨与我等志同道和之士分享一番。


EFM8BB52-UART0.doc


上面是芯片手册里面关于UART0串口的介绍,已经为大家翻译成了中文,放心下载阅览。咋一看UART0的介绍内容还不少,为了避免大家看着犯头痛,我给大家总结一些有用的点:

1.UART使用两个信号(TXRX)和一个预定的固定波特率来提供与其他设备的异步通信。

   UART模块提供以下特性:

l   异步传输和接收。

l   波特率高达syclk /2(发送)syclk /8(接收)

l   8位或9位数据。

l   自动启动和停止。

l   单字节FIFO发送和接收

2.UART0波特率由定时器1生成,8位自动加载。TXRX定时器溢出都除以2,以生成TXRX波特率。

定时器1应该被配置为8位自动重新加载模式(模式2)。定时器1的重新加载值和预分频器应该被设置,以使溢出发生在期望的UART0波特率的两倍。UART0波特率为定时器1溢出率的一半。

3.要启用数据接收,固件应该将REN位写入1

4.UART0中断启用的情况下,UART0中断标志RI(或TI)不会被硬件清除。它们必须由软件手动清除,允许软件确定UART0中断的原因(发送完成或接收完成)

5.默认情况下,UARTRX0输入是通过crossbar路由的。也可以将RX输入路由到CLU0的输出,CLU1CLU2。该函数由寄存器UART0PCF中的RXSEL字段选择。


大致浏览以上关键信息后,我们终于知道要想是UART0串口工作,除了设置P0.4,P0.5 IO口相关寄存器以外还需要设置以下几个寄存器:

  1. 1.CLKSEL  系统时钟选择寄存器

  2. 2.CKCON0   系统时钟控制设置寄存器

  3. 3.TMOD      定时器计数器模式设置寄存器

  4. 4.SCON0    串口控制设置寄存器

是不是感觉超简单呢!不急不急,还漏了东西。既然涉及串口收发,那么波特率的计算与定时器初始值得设定必不可少了。为了简化计算,我已经把分频器,倍频功能都舍弃了,定时器(必须选用T1)选用了工作模式2(8位计数且自动重装初值)。然后根据有关波特率资料整理出来了下面这个公式:

微信截图_20220115173812.png


波特率了解后接下来我们看看涉及的相关特殊寄存器详细介绍图表吧:



CKCON0(3).pngCKCON0 (4).png



由于这款开发板集成有J-LINK调试芯片,而调试芯片也自然连接了在了UART0串口上面,所以我们不需要外接任何元器件即可直接进行串口通信调试,简直是棒极了有没有!!下面呈上串口调试工具串口超级终端和UART0调试程序:

超级终端_hyper_terminal_latest(中文).zip

EFM8BB52_UART.zip  串口传输模式为中断模式

注意:程序中TH0=0x96,那么通过波特率计算公式得出波特率为115200





工程师
2022-01-15 23:31:53     打赏
56楼

讲解的不错


工程师
2022-01-15 23:53:21     打赏
57楼

感谢分享


共57条 6/6 |‹ 1 2 3 4 5 6 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]