常用的通信协议总结

常用的通信协议总结

H_Haozi Lv2

A 概念相关

1. 并行通信 & 串行通信

  • 并行通信 在同一时刻发送多位数据,优点是速度快,但是传输距离短(长距离信号同步困难,干扰大),通常要多根线
  • 串行通信 逐位顺序传输​数据,优点是布线简单,距离远,差发信号时抗干扰能力强

2. 全双工 & 半双工 & 单工

  • 单工 只能接受或者发送。例如:收音机、遥控器等,一般只有一根线
  • 全双工 在同一时刻只能发送或者接收。例如:对讲机,至少有两根线;
  • 半双工 在同一时刻既能接收又能发送。例如:电话,至少有两根线。

3. 同步通信 & 异步通信

  • 同步通信 需要时钟线同步信号,例如IIC和SPI等,其中USART(通用同步异步串行收发器),支持同步通信和异步通信
  • 异步通信 事先约定好大致的速度(波特率),例如串口(UART)(通用异步收发器)

B 常见硬件通信协议

1. UART协议

通过RX TX 两根线实现异步全双工通信,不需用共享时钟信号,只需用根据事先约定好的数据格式和波特率即可正常工作

关键参数: 波特率 停止位 数据位 校验位

一个完整的数据帧通常由以下部分组成
起始位+数据位+校验位+停止位 起始位为低电平(0),停止位为高电平(1),数据位一般为8位,传输顺序是低位 (LSB) 先发​,校验位(可选)通常为奇校验/偶校验

电平标准:信号在物理介质上的表示

电平标准 逻辑 0 逻辑 1 特点与用途
TTL/CMOS 0V (或 <0.8V) 3.3V 或 5V (>2.4V) 板内短距离通信(<1米),如MCU之间、MCU与传感器模块之间。
RS-232 +3V ~ +15V (正电压) -3V ~ -15V (负电压) 抗干扰能力强,支持较长距离(约15米)。注意:逻辑定义与TTL相反
RS-485 A线电压 > B线电压 (差分, A+ B-) B线电压 > A线电压 (差分, A- B+) 差分信号,抗共模干扰能力极强,支持多点通信长距离(可达1200米),常用于工业环境。

2. IIC协议

1)协议介绍-IIC

I2C(IIC)是一种两线式串行总线,采用“一主多从”的总线结构,每个设备都有唯一的设备地址,用于区分同一总线上的其他设备。

IIC总线由两根双向线组成:

  • SCL(串行时钟线):用于同步数据传输。
  • SDA(串行数据线):用于发送和接收数据。

通信由主设备发起,从设备被动响应。IIC具有低功耗和完善的应答机制,增强了通信的可靠性。


2)IIC的5种传输速率

I2C协议支持以下5种速率模式,不同设备可能支持不同的速率:

  • 标准模式(Standard):100 kbps
  • 快速模式(Fast):400 kbps
  • 快速模式+(Fast-Plus):1 Mbps
  • 高速模式(High-speed):3.4 Mbps
  • 超快模式(Ultra-Fast):5 Mbps(单向传输)

说明:超快模式通常用于LED、LCD等不需要应答的器件,仅进行写数据操作,不需要ACK应答信号。


3)IIC的4种信号

IIC协议的基础信号包括:起始信号、停止信号、应答信号和非应答信号。

  • 起始信号
    当SCL为高电平时,SDA从高电平跳变到低电平,定义为起始信号(START)。

  • 停止信号
    当SCL为高电平时,SDA从低电平跳变到高电平,定义为停止信号(STOP)。

  • 应答信号
    从设备接收到主设备的数据后,在第9个SCL时钟周期内,将SDA拉低,表示“已收到数据”。

  • 非应答信号
    在第9个SCL时钟周期内,SDA保持高电平,表示“未收到数据”。


4)数据有效性

IIC协议规定:

  • 数据采样发生在SCL高电平期间。
  • 除了起始和停止信号外,数据传输期间,SCL为高电平时,SDA必须保持稳定;只有在SCL为低电平时,SDA才允许变化。

5)读写时序

  • 写操作时序
    主设备向从设备的指定寄存器地址写入数据的时序如下:

    1. 主设备发送起始信号:通知总线上的所有设备开始通信。
    2. 主设备发送从设备地址(含读/写位):指定目标从设备,并指明接下来的操作是写入(写位为0)。
    3. 从设备发送应答信号:从设备检测到自己的地址后,拉低SDA线,表示已准备好接收数据。
    4. 主设备发送寄存器地址:指定从设备中目标寄存器的地址。
    5. 从设备发送应答信号:确认接收到寄存器地址。
    6. 主设备发送数据:将需要写入的数据发送到从设备。
    7. 从设备发送应答信号:确认接收到数据。
    8. 主设备发送停止信号:结束通信。

    说明:写操作时序中,主设备始终控制数据的发送,从设备仅负责接收数据并发送应答信号。


  • 读操作时序
    主设备从从设备的指定寄存器地址读取数据的时序如下:

    1. 主设备发送起始信号:通知总线上的所有设备开始通信。
    2. 主设备发送从设备地址(含写位):指定目标从设备,并指明接下来的操作是写入(写位为0)。
    3. 从设备发送应答信号:从设备检测到自己的地址后,拉低SDA线,表示已准备好接收数据。
    4. 主设备发送寄存器地址:指定从设备中目标寄存器的地址。
    5. 从设备发送应答信号:确认接收到寄存器地址。
    6. 主设备发送重复起始信号:重新发起通信,准备读取数据。
    7. 主设备发送从设备地址(含读位):指定目标从设备,并指明接下来的操作是读取(读位为1)。
    8. 从设备发送应答信号:确认接收到读请求。
    9. 从设备发送数据:将目标寄存器中的数据发送到主设备。
    10. 主设备发送非应答信号:表示数据已接收完毕,不再需要更多数据。
    11. 主设备发送停止信号:结束通信。

    说明:读操作时序中,主设备在发送寄存器地址后需要重新发起起始信号(重复起始信号),以切换到读取模式。


6)为什么IIC需要上拉电阻?

IIC总线的SCL和SDA线均为开漏(OD)输出,开漏输出只能输出低电平,不能输出高电平。为了使总线空闲时保持高电平,需要通过上拉电阻将其拉高。

作用

  • 确保总线空闲时为高电平。
  • 提高信号的抗干扰能力。

3. SPI协议

1)协议介绍-SPI

SPI(Serial Peripheral Interface)是一种高速、全双工、同步的通信总线,通常用于主设备(Master)与从设备(Slave)之间的通信。SPI仅需4根线即可实现通信,分别是:

  • MISO:主设备输入,从设备输出。
  • MOSI:主设备输出,从设备输入。
  • SCLK:串行时钟信号,由主设备生成。
  • CS:片选信号,用于选择具体的从设备(低电平有效)。

2)通信原理

  • 主设备通过拉低片选信号(CS)选择目标从设备。
  • 数据通过MOSI和MISO线传输,时钟信号(SCLK)同步数据采样。
  • 数据采样时机由时钟的极性(CPOL)和相位(CPHA)决定,这是SPI的两个主要参数,而IIC固定,由SCL高电平时采样

3)优缺点

优点

  • 高速全双工通信
  • 硬件简单,支持任意数据长度。
  • 支持一主多从

缺点

  • 需要更多引脚(4根线)。
  • 无硬件应答信号,缺乏错误检测机制。
  • 通信距离较短,通常仅支持一个主设备。

4. CAN协议

1)协议介绍

CAN(Controller Area Network)是一种多主方式的串行通信总线,最初由德国 Bosch 公司在 1980 年代末提出,广泛应用于汽车电子、工业自动化等领域。CAN总线具有高实时性、可靠性和抗干扰能力,支持多节点通信。

2)CAN总线结构

  • 闭环结构:两根信号线(CANH 和 CANL)形成回路,总线两端连接 120 欧姆终端电阻,支持高速短距离通信(125 kbps ~ 1 Mbps,最长 40 米)。
  • 开环结构:两根信号线独立,各自串联 2.2 kΩ 电阻,支持低速长距离通信(最高 125 kbps,最长 1000 米)。
  • 差分信号传输:通过 CANH 和 CANL 的电压差传递信息,具有良好的抗干扰能力

3)CAN总线特点

  • 实时性:仲裁机制和帧优先级设计保证低延迟和高实时性。
  • 多主机系统:支持多个节点同时发送和接收数据,无主从之分。
  • 差分信号传输:抗干扰能力强,适用于工业环境。
  • 仲裁机制:通过消息标识符优先级决定发送权,避免冲突。
  • 广播通信:数据帧可被所有节点接收,便于信息共享。
  • 错误检测:内置 CRC 校验和错误处理机制,确保通信可靠性。
  • 灵活性:支持不同波特率,适应多种应用场景。

4)CAN总线帧类型

帧类型 帧用途
数据帧 (Data frame) 节点发送的包含ID和数据的帧,用于发送单元向接收单元传送数据。
遥控帧 (Remote frame) 接收单元向发送单元请求发送具有特定标识符的数据所用的帧,本身不包含数据段。
错误帧 (Error frame) 当节点检测出错误时,用于向其他所有单元通知错误的帧。
过载帧 (Overload frame) 接收单元通知其尚未做好接收准备的帧,用于请求发送节点延迟发送。
帧间隔 (Inter-frame space) 用于将数据帧及遥控帧与前面的帧分离开来的段,包含间歇和总线空闲段。

5)优缺点

优点

  • 高实时性和可靠性。
  • 支持多主机通信,当多主机同时发送消息时,有优先级法则来控制先后发送
  • 抗干扰能力强,适合工业环境。

缺点

  • 通信速率受限于总线长度。
  • 半双工通信,不能同时发送和接收。
  • 无时钟信号,需统一波特率。

CAN协议还有优先级法则,可以参考一文读懂CAN总线协议

4. RS-485 & RS-232 & USB

RS-232、RS-485 和 USB 对比

特性 RS-232 RS-485 USB (Universal Serial Bus)
通信方式 点对点 (Peer-to-Peer) 多点 (Multi-drop),支持总线式拓扑,一台主设备可带多个从设备 主从结构 (Host-Slave) 的树形拓扑,一个主机最多可连接127个设备(需通过集线器扩展)
信号类型 单端信号 (Single-ended) 差分信号 (Differential) 差分信号 (Differential) (D+ 和 D-)
传输距离 短(通常 ≤ 15米 长(可达 1200米,速率降低时更远) 短(通常 ≤ 5米,高速信号衰减限制;可通过有源延长器扩展)
最大速率 较低(通常 115.2 kbps,特定条件下可达更高) 较高(10 Mbps 短距离,距离增加则速率下降) 极高(USB 2.0: 480 Mbps; USB 3.0: 5 Gbps; USB 4: 40 Gbps)
抗干扰能力 弱(单端信号易受共模噪声影响) (差分信号天生抗共模干扰) (差分信号抗干扰;协议层有CRC校验和重传机制)
供电能力 无(仅定义信号,不提供电源) 无(仅定义信号,不提供电源) (提供 5V 电源,USB 2.0最大500mA,USB 3.0最大900mA,USB PD协议可支持更高功率)
典型应用 工业控制、老式调制解调器、串口调试 工业自动化、楼宇自控、长距离数据采集 外设连接(键盘、鼠标、打印机)、大容量存储(U盘、移动硬盘)、高速数据采集
成本与复杂度 (硬件简单,协议简单) (需终端电阻,协议简单) (协议复杂,需专用控制器和驱动)

5. TCP & UDP & HTTP

对比维度 TCP(传输控制协议) UDP(用户数据报协议)
连接方式 面向连接(三次握手,四次挥手 无连接(直接发送数据,无需建立或释放连接)
可靠性 可靠(保证数据不丢失、不重复、按序到达) 不可靠(可能丢包、乱序,需应用层处理)
传输模式 字节流(将数据视为连续的字节序列) 数据报(以独立数据包为单位传输,边界清晰)
拥塞控制 支持(通过慢启动、拥塞避免等算法调节发送速率) 不支持(无论网络状态如何,持续按原速率发送)
流量控制 支持(滑动窗口机制,避免接收方缓冲区溢出) 不支持(可能导致接收方缓冲区溢出)
头部开销 较大(固定 20 字节头部,可选扩展字段) 极小(固定 8 字节头部,无扩展字段)
传输效率 较低(连接建立、确认重传等过程增加延迟) 较高(无连接建立和确认机制,实时性强)
适用场景 文件传输、网页加载、登录认证等对可靠性要求高的场景 视频直播、在线游戏、物联网等对实时性要求高的场景
端口占用 单端口可建立多个连接(基于四元组:源 IP/端口、目的 IP/端口) 单端口对应一个连接(数据报直接绑定端口)
错误处理 自动重传(超时重传、快速重传机制) 不处理(丢包需应用层自行解决)

二者最大的区别就是:TCP可靠,UDP实时


TCP(传输控制协议)和 HTTP(超文本传输协议),二者分别位于传输层应用层HTTP协议依赖于TCP协议,(值得注意的是,传统的HTTP(/1.1和/2)基于TCP,但也存在一些局限性,如队头阻塞。新一代的HTTP/3做出了重大改变,它不再使用TCP作为传输层协议,而是基于QUIC协议(运行在UDP之上)​,旨在进一步提升传输效率和降低延迟)


留言

有问题请指出,你可以选择以下方式:

  1. 在下方评论区留言
  2. 邮箱留言
  • Title: 常用的通信协议总结
  • Author: H_Haozi
  • Created at : 2025-05-03 11:22:45
  • Updated at : 2025-09-23 15:23:54
  • Link: https://redefine.ohevan.com/2025/05/03/embedded_Communication Protocol/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments