发布时间:2016-11-15 浏览次数:2933
在做多设备UART/USART、RS232、RS485通信时,经常会遇到与其他设备的波特率未知,但大概范围可以确认,此时就会考虑波特率识别问题,即波特率自适应问题。根据自己的一些从业经验,将这些系统设计时针对波特率自适应问题做一些阐述和分享。
◆ 一般方法:主从绑定关系,UART/USART 即为主设备和从设备,设计同步帧、心跳帧命令。即每次上电时主设备向从设备发送询问数据报文,此报文才依次以多波特率发送,从设备已固定波特率接收。如果从设备收到符合协议要求的报文,则按照协议要求应答报文。
◆ 经典设计:在确定通信时,增加前导字符,给控制器接收端测量通信脉宽和切换波特率预留时间。各厂家常用的通信协议中前导字符的多为0xFE、0x55、0xAA、0x5A、0xA5,至于确定多少个前导符合适,可以根据自己系统设计而定。
◆ 剑走偏锋:假如已知整个系统中的波特率在1200bps、2400bps、4800bps、9600bps,但是具体多少不确定。作者之前做的一个小项目进行过测试,感觉效果不错,有兴趣的可以尝试下。即接收端固定以9600bps波特率接收,利用该波特率的脉宽位104us的特性去测量低速率的脉宽,假设通信报文前导符为0xFE=0B1111 1110,测量结果如下,物理层协议为8个数据位/偶校验/2个停止位。
微信扫一扫,关注我们
下一主题:家庭防盗报警系统的安全构造 |
上一主题:光耦的实用技巧 |