RTS与CTS的定义
RTS和CTS用于流控,提供了流控信号,但实际的流控功能还是要在软件实现,就是说即使硬件上RTS和CTS做了连线,但软件没有使用这两个信号,则通信就如无流控状态。
RTS (Require ToSend,发送请求)为输出信号,用于指示本设备准备好可接收数据,低电平有效,低电平说明本设备可以接收数据。
CTS (Clear ToSend,发送允许)为输入信号,用于判断是否可以向对方发送数据,低电平有效,低电平说明本设备可以向对方发送数据
RTS与CTS的连接
设备1的RTS -------- 设备2的CTS
设备1的CTS -------- 设备2的RTS
即交叉连接。
在这样连接后,有三种情况:
- 设备1和设备2都不发消息,此时设备1的RTS和设备2的RTS都为低,表示两设备都可随时接收消息;
- 设备1准备发起通信,或者正忙于其它事务不能处理接收的数据,此时,设备1将拉高自己的RTS,表示本设备现在不能接收数据,由于设备1的RTS连接了设备2的CTS,设备2发现CTS为高后,判断不能向设备1发送数据。这样就实现了设备1发送数据时或忙时,设备2不会发送数据。
- 设备2准备发起通信,或者正忙于其它事务不能处理接收的数据,效果与第二种情况类似。
硬件连接
对于使用流控的RS232通信,设备的CTS如果悬空,可能由于芯片管脚的内部上拉导致持续的高电平,此时该设备将不能对外发送数据。所以对于使用流控的情况下,CTS不应悬空。