UART通信中流控RTS和CTS的理解
一、流控,顾名思义就是流量控制的意思。目的是协调收发双方,使数据不会丢失。 如果UART只有RX、TX两个信号,要流控的话只能是软流控; 如果有RX,TX,CTS,RTS 四个信号,则多半是支持硬流控的UART; RTS (Require ToSend,发送请求) 为输出信号,用于指示本设备准备好可接收数据,低电平有效,低电平说明本设备可以接收数据。 CTS (Clear ToSend,发送允许) 为输入信号,用于判断是否可以向对方发送数据,低电平有效,低电平说明本设备可以向对方发送数据。 二、很多人用了串口很久都不知道这回事,这是因为很多场合确实没有必要。 收发双方波特率固定,并且接受数组足够大,这时不会出现接收方接受数组溢出导致数据丢失的情况,所以,以我的理解,使用流控的主要目的就是在数据量大,有可能出现接受数组溢出的时候,采取的一种协调收发双方的措施。 三、流控设计到RTS和CTS两个口,收发双方都有各自的RTS和CTS,如通信双方A,B。那么A的RTS就与B的CTS相连,A的CTS就与B的RTS相连。 RTS的作用是告诉对方我可以接受数据,是输出口;CTS的作用是根据电平高低控制发送或不发生数据。 如:A与B通信,现在A给B发送数据,当B出现某种情况(可能是接受缓存快要满了)的时候,B的RTS拉低(一般拉低表示有效,但也不一定),A的CTS是与B的RTS相连的