串口接收方CPU拿取数据的速度赶不上串口数据的通信速度时,会导致丢数据的现象。使用串口流控制功能可以解决以上问题
1.电路连接
如下图1所示,串口1的CTS和串口2的RTS连接,串口1的RTS和串口2的CTS连接
图1
2.RTS信号
RTS信号是输出信号。当接收数据寄存器满了的时候,RTS信号释放掉(高电平),表示不能再接收新数据了;总线Idle空闲期间CPU完成读取,接收数据寄存器不再是满状态的时候,RTS信号重新启动(低电平),表示可以接收新数据
图2
3.CTS信号
CTS信号是输入信号。当检测到CTS信号启动的时候(拉低),存储在发送数据寄存器中的数据将会被发送出去;当检测到CTS信号释放的时候(高电平),存储在发送数据寄存器中的数据不会被发送出去,直到检测到CTS信号重新启动的时候(拉低),才会恢复发送动作
4.分析:当接收方的接收数据寄存器满的时候,接收方将自己的RTS信号释放掉(高电平),而该信号接到了发送方的CTS信号,此时发送方检测到CTS信号释放(高电平),存储在发送数据寄存器中的数据不会被发送出去;等接收方的CPU从接收数据寄存器拿走数据后,接收数据寄存器不再是满的状态,于是将RTS信号重新启动(低电平),此时发送方检测到CTS信号重新启动(拉低),于是恢复发送动作,发送存储在发送数据寄存器的数据