打印

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

[复制链接]
516|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

粉丝