0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MCU串口自动识别波特率原理分析

MCU开发加油站 来源:strongerHuang 2024-10-23 16:12 次阅读

本文直接来源:strongerHuang

参考来源 | 瑞萨嵌入式小百科

现在的单片机资源越来越丰富了,其中我们常用的串口也是内部集成了多个,关键功能也越来越强了。 我们有些应用可能会用到串口自动识别波特率,今天就来讲讲MCU串口自动识别波特率底层的常见的原理,以及MCU的案例。

自动识别波特率常见原理

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

起始位和停止位检测法:

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

特定模式检测法:

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

波特率扫描法:

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

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

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

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

1UART1配置

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

82a2f8c2-90fc-11ef-a511-92fbcf53809c.png

2GPT配置

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

3P402管脚配置为IRQ4

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

82cece20-90fc-11ef-a511-92fbcf53809c.png

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

82e0ad8e-90fc-11ef-a511-92fbcf53809c.png

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

取得波特率实际值后,通过硬件手册上的相关的方程式就能够反推出几个控制波特率的寄存器的配置需要值 (brr, semr , cks等),并将相关计算出的数值修改到FSP SCI1的全局变量结构体内 (g_uart1_baud_setting)。

82ed415c-90fc-11ef-a511-92fbcf53809c.png

5修改P402管脚配置为UART-RXD

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

82fdd4ae-90fc-11ef-a511-92fbcf53809c.png

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

830cff9c-90fc-11ef-a511-92fbcf53809c.png

832503e4-90fc-11ef-a511-92fbcf53809c.png

上述方法只需通过底层寄存器配置就能使简单快速做波特率侦测、计算和配置。通过这种方式,只要芯片系统时钟符合范围要求,任何非通用或者极高速/超低速的波特率也是能使实现侦测并配置使用。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6027

    文章

    44463

    浏览量

    631311
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16815

    浏览量

    349555
  • 串口
    +关注

    关注

    14

    文章

    1539

    浏览量

    75950
  • 波特率
    +关注

    关注

    2

    文章

    293

    浏览量

    34009

原文标题:MCU串口自动识别波特率底层的原理

文章出处:【微信号:mcugeek,微信公众号:MCU开发加油站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    什么是串口波特率串口波特率的分类及应用详解

    什么是串口波特率串口波特率是指串口通信系统中传输数据的速率。在UART串口通信中,数据以位(bi
    的头像 发表于 08-08 10:09 5589次阅读
    什么是<b class='flag-5'>串口</b><b class='flag-5'>波特率</b>?<b class='flag-5'>串口</b><b class='flag-5'>波特率</b>的分类及应用详解

    基于stm32的自动识别波特率的设计

    某设备是以某个波特率发送固定已知数据的,用f4串口接收数据,怎么判别这个设备的波特率是多少呢
    发表于 09-14 14:12

    【个人经验分享】STM32ISP与STM32波特率自动识别技术理解

    STM32之ISP也同其他ISP一样采用从机(STM32)波特率自动识别技术.它采用非常“不理智”的偶校验(一个字节前面加一位校验位使得“1”的个数保持为偶数),菜农对其不 慎满意
    发表于 08-29 09:43

    29035串口刷写程序波特率自动识别DSP是怎么实现的

    有用的程序数据,那么对于没有程序数据的地址上面的数据应该都是FF,那么这个FF是否也要用数据流传送给DSP芯片2、对于串口刷写时,波特率自动识别DSP是怎么实现的,对于这个过程,上位机需要做哪些动作
    发表于 12-07 11:35

    关于UART串口自动识别波特率的问题汇总,错过绝对后悔

    关于UART串口自动识别波特率的问题汇总,错过绝对后悔
    发表于 12-15 06:19

    单片机有没有串口波特率自动识别算法?

    单片机有没有串口波特率自动识别算法
    发表于 09-21 07:09

    串口波特率计算工具下载

    串口波特率计算工具
    发表于 03-11 09:38 179次下载

    STM32的串口自动识别波特率

    STM32串口自动识别波特率
    的头像 发表于 03-04 09:53 9245次阅读

    串口通讯实际的波特率测量

    平时使用串口打印出现乱码的绝大部分原因是串口波特率没对。那么我们怎么测量实际的波特率呢?在这之前,顺便一起回顾一下波特率的概念。
    的头像 发表于 04-04 17:27 7019次阅读
    <b class='flag-5'>串口</b>通讯实际的<b class='flag-5'>波特率</b>测量

    串口波特率计算详解

    STM32下波特率计算详解波特率的计算    STM32下的波特率串口外设时钟息息相关,USART 1的时钟来源于APB2,USART 2-5的时钟来源于APB1。在STM32中,有
    发表于 12-05 09:06 22次下载
    <b class='flag-5'>串口</b><b class='flag-5'>波特率</b>计算详解

    什么是波特率?为什么要设置波特率

    欢迎来到东用知识小课堂!一、什么是波特率波特率(BaudRate)单位bps是用于衡量串口通信速度的单位,它表示每秒钟发送的比特数。如果一个串口
    的头像 发表于 04-08 00:00 6442次阅读
    什么是<b class='flag-5'>波特率</b>?为什么要设置<b class='flag-5'>波特率</b>?

    STM32F0的USART波特率自动识别问题

    电子发烧友网站提供《STM32F0的USART波特率自动识别问题.pdf》资料免费下载
    发表于 08-01 11:00 2次下载
    STM32F0的USART<b class='flag-5'>波特率</b><b class='flag-5'>自动识别</b>问题

    串口传输速率低于波特率怎么办 串口通信的波特率如何设置

    如果串口传输速率低于波特率,您可以尝试以下方法来解决问题:   1. 检查硬件连接:确保串口连接正确且牢固。检查连接线是否完好,确保没有松动或断开的接触。   2. 检查波特率设置
    的头像 发表于 09-08 16:23 5797次阅读

    什么是串口波特率串口通信为什么要设置波特率

    在电子设备的世界中,数据是通过各种方式进行传输的。其中,串口通信是一种常见的数据传输方式,它以其简单、可靠和广泛的特性,成为了电子设备间通信的重要手段。而在串口通信中,有一个非常重要的参数——波特率
    的头像 发表于 11-03 08:21 4388次阅读
    什么是<b class='flag-5'>串口</b><b class='flag-5'>波特率</b>?<b class='flag-5'>串口</b>通信为什么要设置<b class='flag-5'>波特率</b>?

    什么是串口波特率串口通信为什么要设置波特率

    什么是串口波特率串口通信为什么要设置波特率波特率与比特的关系 如何选择
    的头像 发表于 01-22 16:10 1792次阅读