嵌入式系统中常用通信协议

发布于:2025-08-02 ⋅ 阅读:(15) ⋅ 点赞:(0)

通信基础概念

  • 信号: 信息的物理表示(电压、电流、光、无线电波)。
  • 传输介质: 导线(单线、双绞线、同轴电缆)、PCB走线、光纤、空气(无线)。
  • 数据帧/包: 结构化传输的基本单位(起始位、地址、数据、控制信息、校验位、停止位)。
  • 波特率 (Baud Rate) : 单位时间内传输的信号变化次数
  • 比特率 (Bit Rate): 单位时间内传输的有效数据比特数(通常等于波特率)。
  • 错误检测: 奇偶校验、校验和 (Checksum)、循环冗余校验 (CRC)。
  • 协议栈: 通信功能的层次化抽象(物理层、数据链路层、应用层等 - OSI模型简化)。

同步 vs. 异步:

  • 同步:通信双方使用共享的时钟信号来协调数据传输(如 SPI, I2C)。
  • 异步:通信双方使用各自的时钟,依靠起始位、停止位和波特率约定来同步(如 UART)。

串行 vs. 并行:

  • 串行:数据位在单条线路上一位接一位地传输(大多数嵌入式协议)。
  • 并行:数据位在多条线路上同时传输(速度快但线多,现代嵌入式较少用)。

单工、半双工、全双工:

  • 单工:数据只能单向传输(如广播)。
  • 半双工:数据可以双向传输,但不能同时(如 I2C, CAN)。
  • 全双工:数据可以同时双向传输(如 SPI, UART)。

主从模式 (Master/Slave) vs. 对等模式 (Peer-to-Peer):

  • 主从:一个主设备控制通信,发起请求;一个或多个从设备响应。
  • 对等:设备之间可以平等地发起通信(如 CAN)。

1. UART / RS-232/RS-485

  • UART:Universal Asynchronous Receiver/Transmitter)
  • 核心特点: 异步、串行、全双工(通常)、点对点(标准UART)。
  • 优点: 简单、成本极低(硬件普遍集成)、全双工、易于实现和调试。
  • 缺点: 无寻址(不适合多设备),无硬件冲突检测(需软件处理),抗干扰能力差(TTL/RS-232),距离有限(RS-485 可较长)。
  • 典型应用: 调试输出 (Console), 连接 PC 和微控制器, 与 GPS/GPRS 模块通信, 两个微控制器间简单通信。RS-485 用于工业环境较长距离通信(多节点)。
  • 关键概念: 波特率、帧格式 (数据位/停止位/奇偶校验)、流控 (RTS/CTS - 可选)。

物理层:

  • 电平标准:TTL (0-3.3V/5V), RS-232 (±3V to ±15V), RS-485 (差分 ±1.5V to ±6V)。
  • 接线:最少2线(TX, RX),加上 GND。RS-232 常用 DB9 连接器。RS-485 需要差分线 (A+, 😎。

数据链路层:

  • 帧结构:起始位 (1 bit, Low) + 数据位 (5-9 bits) + 可选的奇偶校验位 (1 bit) + 停止位 (1, 1.5, 2 bits, High)。
  • 无寻址机制:物理点对点连接隐含了通信对象。
  • 无时钟线:依靠约定的波特率、起始位和停止位同步。
  • 错误检测:奇偶校验(可选)。

2. I2C / TWI

  • I2C:Inter-Integrated Circuit
  • TWI :Two-Wire Interface
  • 核心特点: 同步、串行、半双工、多主多从(通常单主)、基于地址。
  • 优点: 引脚数极少(2线),支持多设备,支持多主(有仲裁),有硬件应答机制,速度适中,广泛支持。
  • 缺点: 半双工(同一时刻只能单向),速度比 SPI 慢,总线电容和上拉电阻限制了最高速度和设备数量,开漏结构在高负载时上升沿可能较慢。
  • 典型应用: 连接低速外设:传感器(温度、湿度、加速度计)、EEPROM、RTC、LCD 控制器、I/O 扩展器、ADC/DAC。
  • 关键概念: 7/10位地址、ACK/NACK、起始/停止/重复起始条件、时钟拉伸、开漏/上拉。

物理层:

  • 电平标准:通常是微控制器的逻辑电平(3.3V/5V)。
  • 接线:仅需两条线
    • SDA (Serial Data):双向数据线。
    • SCL (Serial Clock):由主设备产生的时钟线。
  • 开漏/集电极输出:需要上拉电阻(Rp)将总线拉高。设备只能拉低总线(线与逻辑)。

数据链路层:

  • 帧结构:

    • 起始条件 (Start Condition):SCL 高时 SDA 从高变低。
    • 地址帧:7位或10位从设备地址 + 1位读写方向位 (R/W#)。
    • 数据帧:8位数据 + 1位应答位 (ACK/NACK)。ACK 由接收方在数据后拉低 SDA。
    • 停止条件 (Stop Condition):SCL 高时 SDA 从低变高。
    • 重复起始条件 (Repeated Start):在不释放总线的情况下发起新传输。
  • 寻址:每个从设备有唯一地址(部分地址可配置)。

  • 仲裁:多个主设备尝试同时启动传输时,通过线与逻辑仲裁(谁先发0谁赢)。

  • 时钟拉伸:从设备可以在处理数据时拉低 SCL 暂停主设备时钟(低速从设备特性)。

  • 速度模式:标准 (100 kbps), 快速 (400 kbps), 快速模式+ (1 Mbps), 高速 (3.4 Mbps)。

3. SPI

  • SPI :Serial Peripheral Interface

  • 核心特点: 同步、串行、全双工(通常)、主从模式、基于片选。

  • 优点: 速度高(远快于 I2C/UART),全双工,协议简单灵活(无复杂帧结构),驱动能力强(推挽)。

  • 缺点: 引脚占用多(每增加一个从设备需多一条 SS 线),不支持多主,无硬件错误检测/应答,无总线仲裁。

  • 典型应用: 连接高速外设:SD卡、Flash存储器、显示屏(TFT, OLED)、高速ADC/DAC、以太网/WiFi模块、传感器(需要高速读取时)。

  • 关键概念: CPOL/CPHA (Mode 0-3)、片选 (SS/CS)、全双工、主从时钟 (SCLK)。

物理层:

  • 电平标准:通常是微控制器的逻辑电平(3.3V/5V)。
  • 接线:至少4条线(全双工):
    • SCLK (Serial Clock):由主设备产生的时钟线。
    • MOSI (Master Out Slave In):主设备输出,从设备输入。
    • MISO (Master In Slave Out):主设备输入,从设备输出。
    • SS/CS (Slave Select / Chip Select):主设备控制,选择激活哪个从设备(每个从设备需要独立的 SS 线)。
  • 推挽输出:驱动能力强,速度高。

数据链路层:

  • 帧结构:无严格定义的帧(起始/停止)。数据传输在时钟边沿发生。
  • 寻址:通过硬件片选线 (SS/CS) 选择从设备。无地址字节。
  • 时钟相位 (CPHA) 和极性 (CPOL):定义数据在时钟的哪个边沿采样和输出。有4种组合模式 (Mode 0-3)。
  • 数据传输:主设备在 SCLK 控制下,通过 MOSI 发送数据位,同时通过 MISO 接收从设备发来的数据位(全双工)。
  • 无硬件应答:需要软件或协议层确认。

4. CAN

  • CAN :Controller Area Network
  • 核心特点: 异步、串行、多主、对等、基于消息ID、差分信号、高可靠性。
  • 优点: 极高的抗干扰能力(差分信号),可靠的多主对等通信(仲裁机制),强大的错误检测和处理能力,实时性好(基于优先级),传输距离较长(可达数千米@低速率)。
  • 缺点: 协议复杂(硬件和软件),成本相对较高(需要专用 CAN 控制器/收发器),数据负载短(最大8字节)。
  • 典型应用: 汽车电子网络 (ECU 通信)、工业自动化 (PLC 网络)、医疗设备、船舶、航空航天等需要高可靠性的分布式系统。
  • 关键概念: 差分信号、消息 ID/优先级、非破坏性仲裁、错误帧、错误计数器、总线关闭、终端电阻。

物理层:

  • 电平标准:差分信号 (CAN_H, CAN_L), 显性电平 (Differential Voltage ≈ 2V) 代表逻辑0, 隐性电平 (≈ 0V) 代表逻辑1。抗干扰能力强。
  • 接线:两条双绞线 (CAN_H, CAN_L), 终端电阻 (120Ω) 必不可少。

数据链路层:

  • 帧结构:非常健壮。
    • 仲裁域:包含消息 ID (11位标准帧 / 29位扩展帧) 和 RTR (远程传输请求) 位。ID 决定消息优先级(值越小优先级越高)。
    • 控制域:数据长度码 (DLC)。
    • 数据域:0-8 字节数据。
    • CRC域:强大的15位CRC校验。
    • 应答域:接收节点确认。
    • 帧结束域。
  • 寻址:基于消息 ID (广播性质),接收节点根据 ID 过滤消息。无物理地址。
  • 非破坏性位仲裁:多个节点同时发送时,优先级高的消息(ID值小)赢得总线访问权,低优先级节点自动退出发送并在总线空闲时重试。
  • 错误检测与处理:5种错误检测机制(位错误、填充错误、CRC错误、格式错误、应答错误)和复杂的错误限制与节点隔离机制。高可靠性核心。

协议对比总结

特性 UART (TTL/RS-232) UART (RS-485) I2C (TWI) SPI CAN
同步/异步 异步 异步 同步 同步 异步
串行/并行 串行 串行 串行 串行 串行
双工方式 全双工 半双工 (通常) 半双工 全双工 (通常) 半双工
主从/对等 点对点 (无主从) 多节点 (主/从) 主从 (多从) 主从 (多从) 多主/对等
寻址方式 无 (物理连接) 无 (需软件) 7/10位地址 硬件片选 (SS/CS) 消息 ID
时钟线 SCL SCLK
数据线数量 2 (TX, RX) + GND 2 (A+,“B-”) + GND 2 (SDA, SCL) 3/4+ (SCLK, MOSI, MISO, SS/CS) 2 (CAN_H, CAN_L)
总线拓扑 点对点 多点 (总线型) 多点 (总线型) 点对点 / 星型 多点 (总线型)
最大速度 中等 (通常 < 1Mbps) 中等 (通常 < 10Mbps) 快 (标准100k, 高速3.4M) 很快 (可达 100M+ bps) 中等 (通常 125k-1Mbps)
抗干扰能力 差 (TTL)/中 (232) 强 (差分) 中 (开漏上拉) 中 (推挽) 极强 (差分+协议)
传输距离 短 (TTL)/中 (232) 长 (千米级) 短 (板级/设备级) 短 (板级/设备级) 长 (千米级@低速)
设备数量限制 2 32/128 (驱动器负载) 受总线电容/地址限制 受片选线数量限制 理论上很多 (110+)
协议复杂度 简单 简单 (物理层不同) 中等 简单 复杂
成本 极低 中 (引脚多) 中高
典型应用 调试, PC连接 工业现场总线 低速传感器, 小外设 高速存储器, 显示屏 汽车, 工业控制
关键优势 简单, 全双工 距离长, 多点 引脚少, 多点寻址 速度快, 全双工, 简单 可靠, 多主, 抗干扰
主要劣势 无寻址, 抗扰差 半双工, 需软件寻址 速度慢, 半双工 引脚多, 无多主/仲裁 复杂, 数据包小

协议选择考量因素

  1. 速度要求: 需要高速传输?选 SPI。低速传感器?I2C/UART 足够。
  2. 设备数量: 连接很多设备?I2C/CAN/RS-485 适合。点对点?UART/SPI。
  3. 距离要求: 长距离?RS-485/CAN。短距离板级?UART/I2C/SPI。
  4. 抗干扰性: 恶劣环境?CAN/RS-485 (差分)。
  5. 拓扑结构: 总线型?I2C/CAN/RS-485。点对点或星型?UART/SPI。
  6. 双工要求: 需要同时收发?SPI/UART (全双工)。单向或轮流收发?I2C/CAN/RS-485 (半双工)。
  7. 引脚限制: 引脚紧张?首选 I2C (2线), 其次 UART (2/3线)。引脚充足?SPI/CAN。
  8. 主从关系: 单一主控?I2C/SPI。需要多个设备主动发起通信?CAN。
  9. 可靠性要求: 极高可靠性?CAN (内置强大错误处理)。一般应用?其他协议。
  10. 数据量大小: 大块数据?SPI/UART。小数据包?I2C/CAN (尤其CAN限8字节)。
  11. 成本与复杂度: 低成本简单?UART/I2C。接受复杂和高成本?CAN。
  12. 处理器/外设支持: 目标MCU硬件是否原生支持该协议?外设本身支持哪些协议?

其它协议

  • 1-Wire: 单总线协议(如 DS18B20 温度传感器),成本极低,速度慢。
  • USB (Device/Host): 复杂但应用广泛,用于连接PC、外设(HID, Mass Storage, CDC)。
  • Ethernet: 用于网络连接(TCP/IP, UDP)。
  • Bluetooth/BLE, Wi-Fi: 无线通信协议。
  • Modbus: 建立在串行链路(RS-232/485)或 TCP/IP 之上的应用层协议,工业标准。
  • I3C: I2C 的演进版本,目标取代 I2C,提高速度、降低功耗、增强功能。

网站公告

今日签到

点亮在社区的每一天
去签到