通信基础概念
- 信号: 信息的物理表示(电压、电流、光、无线电波)。
- 传输介质: 导线(单线、双绞线、同轴电缆)、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连接 | 工业现场总线 | 低速传感器, 小外设 | 高速存储器, 显示屏 | 汽车, 工业控制 |
关键优势 | 简单, 全双工 | 距离长, 多点 | 引脚少, 多点寻址 | 速度快, 全双工, 简单 | 可靠, 多主, 抗干扰 |
主要劣势 | 无寻址, 抗扰差 | 半双工, 需软件寻址 | 速度慢, 半双工 | 引脚多, 无多主/仲裁 | 复杂, 数据包小 |
协议选择考量因素
- 速度要求: 需要高速传输?选 SPI。低速传感器?I2C/UART 足够。
- 设备数量: 连接很多设备?I2C/CAN/RS-485 适合。点对点?UART/SPI。
- 距离要求: 长距离?RS-485/CAN。短距离板级?UART/I2C/SPI。
- 抗干扰性: 恶劣环境?CAN/RS-485 (差分)。
- 拓扑结构: 总线型?I2C/CAN/RS-485。点对点或星型?UART/SPI。
- 双工要求: 需要同时收发?SPI/UART (全双工)。单向或轮流收发?I2C/CAN/RS-485 (半双工)。
- 引脚限制: 引脚紧张?首选 I2C (2线), 其次 UART (2/3线)。引脚充足?SPI/CAN。
- 主从关系: 单一主控?I2C/SPI。需要多个设备主动发起通信?CAN。
- 可靠性要求: 极高可靠性?CAN (内置强大错误处理)。一般应用?其他协议。
- 数据量大小: 大块数据?SPI/UART。小数据包?I2C/CAN (尤其CAN限8字节)。
- 成本与复杂度: 低成本简单?UART/I2C。接受复杂和高成本?CAN。
- 处理器/外设支持: 目标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,提高速度、降低功耗、增强功能。