RS232流控线的一点研究,串口流控线
今天在家没事干,打开串口助手,不小心看到了流控线,

突然想起来,一些单片机开发版常用流控线去控制单片机自动复位(尤其是51单片机,下载程序需要冷复位)

可以看到,用到了RTS和DTR引脚,使单片机断电后重新自动上电,

在STM32的下载中,可以用流控线使STM32进入不同的BOOT模式

那么这DTR和RTS究竟是什么呢?我们去查查DB9的定义吧~

1、DCD (Data Carrier Detect): 载波检测。此脚由Modem控制,通知计算机其处于在线状态,即Modem检测到拨号音,处于在线状态。
2、RXD (Receive(RX) Data): 数据输入。此脚由Modem控制。
3、TXD (Transmit(TX) Data): 数据输出。此脚由计算机控制。
4、DTR (Data Terminal Ready): 数据终端就绪。此脚由计算机控制,通知Modem可以进行数据传输,计算机已经准备好。
5、GND (Ground):逻辑地。
6、DSR (Data Set Ready): 数据设置就绪。此脚由Modem控制,通知计算机Modem已经准备好,可以进行数据通讯了。
7、RTS (Request to Send): 请求发送。此脚由计算机控制,通知Modem马上传送数据至计算机;否则,Modem将收到的数据暂时放入缓冲区中。
8、CTS (Clear to Send): 清除发送。此脚由Modem控制,通知计算机将欲传的数据送至Modem。
9、RI (Ring Indicator): 铃声指示。此脚由Modem控制,通知计算机有呼叫进来,是否接听呼叫由计算机决定。
可以看到,一共9根线,可以由计算机控制的只有3根,其中3脚是用来发数据的,只有DTR和RTS可以被控制了,所以开发人员就设计出各种各样的电路,用这两个脚去实现想要的功能。
那么绿色的脚是用来干嘛的呢?这其实是早期使用Modem通信的时候,控制计算机在合适的时机与Modem发送数据的针脚(所以叫流控),发展到现在,这些线也早已经没了原来的功能。
用万用表的二极管档就可以触发这些信号,这里要注意的是,我们平常说的 RS232 是负逻辑电平(-12 ~ -3V: 高电平;3 ~ 12V: 低电平)指的是 RX 和 TX 引脚的电平,也就是说:
在 TXD 和 RXD 上:逻辑 1 (MARK) = -12 ~ -3V;逻辑 0 (SPACE) = 3 ~ 12V。在 RTS、CTS、DSR、DTR 和 DCD 等控制线上:信号有效 (接通,ON 状态,正电压) = 3~15V;信号无效 (断开,OFF 状态,负电压) = -3~-15V。
可以看到控制线和信号线相反,这里我查了好久才找到原因。

最后附一段Modem的工作过程吧:
(1)初始状态时,RTS、CTS持续为ON,通过通信程序设置和监测RS232引线状态。在应答模式下,计算机中的软件一直监视着振铃指示(RI),等待RI发出ON信号。
(2)计算机上的通信程序在收到RI信号后,就开始通过振铃指示器ON/OFF变换的次数对振铃进行计数,当到达程设定的振铃次数时,通信程序就发生数据终端就绪(DTR)信号,强迫调制解调器进入摘机状态。
(3)等待2s后(FCC规定),调制解调器自动开始发送其应答载波。这时调制解调器发出调制解调器就绪(DSR)信号通知计算机:它已完成所有的准备工作并等待载波信号。
(4)在持续发出DTR信号期间,计算机软件监测DSR信号。当DSR信号变为ON时,计算机就知道调制解调器已准备数据链路的连接,计算机立即开始监测数据载波监测(CD)信号,以证实数据链路的存在。
(5)当源调制解调器的载波出现于电话线上时,应答调制解调器就发出CD信号。
(6)通过发送数据线(TD)和接收数据线(RD),开始全双工通信。在数据链路传输期间,计算机通过监测CD来确保数据链路的存在。
(7)通信任务一旦完成,计算机就禁止DTR,调制解调器用除去其载波音调、禁止CD和DSR来响应。随着链路被拆除,调制解调器就会返回初始状态。