专栏名称: 张飞实战电子
1.张飞老师完整性系统性地讲解模拟电路设计; 2.创新性提出学习研究和设计电路的三大定律,颠覆大家原有学习电路固有思维和恐惧,给大家带来快乐学习的全新思路; 3.张老师独家归纳出各种电路解析方法论,帮助大家彻底理解和轻松设计电路
51好读  ›  专栏  ›  张飞实战电子

MCU串口自动识别波特率底层的原理

张飞实战电子  · 公众号  ·  · 2024-06-05 15:58

主要观点总结

文章介绍了单片机串口自动识别波特率的基本原理和常见方法,包括起始位和停止位检测法、特定模式检测法、波特率扫描法以及周期性信号检测法。文章还以瑞萨RA系列单片机为例,详细说明了MCU硬件串口自动识别波特率的配置过程,包括UART配置、GPT配置、管脚配置、波特率计算和相关寄存器的配置等。

关键观点总结

关键观点1: 文章主要介绍了串口自动识别波特率的底层原理。

文章详细解释了起始位和停止位检测法、特定模式检测法等多种自动波特率识别原理。

关键观点2: 文章以瑞萨RA系列单片机为例,说明了MCU硬件串口自动识别波特率的配置过程。

配置了UART、GPT、管脚等硬件资源,并涉及到波特率计算和相关寄存器的配置。

关键观点3: 文章强调了波特率自动识别的重要性。

通过自动识别波特率,可以实现更灵活、高效的数据传输,尤其在复杂的环境中,能够自动适应不同的数据传输速率。


正文

现在的单片机资源越来越丰富了,其中我们常用的串口也是内部集成了多个,关键功能也越来越强了。


我们有些应用可能会用到串口自动识别波特率,今天就来讲讲MCU串口自动识别波特率底层的常见的原理,以及MCU的案例。


自动识别波特率常见原理

串口自动识别波特率(Auto Baud Rate Detection,简称ABR)的底层原理主要基于串口通信中数据的传输特性和设备间的交互机制。以下是几种常见的自动波特率识别原理。


起始位和停止位检测法:

原理:串口通信中,每个数据包的开始都会有一个起始位(通常为0),结束有一个或多个停止位(通常为1)。通过检测这两个位的时间间隔,可以计算出波特率。


特定模式检测法:

原理:发送设备发送一系列具有特定模式的字节(如固定的字节序列或模式),接收设备尝试以不同的波特率接收并检测这些模式。当检测到与发送模式匹配的数据时,即可确定当前的波特率。


波特率扫描法:

原理:发送设备在初始化阶段发送一个包含多个不同波特率的扫描命令。接收设备在接收到这些命令后,会自动检测并匹配最接近的波特率。


周期性信号检测法:

原理:利用信号的周期性变化进行波特率检测。通过分析信号的频率和周期性特征,可以推算出波特率。


MCU硬件串口自动识别波特率

现在市面上很多新推出的MCU都有波特率自动识别的功能,这里以瑞萨RA系列单片机为例,配合e2 studio给大家讲讲串口自动识别波特率的配置。


1

UART1配置

UART1的配置只需要按照应用要求来做就可以,但必须留意所选的RXD脚必须跟IRQ是复用的,以便做软件切换。由于是做波特率自适应,属性页面中关于Baud的配置可以忽略。


2

GPT配置

由于需要通过定时器来做start bit的时间间隔测量,可以选用GPT/AGT使用one-shot/Periodic模式并留足够Period值余量来确保start bit在低速下不会溢出。


3

P402管脚配置为IRQ4

将SCI1串口默认的(RXD)P402管脚改为IRQ4,并添加中断入口函数。


中断入口函数里面首先判断是否发生了下降沿触发,然后启动定时器,等再次中断进入后,停止定时器,并取得定时器计数值,通过跟默认已知的系统时钟参数相除,就能得到确切的波特率数值。


4

波特率计算和相关寄存器配置







请到「今天看啥」查看全文