1. 串口硬件流控基础:为什么需要CTS/RTS和DTR/DSR?
我第一次接触串口硬件流控是在调试工业传感器时遇到的。当时设备频繁丢包,排查了半天才发现是缓冲区溢出导致的。后来打开硬件流控功能,问题立刻解决——这就是CTS/RTS和DTR/DSR信号的魔力。
硬件流控的本质是通过物理信号线实现收发双方的节奏同步。想象两个人在嘈杂的车间里对话:当一方说话太快时,另一方会举手示意"慢点说"(对应CTS信号);当准备好记录时又会点头说"继续"(对应RTS信号)。这种实时反馈机制能有效避免数据丢失。
核心信号分工:
- CTS(Clear To Send):接收方发给发送方的"通行证",高电平表示接收缓冲区有空闲
- RTS(Request To Send):发送方询问接收方"我能发数据吗?",高电平表示发送请求
- DTR(Data Terminal Ready):终端设备(如PC)宣告"我已开机"
- DSR(Data Set Ready):外设(如Modem)回应"我也准备好了"
实际项目中,我常用RTS/CTS组合做数据流控,而DTR/DSR更多用于设备状态握手。比如在STM32与4G模块通信时,会先通过DTR/DSR确认模块上电完成,再启用RTS/CTS控制数据传输。
2. 信号电平与电气特性:这些引脚到底怎么工作的?
很多新手会困惑:为什么有些文档说高电平有效,有些说低电平有效?这其实取决于设备厂商的实现。根据RS-232标准:
- 逻辑1(MARK):-3V ~ -15V(实际常见-12V)
- 逻辑0(SPACE):+3V ~ +15V(实际常见+12V)
但在嵌入式系统中,我们更常见的是TTL电平:
- 逻辑1:3.3V/5V</

1381

被折叠的 条评论
为什么被折叠?



