打印
[其它应用]

讲解MCU串口如何自动识别波特率

[复制链接]
1509|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cr315|  楼主 | 2024-6-24 11:45 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
现在的单片机资源越来越丰富了,其中我们常用的串口也是内部集成了多个,关键功能也越来越强了。



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



自动识别波特率常见原理

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

以下是几种常见的自动波特率识别原理。

起始位和停止位检测法:
原理:串口通信中,每个数据包的开始都会有一个起始位(通常为0),结束有一个或多个停止位(通常为1)。
通过检测这两个位的时间间隔,可以计算出波特率。
特定模式检测法:
原理:发送设备发送一系列具有特定模式的字节(如固定的字节序列或模式),接收设备尝试以不同的波特率接收并检测这些模式。
当检测到与发送模式匹配的数据时,即可确定当前的波特率。
波特率扫描法:
原理:发送设备在初始化阶段发送一个包含多个不同波特率的扫描命令。接收设备在接收到这些命令后,会自动检测并匹配最接近的波特率。
周期性信号检测法:
原理:利用信号的周期性变化进行波特率检测。通过分析信号的频率和周期性特征,可以推算出波特率。
MCU硬件串口自动识别波特率

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

UART1配置

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




GPT配置

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



P402管脚配置为IRQ4

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



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



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

取得波特率实际值后,通过硬件手册上的相关的方程式就能够反推出几个控制波特率的寄存器的配置需要值 (brr,  semr , cks等)。



并将相关计算出的数值修改到FSP SCI1的全局变量结构体内 (g_uart1_baud_setting)。




修改P402管脚配置为UART-RXD
然后将P402管脚修改为UART功能,并启动 UART_Open() 函数,设置波特率已配置标志。




这样主函数就能够直接通过已侦测到的波特率直接发送数据和开始接收数据。


上述方法只需通过底层寄存器配置就能使简单快速做波特率侦测、计算和配置。

通过这种方式,只要芯片系统时钟符合范围要求,任何非通用或者极高速/超低速的波特率也是能使实现侦测并配置使用。
来源:瑞萨嵌入式小百科

文章来源于网络,版权归原作者所有,如有侵权,请联系删除。

使用特权

评论回复
沙发
呐咯密密| | 2024-6-24 14:03 | 只看该作者
自动识别会造成系统延时吗

使用特权

评论回复
板凳
Henryko| | 2024-6-27 15:20 | 只看该作者
这个延时应该没啥影响吧

使用特权

评论回复
地板
盗铃何须掩耳| | 2024-7-11 14:00 | 只看该作者
这个对设备兼容很好

使用特权

评论回复
5
我喜欢打游戏| | 2024-7-15 15:16 | 只看该作者
要是需要匹配波特率,正式通信前是不是得先发指令进行握手

使用特权

评论回复
6
tpgf| | 2024-7-18 12:01 | 只看该作者
想要实现自动识别波特率是不是必须要使用定时器啊

使用特权

评论回复
7
paotangsan| | 2024-7-18 12:40 | 只看该作者
也可以通过通讯提前进行预设需要更改的波特率

使用特权

评论回复
8
wakayi| | 2024-7-18 13:21 | 只看该作者
首次通讯的时候双方的波特率应该是互相知道的吧

使用特权

评论回复
9
xiaoqizi| | 2024-7-18 13:58 | 只看该作者
通过上一次的通讯规定下一次的波特率 就行了

使用特权

评论回复
10
wowu| | 2024-7-18 21:41 | 只看该作者
呐咯密密 发表于 2024-6-24 14:03
自动识别会造成系统延时吗

我觉得这种方式应该不会造成系统的延时

使用特权

评论回复
11
renzheshengui| | 2024-7-18 22:13 | 只看该作者
有没有可能识别非常规的波特率呢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1339

主题

3897

帖子

0

粉丝