通信协议 - 串口通信
串口通信算得上是单片机中最常用、最基础的一种通讯方式。常用可作为一种调试的手段,与单片机通讯监控数据、发送指令,也可以用作两个单片机之间互相通讯使用。串口通讯的物理层是 RS-232 与 TTL 标准。
协议层
并行和串行
- 并行通信:各个数据位同时传输,速度快但占用引脚资源多。
- 串行通信:数据按位顺序传输,占用引脚资源少但速度相对慢。
单工、半双工和全双工
- 单工:数据只在一个方向上进行传输。
- 半双工:允许数据在两个方向上传输,但是同一时刻,只允许数据在一个方向上传输,相当于方向可切换的单工通信。
- 全双工:允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,要求发送和接收设备都有独立的接发能力。
同步和异步
- 同步通信:带时钟同步信号传输。例如 SPI,IIC 等通信接口。
- 异步通信:不带时钟同步信号。例如 UART,单总线。
USART 和 UART
- UART:通用异步收发器(Universal Asynchronous Receiver/Transmitter)
- USART:通用同步异步收发器(Universal Synchronous/Asynchronous Receiver/Transmitter)
USART 是 UART 的升级版,区别在于多了 CLK 线,在 CLK 没有信号的时候,就表明没有数据传输任务,有 CLK 信号的时候,就是正在传输信号,并且 CLK 提供了时钟同步功能,效验也更精确。
物理层
TTL 标准
TTL 标准请跳转文章 TTL 电平接口 · 通信协议 - 数字逻辑电平
RS-232 标准
RS-232 通信的物理层,是两个设备的 DB9 接口之间通过串口信号线建立起连接,串口信号线中使用 RS-232 电平传输数据信号。因为控制器一般使用的是 TTL 电平,所以需要专用的电平转换芯片才能实现通讯。
TTL 与 RS-232 电平比较:
通讯标准 | 电平标准(发送端) |
---|---|
5V TTL | 逻辑 0 :0~0.5V;逻辑 1 :2.4V-5V |
RS-232 | 逻辑 0 :+3V~+15V;逻辑 1 :-15V~-3V |
理想状态下的对应时序图:
RS-232 协议一般使用 DB9 接口,计算机一般用公头接口(针),调制调解器设备中一般为母头(孔):
接口引脚定义:
引脚符号 | 名称 | 说明 |
---|---|---|
DCD | 载波检测 | Data Carrier Detect,数据载波检测,用于 DTE 告知对方,本机是否收到对方的载波信号 |
RXD | 接收数据 | Receive Data,数据接收信号,即输入 |
TXD | 发送数据 | Transmit Data,数据发送信号,即输出。两个设备之间的 TXD 与 RXD 应交叉相连 |
DTR | 数据终端(DTE)就绪 | Data Terminal Ready,数据终端就绪,用于 DTE 向对方告知本机是否已准备好 |
GND | 信号地 | 地线,两个通讯设备之间的地电位可能不一样,这会影响收发双方的电平信号,所以两个串口设备之间必须要使用地线连接,即共地 |
DSR | 数据设备(DCE)就绪 | Data Set Ready,数据发送就绪,用于 DCE 告知对方本机是否处于待命状态 |
RTS | 请求发送 | Request To Send,请求发送, DTE 请求 DCE 本设备向 DCE 端发送数据 |
CTS | 允许发送 | Clear To Send,允许发送,DCE 回应对方的 RTS 发送请求,告知对方是否可以发送数据 |
RI | 响铃指示 | Ring Indicator,响铃指示,表示 DCE 端与线路已接通 |
DB9 公头与母头的 TX/RX 相反,所以一般对接即可,等效于连接这几条信号线:
串口线中的 RTS、CTS、DSR、DTR 及 DCD 信号,使用逻辑 1
表示信号有效,逻辑 0
表示信号无效。
在实际使用中,有时候只保留 RXD、TXD 与 GND。
参考与致谢
本篇文章受 CC BY-NC-SA 4.0 协议保护,转载请注明出处。