首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

自动识别波特率解决方案

2012-03-28 
自动识别波特率我想做一个自动识别波特率的软件。就是两个PC机传输的时候,不需要再去设定波特率,利用特殊的

自动识别波特率
我想做一个自动识别波特率的软件。就是两个PC机传输的时候,不需要再去设定波特率,利用特殊的字符识别或者是算法来实现这一功能。
大家给出出主意,要是能结合单片机就更好了

[解决办法]
原理就是发一个0x55或者0xaa然后测出脉冲宽度
[解决办法]
可以是,甲方上电后固定的发送同一字符,例如“55”,乙方逐次改变波特率:1200,2400, 4800, 9600接收。当正确收到55后,立即按此波特率,返回一个信息给对方。然后进入正常通讯。
[解决办法]
2楼是很好的方法了。LIN总线的自动波特率同步就是这个方式。
还有如下一种类似的方法供参考。
(1)将串口RX的线同时连到单片机输入扑捉端口。假设波特率的范围是1200-38400.则对应的一位宽度为26us-833us。
(2)甲单片机上电后已1次/秒的频率发送0x55. 乙单片机来输入捕捉来采集RX上高地脉冲的宽度。采集连续四个连续下降沿之间的周期,就可以得到一个位的时间,就可以得到波特率了,采集四个下降沿的目的是为了提高精度。
当采集到的高低电平的宽度超过(1)中的范围时,需要重新等待下一个四个连续的下降沿。这样的目的是防止乙单片机上点的时候正巧采集了第一个0x55的一半,然后又采集到了1s之后的0x55的一部分,这样算出来的波特率是完全错误的。
如果不想做的这么麻烦,只有用输入捕捉采集到两个宽度相等(比如误差《5%)的高电平和低电平,就认为这是一个有效的位宽度,然后计算出波特率。
(3)乙单片机以正确的波特率发送应答信号给甲方建立握手。
[解决办法]

探讨

有没有更加优化的算法呢?
这样一个个式我感觉时间上比较长,你说呢

热点排行