在嵌入式与单片机开发中,UART、I2C、RS485等通信协议被广泛应用,但开发者对其特性和区别的认识可能并不清晰。本文将对常见的有线通信协议进行系统性梳理与对比,帮助你快速掌握其核心原理与应用场景。
UART通用异步收发器
UART口指的是一种物理接口形式(硬件)。

UART是异步、全双工的串口总线。它比同步串口复杂,通常有两根线:一根TXD用于发送,一根RXD用于接收。
UART的串行数据传输不需要时钟信号同步,而是依赖于发送和接收设备之间预定义的配置。因此,通信双方的串行通信配置(如波特率、数据位、停止位等)必须设置为完全相同。

数据帧格式:
- 起始位:标志数据传输开始,电平逻辑为“0”。
- 数据位:可能值为5、6、7、8、9位,通常取8位,对应一个字节的数据。
- 奇偶校验位:用于接收方校验数据正确性(偶校验或奇校验),此位可选。
- 停止位:表示一帧数据结束,电平逻辑为“1”。
若使用通用IO口模拟UART总线,则需要一个输入口和一个输出口。
I2C总线
I2C总线是一种同步、半双工的两线式串行总线,由串行时钟线SCL和串行数据线SDA组成。
- SCL线负责产生同步时钟脉冲。
- SDA线负责在设备间传输串行数据。
该总线支持多设备连接,设备既可作主设备也可作从设备。

主设备负责发起和控制通信,产生时钟信号;从设备则等待并响应主设备命令。无论主设备是发送方还是接收方,时钟信号都只能由主设备产生。
若用GPIO模拟I2C并实现双向传输,则需要一个输入输出口(SDA)和一个输出口(SCL)。
SPI串行外设接口
SPI总线是同步、全双工的四线式串行接口总线,采用“单主设备+多从设备”的架构。只要同一时刻只有一个主设备激活,系统中就可以存在多个SPI主设备。它常用于AD转换器、EEPROM、FLASH、RTC等外设的通信。

SPI通信需要4条信号线:
- MOSI:主设备输出,从设备输入的数据线。
- MISO:主设备输入,从设备输出的数据线。
- SCLK:串行时钟信号线。
- SS:从设备选择信号线,低电平有效。
SPI的时序模式由时钟极性(CPOL)和时钟相位(CPHA)决定,二者共同定义了时钟信号的初始电平状态和数据的采样边沿。

UART、SPI、I2C核心比较
- I2C:连线最少(2线),功能强大,但协议相对复杂,需要双向IO支持,抗干扰能力较弱,通常用于板内芯片间通信。
- SPI:实现简单,有时钟信号,无需固定波特率。速度通常快于I2C。
- UART:异步通信,需要双方约定固定波特率。一帧数据位数可变(5-9位),而I2C固定为8位。
- 选型:SPI通过片选信号选择从机,I2C通过地址选择从机。

常见串口通信标准:RS232、RS422、RS485
RS232串口通信
采用负逻辑电平:-3V~-15V为逻辑“1”,+3V~+15V为逻辑“0”。传输距离约15米,全双工通讯,速率较低(通常20kbps)。DB9接口中最常用的是RXD、TXD、GND三根信号线。

TTL与RS-232互转:单片机常用TTL电平(0V/5V或0V/3.3V),若连接RS232设备,需使用MAX232等芯片进行电平转换。

RS422串口通信
采用4根信号线(两发两收)加地线,是全双工通信。支持一点对多点的双向通信,但从设备之间不能直接通信。

RS485串口通信
采用平衡发送和差分接收,抗共模干扰能力强。采用两线进行半双工传输,速率可达10Mb/s,传输距离远(几十米至上千米)。逻辑电平由两线间的电压差决定:+2V~+6V为“1”,-2V~-6V为“0”。常使用MAX485等芯片实现TTL到RS485的转换。

关键概念辨析
- 串口/COM口:指物理接口形式(硬件)。
- TTL、RS-232、RS-485:指电平标准(电信号)。
嵌入式中的“串口”通常指UART口(TTL电平),而PC的COM口采用RS232电平。

CAN总线
CAN是控制器局域网络的简称,一种用于分布式实时控制的串行通信网络,广泛应用于汽车领域。它通过CAN_H和CAN_L两条线进行差分传输,网络两端需接入120欧姆终端电阻。

CAN通信距离可达10千米(低速时),速率可达1Mbps(短距离内)。每个设备均可作为主/从设备。

CAN电平逻辑:采用“线与”规则仲裁,显性电平(逻辑0,高电位)覆盖隐性电平(逻辑1,低电位)。

USB通信串行总线
USB接口至少包含四根线,其中两根为数据线(D+, D-),所有数据传输通过这两根线的差分信号完成,属于半双工通信。协议规定,电压电平不变代表逻辑1,电压变化代表逻辑0。

USB转TTL:通常使用CH340G等芯片实现USB与TTL串口之间的转换。相比复杂的USB协议,串口通信更为简单直接。

SD卡通信模式
单片机与SD卡通信有两种模式:
- SPI总线模式:仅使用一条数据线(半双工),速度较慢。
- SD总线模式:使用4条数据线,传输速度远快于SPI模式。

1-WIRE单总线
由Dallas公司推出,采用单根信号线异步半双工传输时钟和数据。速率通常在16.3Kbit/s至142Kbit/s之间。端口为漏极开路,需外加上拉电阻(通常5K~10KΩ)。主要应用于耗材识别、电路板认证等场景。

DMA直接存储器访问
DMA是微控制器(如STM32)内的硬件模块,能在外设与内存间直接传输数据,无需CPU介入,可大幅提升数据传输效率和CPU利用率。

Ethernet以太网
以太网是应用最普遍的局域网技术。其接口分为协议层(由MAC控制器实现)和物理层(由PHY芯片和传输器构成)。许多处理器已集成MAC,需外接PHY芯片提供物理接口。网络变压器起到信号耦合、电平隔离和增强抗干扰能力的作用。

典型的以太网接口参考电路如下:
