查看: 2589|回复: 0
打印 上一主题 下一主题

为什么会有9600、19200、115200的波特率

[复制链接]
跳转到指定楼层
沙发
发表于 2015-3-17 10:24:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以PC机作为参考的前提下,标准速率:

1。若用RS232接口编程做RS485通讯,标准程序的最大传输速率是115200bps。

2。若用RS232接口编程做RS485通讯,自行编程的最大传输速率是230400bps。

3。若用USB转RS232接口编程做RS485通讯,标准程序的最大传输速率是921600bps。

根据电、传输介质等的物理特性结合串口设备使用的要求
为了保证有效通讯,根据电、传输介质等的物理特性结合串口设备使用的要求,确定RS232最大传输速率只能是115200,然后逐级二分得到57600,28800,19200……为适应这些速率,设计相应的晶振频率

RS232协议并未规定最大传输速率,而是规定“速率低于20kb/s时,传输距离可以到15m”。随着距离减小,这个速率可以提高。RS232中一个波特包括一个bit。所以波特率与比特率相等。而随着现在电子科技发展,芯片驱动接受能力增强。这个速率也在提高,现在PC机都到921600了。不要为“最大传输速率”的定义纠结。
不知道你算出来,指的是什么。20kb/s,921600b/s,都是包含头尾校验的,没什么折算的。串行通信,无特殊说明,速率不是指净荷速率。11.0592的晶振能够保证波特率准确。
假若现在单片机外接的晶振为12MHz时,以T/C2作波特率发生器,根据波特率公式:
  波特率=Fosc/2x16x(65536-t)
  9600=12MHz/2x16x(65536-t)
t=65496.9375
  “65496.9375”不是一个整数值,是一个带有小数点的数值。对于常用的8位、9位、11位一帧的数据接收与传输,最大的允许误差分别是6.25%、5.56%、4.5%。虽然波特率允许误差,但是这样通信时便会产生积累误差,进而影响数据的正确性。
    假若现在单片机外接的晶振为11.0592MHz时,以T/C2作波特率发生器,根据波特率公式:
波特率=Fosc/2x16x(65536-t)
9600=11.0592MHz/2x16x(65536-t)
t=65500=0xFFDC

在使用12MHz时,传统上用的9600和4800都不行

尤其是4800  许多人一直认为其误差是0.16% 其实是7% 你自己可以算一下

应该用1200  或者 2400
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

快速回复 返回顶部 返回列表