关于UART波特率设定的注意事项

时间:2024-01-22

什么是UART?

 通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART(串口通讯),是一种异步收发传输器,异步意味着没有时钟信号来同步从发送设备进入接收端的输出位,因此通讯双方必须设定相同的波特率才能成功通讯。(波特率:每秒钟可以传输多少个bit)。


一:波特率允许的误差范围

1.1: 串口发送每一个字节都有一个起始位做同步,所以误差只会在一个字节内累计,在最后一个位采样时,允许极限误差为0.5位。

1.2:当串口选择模式2或3--- 9位串口通讯由起始位、数据位、效验位、停止位组成。即1+8+1+1=11位。0.5/11=4.54%, 2个IC间允许最大频率误差是4.54%;每个IC允许的误差范围是±2.27%

123.png

1.3:当串口选择模式0或1--- 8位串口通讯由起始位、数据位、停止位组成。

 即1+8+1=10位。0.5/10=5%, 2个IC间允许最大频率误差是5%;每个IC允许的误差范围是±2.5%。


二:如何计算MCU主频是否能得到准确的波特率

海速芯MCU常用波特率模式为模式1、模式3。是否可以设定到用户所需的波特率,一般利用“主频Fsysclk÷32÷波特率=? ”, 结果得到的是整数,或者非常接近整数则可以输出到对应的波特率。  

123.png

以TM52F1363  16.588M为例:

16.588*1000000÷32÷19200=26.998, 如果KEIL用宏定义自动计算波特率则会出错,因为电脑自动取整数,得到是26,导致误差3.8%。把主频宏定义适当改为16.589M,  

16.589*1000000÷32÷19200=27.0003, 电脑自动取整27,理论波特率误差万分之0.48。

123.png

456.png

注意:以上均是主频跑1分频计算结果,如跑2分频,部分波特率超范围,不可取。

如何填充计数值TH1:

123.png

例如:TM52F1363主频1分频,波特率设定19200,重装计数值为27,SMOD=1,则TH1=256-27


三: 设定好波特率后必须用示波器确认是否正确

以9600波特率为例:

下图UART发送AA/55实际波形频率是4.799K,4799*2/9600=0.99979. 误差约0.02%,也可以用1 bit的时间计算(下图是104.2us),1/104.2*1000000=9596.9 

常温下正常IC波特率误差应该在1%以内。(注意获取频率应该采用示波器measure 自动获取),如果发现波特率误差在2%以上,一般是设定参数不对,需要检查程序。

123.png

四:需要考虑温度变化对波特率的影响

以TM52F1363为例子,IRC内振频率在不同电压下受到温度的影响也不同。温度漂移建议控制在1%以内。因为常温下IC本身偏差就可能在1%左右, 总体应该控制在±2.27%以内。

123.png

五:TXD,RXD IO的设定

TXD建议设为推挽输出,RXD应当设为输入上拉电阻模式。 

 

找回密码

会员登录

会员注册

为了让海速芯更好地帮助到您,请使用真实信息和公司邮箱注册账户!

  • 客户
  • 代理商
  • 员工
用户名*
姓名*
公司名称*
公司地址*
手机*
邮箱*
密码*
再次输入密码*
验证码*
看不清,换一张

已有账号?

用户名*
公司名称*
代理商编号
姓名*
手机*
邮箱*
公司地址*
密码*
再次输入密码*
验证码*
看不清,换一张

已有账号?

用户名*
姓名*
职位*
手机*
员工编号
邮箱*
密码*
再次输入密码*
验证码*
验证码
看不清,换一张

已有账号?

0571-8936 0656