在嵌入式系统开发中,各种设备之间的通信就像人与人之间的交流,需要遵循特定的“语言规则”——这就是通信协议。对于初学者来说,面对UART、I2C、SPI、CAN、Modbus这些术语常常感到困惑。本文将以最通俗的方式,带你全面理解这五种常用通信协议。

一、通信基础概念回顾

在深入具体协议前,先了解几个关键概念:

  • 同步 vs 异步:同步通信需要时钟线协调节奏(如I2C、SPI),异步通信则靠双方事先约定速率(如UART)

  • 串行 vs 并行:串行一次传1位数据(节省引脚但慢),并行一次传多位(快但引脚多)

  • 全双工 vs 半双工:全双工可同时收发(如电话),半双工只能交替收发(如对讲机)

  • 差分信号 vs 单端信号:差分用两根线传输互补信号(抗干扰强),单端只用一根线(简单但易受干扰)

二、五大通信协议详解

1. UART:最简单的“点对点”通信

核心特点

  • 只需3根线:TX(发送)、RX(接收)、GND(地线)

  • 异步通信,无时钟线,靠波特率约定速度

  • 全双工,可同时收发

  • 点对点连接,不支持多设备

通俗理解

想象两个人用对讲机约定好说话速度,一人说一句,另一人听一句。UART就像这种简单的对话方式。

典型应用

  • 单片机调试信息输出(printf打印)

  • GPS模块、蓝牙/WiFi模块通信

  • 电脑与单片机通信

常见配置:8N1(8位数据、无校验、1位停止位),波特率常用9600、115200等。

2. I2C:省引脚的“课堂点名”式通信

核心特点

  • 只需2根线:SDA(数据)、SCL(时钟),都需要上拉电阻

  • 同步半双工通信

  • 一主多从架构,通过7位/10位地址寻址

  • 有应答机制(ACK/NACK)

通俗理解

就像老师(主机)在课堂上点名(地址),被点到的学生(从机)回答问题。所有学生共用同一对问答线路。

通信过程

  1. 主机发送起始信号(SCL高时SDA由高拉低)

  2. 发送7位从机地址+读写位

  3. 从机应答(ACK)

  4. 传输数据(每8位后等待应答)

  5. 主机发送停止信号(SCL高时SDA由低拉高)

典型应用

  • 温湿度传感器(BMP280)

  • EEPROM存储器(AT24C02)

  • OLED显示屏(SSD1306)

  • 实时时钟芯片(DS3231)

速率等级:标准模式100kbps、快速模式400kbps、高速模式3.4Mbps。

3. SPI:高速的“专属热线”通信

核心特点

  • 至少4根线:MOSI(主出从入)、MISO(主入从出)、SCLK(时钟)、CS(片选)

  • 全双工同步通信,速度最快

  • 硬件寻址,每个从机需要独立CS线

  • 无应答机制

通俗理解

就像公司老板(主机)给每个员工(从机)一部专用电话(CS线),可以同时听员工汇报并下达指令。

四种工作模式

  • Mode 0:空闲低电平,上升沿采样(最常用)

  • Mode 1:空闲低电平,下降沿采样

  • Mode 2:空闲高电平,下降沿采样

  • Mode 3:空闲高电平,上升沿采样(常用)

典型应用

  • Flash存储器(W25Q64)

  • TFT/LCD显示屏(ILI9341)

  • SD卡(SPI模式)

  • ADC/DAC转换芯片

4. CAN:汽车级的“抗干扰高手”

为什么汽车和工业领域都用CAN?

CAN从设计之初就以安全可靠为核心:差分信号抗干扰、非破坏性仲裁保证关键数据优先传输、多重错误检测确保数据准确。

核心特点

  • 2根差分线:CAN_H和CAN_L,抗干扰能力极强

  • 多主多从架构,任何节点都可主动发送

  • 非破坏性仲裁:ID越小优先级越高(0覆盖1)

  • 需要120Ω终端电阻防止信号反射

通俗理解

就像紧急救援现场的通信:最重要的指令(如“立即撤离”)优先级最高,即使多人同时说话,最重要的信息也能优先传达。

帧类型

  • 数据帧:传输数据(最常用)

  • 远程帧:请求某节点发送数据

  • 错误帧:检测到错误时发送

  • 过载帧:请求延迟下一帧

典型应用

  • 汽车电子(发动机控制、ABS刹车、仪表盘)

  • 工业自动化

  • 医疗设备

5. Modbus:工业领域的“普通话”

核心特点

  • 应用层协议,不定义物理层,常用RS485作为物理层

  • 一主多从架构,地址范围1-247

  • 两种传输模式:RTU(二进制,效率高)和ASCII(文本,可读性好)

  • 常用功能码:03读保持寄存器、06写单个寄存器等

通俗理解

就像工厂里的标准化工作指令:主管(主站)按照固定格式询问每个工位(从站)的状态或下达指令。

Modbus RTU帧格式

从机地址

功能码

数据

CRC校验

1字节

1字节

N字节

2字节

典型应用

  • PLC与传感器/变频器通信

  • 智能电表数据采集

  • 楼宇自动化控制

三、五大协议对比速查表

特性

UART

I2C

SPI

CAN

Modbus

全称

通用异步收发器

内部集成电路总线

串行外设接口

控制器局域网

Modbus协议

线数

3线(TX,RX,GND)

3线(SDA,SCL,GND)

5线(MOSI,MISO,SCLK,CS,GND)

2线差分(CAN_H,CAN_L)

依赖物理层(常用RS485的2线)

通信方式

全双工

半双工

全双工

半双工

半双工

同步/异步

异步

同步

同步

异步

异步

拓扑结构

点对点

一主多从

一主多从

多主多从

一主多从

速率

9600-115200bps

100kbps-3.4Mbps

可达几十Mbps

最高1Mbps

依赖物理层(RS485最高10Mbps)

传输距离

短(<15m)

极短(板级<1m)

极短(板级<30cm)

长(可达10km@5kbps)

中长(RS485可达1200m)

寻址方式

无(点对点)

7位/10位地址

CS片选线

报文ID仲裁

站地址(1-247)

主要应用

调试、模块通信

板级传感器、存储器

Flash、显示屏、SD卡

汽车电子、工业控制

PLC、智能电表、楼宇自动化

四、如何选择合适的通信协议?

选型决策指南

  1. 需要调试打印或简单点对点通信​ → UART

    • 场景:单片机与电脑通信、蓝牙模块连接

    • 优点:简单、几乎所有MCU都支持

  2. 需要连接多个低速板级外设且引脚紧张​ → I2C

    • 场景:连接多个传感器(温湿度、加速度计)、EEPROM

    • 优点:只需2根线、有应答机制

    • 缺点:速度较慢、距离短

  3. 需要高速数据传输​ → SPI

    • 场景:读写Flash、驱动显示屏、SD卡

    • 优点:速度最快、全双工

    • 缺点:每个从机需要独立CS线、引脚占用多

  4. 需要长距离、高可靠性通信​ → CAN

    • 场景:汽车电子、工业现场

    • 优点:抗干扰强、多主架构、错误检测完善

    • 缺点:硬件成本较高、协议相对复杂

  5. 需要工业设备互联​ → Modbus + RS485

    • 场景:PLC网络、智能仪表系统

    • 优点:标准化协议、支持多设备、传输距离远

    • 缺点:需要额外物理层(RS485)

五、常见问题解答

Q1:I2C为什么必须加上拉电阻?

A:I2C采用开漏输出,只能主动拉低电平,不能主动拉高。上拉电阻确保总线能恢复到高电平状态,典型值4.7kΩ(标准模式)或1-2.2kΩ(快速模式)。

Q2:SPI的CPOL和CPHA是什么意思?

A:CPOL(时钟极性)决定时钟空闲时的电平(0=低,1=高);CPHA(时钟相位)决定数据在第几个时钟沿采样(0=第一个,1=第二个)。Mode 0(CPOL=0, CPHA=0)最常用。

Q3:CAN总线的仲裁机制如何工作?

A:多个节点同时发送时,进行逐位仲裁。每个节点发送ID位的同时回读总线电平,如果发送“1”(隐性)但读到“0”(显性),说明有更高优先级报文,立即退出。ID值越小优先级越高。

Q4:Modbus RTU和ASCII有什么区别?

A:RTU使用二进制传输,CRC校验,效率高,工业首选;ASCII将数据转为ASCII字符传输,LRC校验,可读性好但数据量翻倍。实际项目90%以上用RTU。

Q5:为什么CAN和RS485都要加120Ω终端电阻?

A:高速信号在传输线末端如果没有阻抗匹配会发生反射,造成波形失真和误码。双绞线特征阻抗约120Ω,终端电阻选120Ω可实现阻抗匹配,只在总线两端各加一个。

六、学习建议

  1. 动手实践:理论知识需要配合实际项目才能深入理解

  2. 从简单开始:先掌握UART,再学习I2C和SPI,最后挑战CAN和Modbus

  3. 善用工具:使用逻辑分析仪观察实际波形,比看时序图更直观

  4. 理解本质:不要死记硬背,理解每种协议的设计哲学和适用场景

嵌入式通信协议的学习就像掌握不同场合的交流方式:UART是两人私下聊天,I2C是课堂问答,SPI是专属热线,CAN是紧急指挥,Modbus是标准化工作指令。掌握它们的特性和适用场景,你就能为嵌入式系统设计出最合适的“沟通方案”。

记住选择协议的核心原则:在满足功能需求的前提下,选择最简单、最可靠、成本最低的方案。随着经验积累,你会逐渐形成自己的选型直觉,成为嵌入式通信的“语言专家”。

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐