跳转至

通信协议 - 串口通信

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

参考与致谢

原文地址:https://wiki-power.com/
本篇文章受 CC BY-NC-SA 4.0 协议保护,转载请注明出处。