以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
|