UART串口通讯-串口流控CTS和RTS讲解

内容分享2天前发布
0 2 0

上期我们讲解了UART串口通讯,接下来我们详细再说说CTS和RTS。

一、CTS和RTS的定义

CTS/RTS也叫串口流控,在串口应用中,常常会看到这两个Pin脚。

CTS(Clear To Send)为输出端,用于给对方发送数据;

RTS(Require To Send)为输入端,用于接收对方发过来的数据;

UART串口通讯-串口流控CTS和RTS讲解

二、为什么要用串口流控

两个设备在通讯过程中,由于处理的速度会存在必定的差异,在处理数据时,有些处理慢,有些处理快,那这样就会可能导致数据丢失的情况。

例如,某些时候,我们用到电脑和某些设备通讯,去完成一些操作。 当电脑接受数据的缓冲区已满,此时某设备继续发送来的数据,将不会别接受,所以就会导致数据的丢失。
要解决这个问题,我们就利用流控,也就是说,当接收端数据出来不过来时,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的应用。

————————————————

UART串口通讯-串口流控CTS和RTS讲解

© 版权声明

相关文章

2 条评论

  • 头像
    墨之蝶 读者

    这是高手💪

    无记录
    回复
  • 头像
    红桃 读者

    收藏了,感谢分享

    无记录
    回复