微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机RS-485多机通讯的实现

单片机RS-485多机通讯的实现

时间:07-19 来源:互联网 点击:

发送的第九位数据位(若发送地址帧时)和停止位尚未发出。如果在这是关闭发送控制,势必造成发送帧数据不完整。如果单片机多机通讯采用较高的波特率,几条操作指令的延时就可能超过2位(或1位)数据的发送时间,问题或许不会出现。但是如果采用较低波特率,如9600,发送一位数据需100μs左右,单靠几条操作指令的延时远远不够,问题就明显地暴露出来。接收数据时也同样如此,单片机在接收完8个数据位后就建立起RI信号,但此时还未接收到第九位数据位(若接收地址帧时)和停止位。所以,接收端必须延时大于2位数据位的时间(1位数据位时间=1/波特率),再作应答,否则会发生总线冲突。
  3) 总线上所连接的各单机的发送控制信号在时序上完全隔开。
  为了保证发送和接收信号的完整和正确,避免总线上信号的碰撞,对总线的使用权必须进行分配才能避免竞争,连接到总线上的单机,其发送控制信号在时间上要完全隔离。
  总之,发送和接收控制信号应该足够宽,以保证完整地接收一帧数据,任意两个单机的发送控制信号在时间上完全分开,避免总线争端。
  程序流程框图,参见图4。其中:a)为发送流程图;b)为接收流程图。


图4 程序流程图

注:延时T秒的取值
(1) 传送地址帧时,T>2X(1/波特率),可以选取T=2.5X(1/波特率)。
(2) 传送数据帧时,T>1X(1/波特率),可以选取T=1.5X(1/波特率)。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top