一、SPI(Serial Peripheral Interface,串行外设接口)
1. 基本特性
- 开发背景:由摩托罗拉(Motorola)于1980年代推出,用于短距离、高速率的设备间通信。
- 物理层:
- 4根信号线:
- SCK(Serial Clock):时钟线(主机提供);
- MOSI(Master Out Slave In):主机输出、从机输入;
- MISO(Master In Slave Out):主机输入、从机输出;
- CS(Chip Select):片选线(低电平有效,主机控制,每个从设备需独立CS)。
- 全双工(Full-Duplex)、同步(Synchronous) 通信,主机主导时钟和数据方向。
- 4根信号线:
2. 通信机制
- 主从架构:1个主机(如MCU)可连接多个从设备,通过CS线独立选中从设备。
- 数据传输:
- 主机通过SCK提供时钟,每个时钟周期传输1位数据,高位优先(MSB)。
- 主机和从设备同时发送/接收数据(全双工),但从设备需在CS有效时才响应。
- 无应答机制:主机不确认从设备是否收到数据,可靠性依赖硬件设计。
3. 优点
- 高速率:可达数十Mbps(如32MHz),适合高速数据传输(如传感器、Flash存储)。
- 简单灵活:无需复杂协议,硬件实现成本低,适合点对点或一主多从场景。
- 全双工:支持同时收发数据,效率高。
4. 缺点
- 多从设备支持差:每个从设备需独立CS线,引脚占用多,不适合大量设备组网。
- 无寻址功能:依赖硬件CS选择从设备,扩展性有限。
- 无错误校验:仅靠硬件时序保证,缺乏数据纠错机制。
5. 典型应用
- 外设通信:EEPROM、ADC、DAC、显示驱动(如OLED)、传感器(如陀螺仪)。
- 短距离高速场景:存储芯片(如QSPI Flash)、高速传感器数据采集。
二、UART(Universal Asynchronous Receiver-Transmitter,通用异步收发器)
1. 基本特性
- 开发背景:最古老的串行通信协议之一,用于点对点异步通信。
- 物理层:
- 2根信号线:
- TX(Transmit):发送线(主机→从机);
- RX(Receive):接收线(从机→主机)。
- 异步(Asynchronous):无时钟线,依赖波特率(Baud Rate)同步,支持全双工。
- 2根信号线:
2. 通信机制
- 数据格式:
- 以“帧”为单位传输,每帧包含:起始位(1位低电平)、数据位(5-8位,低位优先)、校验位(可选,奇偶校验)、停止位(1/1.5/2位高电平)。
- 波特率:需双方预先约定(如9600、115200),误差需控制在一定范围内(通常≤5%)。
- 流控制(可选):通过RTS/CTS线实现硬件流控制,或通过XON/XOFF字符实现软件流控制。
3. 优点
- 引脚简单:仅需TX/RX,适合低成本、点对点通信(如MCU与PC)。
- 长距离支持:配合RS-232/RS-485等电平转换,可传输数十米至千米。
- 灵活性高:数据位、校验位、停止位可配置,适应不同设备需求。
4. 缺点
- 异步同步依赖波特率:若双方波特率不一致,易导致数据错位。
- 无硬件寻址:仅支持点对点,无法直接实现多设备组网。
- 速率受限:通常低于1Mbps(RS-232),高速场景需更复杂的电平转换(如RS-422)。
- 无应答机制:需上层协议(如Modbus)实现可靠性保证。
5. 典型应用
- 设备调试:MCU通过UART连接PC串口(如USB转TTL),输出日志。
- 工业控制:配合RS-485实现多设备总线(需地址协议,如Modbus RTU)。
- 低速外设:GPS模块、蓝牙模块(AT指令通信)。
三、IIC(I²C,Inter-Integrated Circuit,集成电路间通信)
1. 基本特性
- 开发背景:由飞利浦(Philips)于1982年推出,用于近距离、多设备低速通信。
- 物理层:
- 2根信号线:
- SDA(Serial Data):数据线(双向,开漏输出,需外接上拉电阻);
- SCL(Serial Clock):时钟线(主机提供,开漏输出,需外接上拉电阻)。
- 半双工(Half-Duplex)、同步(Synchronous),支持多主多从(需总线仲裁)。
- 2根信号线:
2. 通信机制
- 寻址方式:
- 每个设备有唯一7位或10位地址(由硬件或软件配置),主机通过发送地址帧选中从设备。
- 数据传输:
- 起始信号(SCL高电平时SDA下降沿)→ 发送从设备地址(7位)+ 读写位(1位)→ 应答位(ACK,从设备拉低SDA)→ 数据帧(8位)→ 停止信号(SCL高电平时SDA上升沿)。
- 总线仲裁:多主机同时发送时,通过SDA电平竞争决定主导权,避免冲突。
3. 优点
- 引脚极少:仅2根线,支持挂载多个设备(理论上127个,受上拉电阻和总线电容限制)。
- 多设备支持:通过地址寻址,无需独立片选线,适合组建简单设备网络。
- 可靠的应答机制:从设备通过ACK确认接收,保证数据可靠性。
4. 缺点
- 速率限制:
- 标准模式100kbps,快速模式400kbps,高速模式3.4Mbps,低于SPI。
- 总线时序复杂:严格的起始/停止信号、应答机制,硬件实现需注意上拉电阻和总线电容匹配。
- 半双工:同一时刻只能单向传输,效率低于SPI。
- 主从限制:多主模式需仲裁,增加软件复杂度。
5. 典型应用
- 低速传感器:温度传感器(如DS18B20)、湿度传感器(如SHT30)、加速度计(如MPU6050)。
- 外设控制:EEPROM(如24C02)、实时时钟(RTC)、LED驱动芯片。
- 多设备组网:主板上的外设(如声卡、传感器模块)。
四、三协议对比表格
特性 | SPI | UART | IIC |
---|---|---|---|
通信方式 | 同步、全双工 | 异步、全双工 | 同步、半双工 |
信号线数量 | 4根(SCK、MOSI、MISO、CS) | 2根(TX、RX,可选RTS/CTS) | 2根(SDA、SCL,需上拉电阻) |
寻址方式 | 硬件片选(CS) | 无(点对点),依赖上层协议 | 7/10位地址(软件寻址) |
多设备支持 | 一主多从(需独立CS) | 点对点(需总线协议如RS-485扩展) | 多主多从(总线仲裁) |
速率 | 高(数十Mbps) | 低(通常<1Mbps,RS-485可更高) | 中(标准模式100kbps,高速3.4Mbps) |
应答机制 | 无 | 无(需上层协议) | 有(ACK/NACK) |
硬件复杂度 | 中等(多CS引脚) | 低(简单引脚) | 中等(需上拉电阻、严格时序) |
典型应用 | 高速外设(Flash、传感器) | 点对点通信(串口、Modbus RTU) | 低速多设备(传感器、EEPROM) |
优点 | 高速、简单、全双工 | 引脚少、长距离、灵活 | 引脚极少、多设备寻址、可靠应答 |
缺点 | 多从设备引脚多、无寻址 | 异步依赖波特率、无硬件寻址 | 半双工、时序严格、速率受限 |
五、选择建议
- 高速点对点:选 SPI(如传感器实时数据传输)。
- 简单点对点/长距离:选 UART(如设备调试、工业总线)。
- 多设备低速组网:选 IIC(如主板内多个传感器通信)。
根据具体场景的 引脚数量、速率需求、设备规模、可靠性要求 综合选择,必要时可结合上层协议(如UART+Modbus、IIC+扩展地址)优化功能。