串行通信波特率如何自动检测

[复制链接]
847|3
 楼主| huihui520 发表于 2015-8-18 21:50 | 显示全部楼层 |阅读模式
串行通信波特率如何自动检测?
 楼主| huihui520 发表于 2015-8-18 21:55 | 显示全部楼层
串行通信中一个二进制位的传输时间(记为T)取决于通信的波特率,9600波特时一个 二进制位的传输时间是19200波特时一个二进制位传输时间的两倍,即:2*T19200=T 9600。因此,9600波特时一个位的传输时间,19200波特时可以传输两个位。同样地 ,9600波特传输两个位的时间在4800波特时只能传送一个位。主机设定接收波特率为9600, 终端只有也以9600波特发送的字符,主机才能正确地接收。发送波特率高于或低于9600都会 使主机接收到的字符发生错误。接收波特率为9600,终端以不同的波特率发送回车符时,主 机接收到的二进制序列如表1所示。
没有六一了 发表于 2015-8-18 22:03 | 显示全部楼层
除了19200和1800波特时两种特例情况,其他情形的二进制序列都是 9600波特时二进制序列的变换。取前十个二进制位与9600波特时的二进制位相对应。忽略缺 少停止位‘1’引发的数据帧错误,把接收到的字符表示成字节方式(如表1的最右列所示) 。例如:在发送速率为1200波特,接收速率为9600波特时,主机得到的字节是0x80,而不 是正确的回车符0x0D。因为在不同的发送速率下(9600,4800,2400,1200)得到的字节 不同,所以通过接收字符的判定就可以确定发送波特率。
历史暴君 发表于 2015-8-18 23:00 | 显示全部楼层
这个我做过,不过要发送一个固定的字符
您需要登录后才可以回帖 登录 | 注册

本版积分规则

84

主题

706

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部