Skip to main content

通信协议 - 串口通信

串口通信算得上是单片机中最常用、最基础的一种通讯方式。常用可作为一种调试的手段,与单片机通讯监控数据、发送指令,也可以用作两个单片机之间互相通讯使用。串口通讯的物理层是 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 协议保护,转载请注明出处。