UART,IIC,SPI串行通信优缺点
UART(通用异步收发传输器)
工作模式:UART采用异步串行通信模式,无需共享时钟信号,通过起始位(1位低电平)、数据位(5-9位,默认8位,低位先行)、可选校验位(奇/偶/无)、停止位(1/1.5/2位高电平)组成固定帧格式。收发双方需预先配置相同波特率(如9600、115200 bps),以实现数据同步。支持全双工通信(独立TX、RX线),数据按帧传输,每帧包含完整的起始/停止位,便于接收端识别数据边界。
优点:
- 引脚需求少:仅需2根信号线(TX、RX),适合低成本、小尺寸设备(如单片机与PC通信)。
- 长距离支持:配合RS-232/RS-485电平转换芯片,传输距离可达数十米至千米(RS-485最长1200米)。
- 灵活性高:波特率、数据位、校验位等参数可配置,适配不同设备(如GPS模块、蓝牙模块的AT指令通信)。
- 广泛兼容性:几乎所有MCU均集成UART接口,文档齐全,易于调试(如通过串口输出程序日志)。
缺点:
- 速率受限:异步传输需预留起始/停止位,有效数据密度低,最高波特率通常≤1Mbps(远低于SPI)。
- 无硬件寻址:仅支持点对点通信,多设备组网需借助总线协议(如Modbus RTU),增加了软件复杂度。
- 无错误恢复机制:依赖奇偶校验等简单校验,无法自动纠正数据错误,需上层协议(如TCP/IP)补充。
- 同步依赖波特率:若收发双方波特率误差超过10%,会导致数据错位,需严格校准(如使用高精度晶振)。
IIC(Inter-Integrated Circuit,集成电路间通信)
工作模式:IIC采用同步半双工通信模式,通过串行时钟线(SCL,主机输出)、串行数据线(SDA,双向)传输数据。所有设备连接到同一总线,主机通过7位/10位从机地址识别目标设备,支持多主多从架构(多主机需通过仲裁机制避免冲突)。数据传输以起始条件(SCL高电平、SDA下降沿)开始,以停止条件(SCL高电平、SDA上升沿)结束,每传输1字节需接收ACK/NACK应答(从机拉低SDA表示ACK)。
优点:
- 引脚极少:仅需2根信号线(SCL、SDA),适合多设备组网(理论上最多127个从设备,受总线电容≤400pF限制)。
- 多设备支持:通过地址寻址,无需独立片选线,简化了硬件设计(如传感器网络、存储器组网)。
- 可靠应答:每传输1字节需接收ACK,确保数据被正确接收,提高了通信可靠性。
- 同步传输:由主机提供时钟,收发双方严格同步,数据传输稳定,不易受干扰。
- 速度可调:支持多种速率(标准模式100kbps、快速模式400kbps、高速模式3.4Mbps),满足不同场景需求(如传感器数据采集、EEPROM读写)。
缺点:
- 速率有限:最高速率3.4Mbps,远低于SPI,不适合高速数据传输(如大容量存储器、视频传输)。
- 总线限制:总线电容≤400pF,传输距离≤1米(长距离需使用中继器或降低速率),不适合远距离通信。
- 半双工通信:同一时刻只能单向传输,效率低于SPI(SPI支持全双工)。
- 冲突问题:多主机同时发送数据时需通过仲裁解决,增加了软件复杂度(如主机需检测SDA线电平,避免冲突)。
- 时序严格:起始/停止条件的时序(如SCL高电平时SDA变化)要求严格,硬件实现需注意上拉电阻(通常4.7KΩ)和信号完整性(如避免信号反射)。
SPI(Serial Peripheral Interface,串行外设接口)
工作模式:SPI采用同步全双工通信模式,通过串行时钟线(SCK,主机输出)、主机输出/从机输入线(MOSI)、主机输入/从机输出线(MISO)、片选线(CS,主机输出,低电平有效)传输数据。主机通过CS选中从机,SCK同步数据传输,MOSI和MISO同时传输数据(全双工)。数据传输以8位/字节为单位,高位先行(MSB first),时钟极性(CPOL)和相位(CPHA)可配置(4种模式,如CPOL=0/CPHA=0为模式0,常见于多数设备)。
优点:
- 高速传输:速率可达数十Mbps(如STM32的SPI速率可达50MHz),适合高速外设(如Flash存储器、OLED屏幕、传感器)。
- 全双工通信:MOSI和MISO同时传输数据,效率高(如同时发送命令和接收数据)。
- 简单灵活:协议开销小(无起始/停止位、无ACK),硬件实现容易(仅需4根线),适合点对点或多从机场景(多从机需多个CS线)。
- 强同步性:由主机提供时钟,收发双方严格同步,数据传输稳定,不易受干扰。
- 多从机支持:通过多个CS线可连接多个从机(如单片机连接多个传感器),适合多设备组网(如工业现场总线)。
缺点:
- 引脚较多:需4根信号线(SCK、MOSI、MISO、CS),多从机场景需更多CS线(如n个从机需n+3根线),不适合引脚有限的MCU(如8位单片机)。
- 无寻址功能:依赖硬件CS选择从机,扩展性有限(如无法像IIC那样通过地址动态识别设备)。
- 无错误校验:无内置错误检测机制(如奇偶校验、ACK),需上层协议(如CRC)保证数据可靠性。
- 速率依赖时钟:速率由主机时钟决定,若从机无法跟上时钟(如低速传感器),需降低速率,影响整体性能。
- 多从机管理复杂:每个从机需独立CS线,引脚占用多,且主机需控制多个CS线的切换(如轮询多个传感器)。