物理连接(交叉连接)
主机的RTS(输出)信号,连接到从机的CTS(输入)信号。
主机的CTS(输入)信号,连接到从机的RTS(输出)信号。
主机发送过程:
主机查询主机的CTS脚信号,此信号连接到从机的RTS信号,受从机控制。如果主机CTS
信号为有效(低),表示从机的接收FIFO未满,从机可以接收,此时主机可以向从机发送
数据。并且在发送过程中要一直查询CTS信号是否为有效状态。一旦无效,则终止发送。
那主机的CTS信号什么时候会无效呢?
从机在接收到主机发送的数据时,从机的接收模块的FIFO如果满了,则会使从机RTS无效,
也即主机的CTS信号无效。主机则查询到CTS无效时,主机发送中止。
此过程可以由硬流控完成。我们只要设置开启硬流控,设置FIFO大小。RTS信号和CTS
信号由控制器代码查询和设置。
主机接收过程:
主机如果接收FIFO未满,则使主机RTS信号有效,也即从机的CTS信号有效。此时从机
如果要发送,发送前会查询从机的CTS信号,如果为有效,则开始发送。并且在发送过程
中移植查询从机CTS信号的有效状态,如果无效则中止发送。是否无效由主机的RTS信号
决定。主机如果FIFO满了,则使主机RTS信号无效,也即从机CTS信号无效。主机接收
中止。
理论验证:
1、 主机发送验证:
向主机串口丢数据,看TX线上是否有数据。
理论上,遥控主机CTS信号为无效时,TX线上无数据;遥控主机CTS信号为有效时,TX线上有数据;
2、 主机接收验证:
从机向串口丢数据,主机看RX线上是否有数据。
理论上,如果主机使RTS信号为有效时,RX线上有数据;如果主机使RTS信号为无效时,RX线上无数据;
1.首先确定DCE和DTE。 DCE是指modern等通信设备, DTE是计算机等终端设备;
- DCE与DTE; DTE与DTE之间流控信号CTS和RTS的接线不同;
DTE与DCE之间:
DTE与DTE之间
RTS (Require ToSend,发送请求)为输出信号,用于指示本设备准备好可接收数据,低电平有效,低电平说明本设备可以接收数据。
CTS (Clear ToSend,发送允许)为输入信号,用于判断是否可以向对方发送数据,低电平有效,低电平说明本设备可以向对方发送数据。
下面是摘录网上有用的参考资料:
假定A、B两设备通信,A设备的RTS 连接B设备的CTS ;A设备的CTS 连接B设备的RTS 。前一路信号控制B设备的发送,后一路信号控制A设备的发送。对B设备的发送(A设备接收)来说,如果A设备接收缓冲快满的时发出RTS 信号(意思通知B设备停止发送),B设备通过CTS 检测到该信号,停止发送;一段时间后A设备接收缓冲有了空余,发出RTS 信号,指示B设备开始发送数据。A设备发(B设备接收)类似。上述功能也能在数据流中插入Xoff(特殊字符)和Xon(另一个特殊字符)信号来实现。A设备一旦接收到B设备发送过来的Xoff,立刻停止发 送;反之,如接收到B设备发送过来的Xon,则恢复发送数据给B设备。同理,B设备也类似,从而实现收发双方的速度匹配。
半双工的方向切换:RS232中使用DTR(Date Terminal Ready,数据终端准备)与DSR(Data Set Ready ,数据设备准备好)进行主流控,类似上述的RTS 与CTS 。对半双工的通信的DTE(Date Terminal Equipment,数据终端设备)与DCE(Data circuitEquipment )来说,默认的方向是DTE接收,DCE发送。如果DTE要发送数据,必须发出RTS 信号,请求发送数据。DCE收到后如果空闲则发出CTS 回应RTS 信号,表示响应请求,这样通信方向就变为DTE->TCE,同时RTS 与CTS 信号必须一直保持。从这里可以看出,CTS ,TRS虽然也有点流控的意思(如CTS 没有发出,DTE也不能发送数据),但主要是用来进行方向切换的。