上期我们讲解了UART串口通讯,接下来我们详细再说说CTS和RTS。
一、CTS和RTS的定义
CTS/RTS也叫串口流控,在串口应用中,常常会看到这两个Pin脚。
CTS(Clear To Send)为输出端,用于给对方发送数据;
RTS(Require To Send)为输入端,用于接收对方发过来的数据;

二、为什么要用串口流控
两个设备在通讯过程中,由于处理的速度会存在必定的差异,在处理数据时,有些处理慢,有些处理快,那这样就会可能导致数据丢失的情况。
例如,某些时候,我们用到电脑和某些设备通讯,去完成一些操作。 当电脑接受数据的缓冲区已满,此时某设备继续发送来的数据,将不会别接受,所以就会导致数据的丢失。
要解决这个问题,我们就利用流控,也就是说,当接收端数据出来不过来时,CTS就会发出“不再接收”的信号给到外部设备,当外部设备的RTS收到停止指令后,就会停止发送。直到收到“可以继续发送”的信号再发送数据。因此流控制可以控制数据传输的进程,实现收发双方的速度匹配,防止数据的丢失。
流控制包括硬件流控制(RTS/CTS、DRT/CTS)和软件流控制XON/XOFF继续/停止。
三、硬件连接方式
芯片1的CTS连接芯片2的RTS,芯片1的RTS连接芯片2的CTS,当然,他们直接还要用GND的连接。
四、串口流控制的使用
1. 硬件流控:硬件流控分为CTS/RTS流控制和DTR/DSR流控制,DTR/DSR指的是数据终端就绪/数据设置就绪,我们很少用到,用得多的是CTS/RTS。
以一个对话来说明:
CTS: 在吗?我想向你发送数据
RTS:在的,你发过来吧,我已经做好接收的准备
经过了一段时间……
RTS:我的能力有限,你可以停止向我发送数据吗?
CTS:好的,我这就停止
2. 软件流控:软件流控,一般用于串口只接TX、RX,没有CTS和RTS的应用。
————————————————

© 版权声明
文章版权归作者所有,未经允许请勿转载。



这是高手💪
收藏了,感谢分享