在嵌入式系统的开发中,各类数据交互基本都依托通信协议完成。可以毫不夸张地说,嵌入式的软件工作 80% 都和协议有关,甚至只多不少。从芯片与传感器的数据传输,到主控芯片之间的信号交互;从设备与服务器的信息对接,再到电脑与开发板的调试通信,都需要对应通信协议作为支撑。
典型嵌入式开发板集成了 UART、SPI、I2C、USB 等多种通信接口,是学习和调试通信协议的基础硬件平台。开发板上的各类接口引脚通过排针引出,便于开发者连接外设与调试工具。
嵌入式开发中常用的通信协议可分为有线通信协议、无线链路协议、物联网应用层协议三大类别。嵌入式系统的资源约束永远是引脚资源、算力成本、功耗、布线成本四个硬限制,所有协议的设计都是对这四类资源的差异化分配。选择协议的本质不是选 “的”,而是匹配手头项目稀缺的资源,选合适的。
一、有线通信协议
有线通信协议是依托实体线材完成数据传输的通信规范,线材传输的主要优点是运行稳定、抗干扰能力较好、数据不易出现丢包情况,能够适配电路板短距离芯片交互与厂区长距离信号传输等多种场景。
UART 协议:UART(Universal Asynchronous Receiver/Transmitter)是嵌入式开发中应用较为普遍的异步串行通信协议。在日常开发中的串口打印、程序调试、串口助手数据收发,以及蓝牙、GPS、4G 模块的 AT 指令控制,都依托该协议实现。异步串行通信不需要时钟线辅助同步,通信双方提前约定统一的波特率,按照固定速率逐位传输数据。接线方式简便,只需将发送端 TX 对接接收端 RX、接收端 RX 对接发送端 TX,同时完成设备共地即可。UART 协议拥有固定的数据帧结构,一帧完整数据由起始位、数据位(5~9 位,常用 8 位)、校验位(可选)、停止位组成。由于没有时钟线同步,设备晶振误差、线材传输干扰、时钟参数配置偏差等情况都可能造成数据错位、乱码问题。UART 多用于设备调试日志输出、板内短距离数据交互、低速功能模块的指令通信,在车载场景中可用于中控调试、GPS / 蓝牙模块 AT 指令配置。

RS485 协议:RS485 是在 RS232 基础上优化升级的有线通信协议,采用差分信号传输方式,通过两条线路的电压差值判断传输数据,能够显著提升电磁干扰耐受能力。RS485 支持半双工通信,单条总线能够挂载多个通信节点,通信距离可达 1200 米,能够适配厂区、楼宇等长距离数据传输场景。工业场景常用的 Modbus - RTU 协议底层物理传输载体即为 RS485。RS485 负责硬件层面的数据信号传输,Modbus - RTU 负责规范数据格式与通信交互规则。该协议多用于工业自动化生产线传感器数据采集、智能电表数据传输、楼宇设备控制等场景。在车载场景中,RS485 多用于灯光辅助、车窗控制、温湿度采集等非安全类多节点数据传输。
image
I2C 协议:I2C(Inter - Integrated Circuit)是适配嵌入式板内短距离通信的轻量化协议,仅需要 SDA 数据线与 SCL 时钟线两根线材即可完成组网,能够有效节省引脚资源。I2C 支持多主多从拓扑结构,每个设备拥有独立设备地址,主设备通过发送地址选定目标通信设备,总线仲裁机制支持多个主设备同时接入总线。I2C 拥有多个传输速率档位:标准模式 100kbps、快速模式 400kbps、高速模式 3.4Mbps。受总线电容限制,I2C 仅支持一米以内的板内短距离通信。该协议多用于主控芯片与 EEPROM、RTC 实时时钟、温湿度传感器、陀螺仪、OLED 屏幕等板载小型外设的数据传输。在车载场景中,I2C 主要用于仪表板存储芯片、实时时钟模块、车内环境传感器等板内短距外设通信。

SPI 协议:SPI(Serial Peripheral Interface)是嵌入式板内高速同步串行通信协议,采用四线制传输:MISO 主输入从输出线、MOSI 主输出从输入线、SCLK 串行时钟线、CS 片选线。SPI 支持全双工通信,传输速率可达数十 MHz,整体性能优于 I2C。该协议采用一主多从架构,主控通过控制片选线电平状态选定通信从设备。SPI 主要适配板内大数据量的高速传输场景,包括 SPI Flash 存储数据读写、显示屏画面刷新、高速 ADC 数据采样、智能摄像头图像数据传输等。在车载场景中,SPI 用于中控屏幕画面刷新、高速 AD 采样模块、存储芯片数据读写、行车记录仪图像数据传输。

CAN/CAN FD 协议:CAN(Controller Area Network)是适配汽车电子与高端工业自动化场景的有线通信协议,采用差分信号传输模式,能够在复杂电磁环境中维持稳定运行。CAN 支持多主节点通信,组网内所有设备均可主动发送数据,无需等待主控轮询调度。协议自带数据错误检测、自动重传、故障节点隔离机制,是整车电控系统的通信方式。CAN FD(CAN with Flexible Data - rate)是传统 CAN 的升级版本,保留了 CAN 的稳定特性,同时优化了传输性能,数据段传输速率可达 8Mbps,支持长 64 字节的数据帧,能够适配自动驾驶、高端工业控制场景的大数据量、高实时性传输需求。

以太网协议:以太网是嵌入式设备高速、远距离、大数据量联网的主要协议,传输速率包含 10M、100M、1000Mbps 等多个档位,能够承载视频流、批量日志、海量设备数据等各类大数据量的传输任务。以太网协议的设备兼容性较好,电脑、服务器、各类智能嵌入式设备均可无缝接入组网,是当前物联网、工业设备组网的主要通信方式。在车载场景中,以太网多用于高清影音传输、多路摄像头视频回传、域控制器数据交互、车辆远程诊断与 OTA 升级。
USB 协议:USB(Universal Serial Bus)支持热插拔、即插即用,无需复杂参数配置,设备接入后可自动完成识别与通信建立。USB 拥有多档位传输速率:低速 1.5Mbps、全速 12Mbps、USB2.0 高速 480Mbps、USB3.0 + 超高速 5Gbps 以上。USB2.0 原生线缆传输距离为 5 米,搭配有源中继可扩展至 20 米。USB 的技术是依靠标准化枚举机制与分级传输速率规范,实现设备热插拔识别与多档位数据传输。在车载场景中,USB 主要用于中控系统固件升级、外接 U 盘数据读取、手机车机互联数据传输、调试设备日志导出。

LIN 协议:LIN(Local Interconnect Network)是面向车载局部低速设备的单线串行通信协议,属于 CAN 总线的低成本补充协议。LIN 采用单主多从的固定拓扑结构,常规传输速率为 20kbps,主节点按照预设时序发送帧头,对应从节点响应帧数据。该协议多用于车载座椅调节电机、车窗升降控制器、车内后视镜调节、车载雨量传感器等低速外设,是整车低成本辅助总线的主要组成部分。
1 - Wire 协议:1 - Wire 是极简单线式嵌入式板载通信协议,仅依靠单根数据线同时完成时钟同步与数据传输,硬件资源消耗极低。总线上所有从设备拥有的 64 位设备地址,部分场景可依靠数据线寄生供电。该协议传输速率偏低,适合极简低速的传感数据采集,常见应用为温度传感器(如 DS18B20)、简单身份识别芯片等小型外设。
SDIO 协议:SDIO(Secure Digital Input Output)是面向高速存储与外设拓展的并行通信协议,兼容 SPI 低速模式,可根据设备需求切换传输模式。SDIO 采用多线并行传输方式,数据吞吐能力大幅提升,主要适配 SD 卡、TF 卡、Wi - Fi 模块、蓝牙高速模块等外设。在车载场景中,SDIO 多用于车载中控存储模块、行车记录仪存储卡高速读写、车载多媒体外设数据交互。
Modbus 协议:Modbus 是工业与嵌入式领域通用的应用层通信协议,可搭载在不同物理链路运行。Modbus - RTU 依托 RS485 物理层运行,Modbus - TCP 依托以太网运行。协议采用标准主从问答机制,功能码分类清晰,可实现寄存器读取、数据写入、设备状态查询等常规操作。协议结构简单、开源,是工业设备互联互通的通用标准。在车载场景中,Modbus - RTU 可用于新能源车载 BMS 辅助采集模块、车载充电桩外设、车载工业传感器的数据读写与状态监测。
二、无线链路协议
无线链路协议是无需实体线材即可完成数据传输的通信规范,主要优点为部署灵活、无需布线,能够适配智能家居、户外监测、分布式传感器等有线布线不便的应用场景。
BLE 低功耗蓝牙协议:BLE(Bluetooth Low Energy)是传统蓝牙协议的优化版本,主要设计方向为超低功耗运行、间歇性轻量数据通信。BLE 在空旷环境中极限传输距离可达 50 米,室内 / 工业场景稳定距离为 10~30 米,物理层标称速率 1Mbps,实际业务吞吐量低于标称值,仅适合小数据包的周期性传输。智能手环、智能灯泡、智能插座等常用智能家居设备大多依托 BLE 协议完成设备配对与状态上报。在车载电子场景中,BLE 用于车载手机蓝牙配对、车载蓝牙钥匙感应解锁、车内无线设备状态上报、车载小型无线传感器数据传输,适配车载低功耗、短距离、间歇性的无线通信需求。
ZigBee 协议:ZigBee 基于 IEEE 802.15.4 标准开发,支持网状自组网与自愈多跳通信。传输速率为 250kbps,单组网络可挂载大量传感器节点,适合大规模设备集群组网。该协议多用于智能家居传感器组网、工业设备低功耗监测、楼宇安防设备联动等场景。
LoRa 协议:LoRa(Long Range)是低功耗广域网领域的主流通信协议,采用扩频通信技术,将信号频谱拓宽以降低干扰敏感度。空旷户外环境中传输距离可达 10~15 公里,城市楼宇等复杂场景下也可实现数百米至数公里的稳定通信。传输速率区间为 0.3~50kbps,仅适配低频次、小数据包的传输场景。在车载电子场景中,LoRa 多用于商用车户外远程监测,包括货运车辆位置远程追踪、车载终端户外环境数据上报、新能源车辆户外设备状态低频次回传,适配车辆野外、远距离、弱网环境下的轻量化数据传输。
WiFi 协议:WiFi 基于 802.11 标准,是嵌入式设备实现大容量无线联网的常用规范。传输速率可支撑视频流、大文件、实时网络数据等大容量传输任务,组网方式灵活,可依托路由器、无线热点实现多设备局域网互联与外网接入。在车载场景中,WiFi 多用于车机手机热点互联、车载高清视频流媒体播放、车载系统无线 OTA 升级、后排娱乐设备联网。
Z - Wave 协议:Z - Wave 是面向智能家居与低功耗集群的专用无线通信协议,工作在 Sub - 1G 低频段,信号穿透能力相对更强。该协议采用低速率窄带传输模式,运行功耗较低,支持网状组网,协议自带 AES - 128 加密机制,设备数据传输安全性较高。在车载场景中,Z - Wave 可用于车内智能灯光、车载智能窗帘、车内安防传感器等低功耗辅助设备的集群控制与状态上报。
三、物联网应用层协议
物联网应用层协议是运行在以太网、4G、LoRa 等基础通信链路之上的上层通信规范,针对嵌入式设备算力有限、内存较小、带宽资源紧缺的特点设计,是嵌入式设备对接云端平台的主要通信载体。
MQTT 协议:MQTT(Message Queuing Telemetry Transport)基于 TCP/IP 网络架构运行,采用发布与订阅的通信模式。数据发送方发布数据到特定主题,数据接收方订阅对应主题,实现数据一对多分发。MQTT 报文结构简洁,带宽占用少,支持断线自动重连、遗嘱消息推送、QoS 服务质量分级等功能,运行稳定性较好。在车载电子场景中,MQTT 是车联网云端通信的常用协议,用于车载终端上报车辆运行状态、故障码数据、定位信息,云端下发远程控制指令、车辆固件升级包、导航与服务数据,支撑智能车辆的远程运维与车云数据交互。
CoAP 协议:CoAP(Constrained Application Protocol)针对超低算力、极小内存、窄带宽的低端物联网终端设计,基于 UDP 协议运行,兼容 HTTP 语义规范。CoAP 报文头部体积小巧,支持组播通信与低功耗休眠机制,能够适配 6LoWPAN、NB - IoT 等窄带弱网环境。在车载场景中,CoAP 多用于车载低配边缘终端、车载简易传感器节点的轻量化云端上报,适合车内低算力、小内存的辅助监测设备完成低频次、小容量的数据云端交互。
四、通信协议选型与基础调试方式
嵌入式通信协议没有的优劣之分,不同协议的硬件适配条件、传输参数、应用场景各不相同。项目开发中可根据传输距离、速率需求、功耗要求、设备算力选择适配协议:
板内短距离低速外设:I2C、1 - Wire
板内高速数据传输:SPI、SDIO
设备调试与低速模块:UART
工业长距离多节点组网:RS485 + Modbus
高实时高可靠车载:CAN / CAN FD
车载低成本辅助:LIN
短距离低功耗无线:BLE、Z - Wave
高速无线联网:WiFi
大规模传感器组网:ZigBee
户外超远距离监测:LoRa
设备云端轻量化通信:MQTT(主流)、CoAP(极简终端)