一、从“控制”到“通信”:嵌入式系统的神经网络

前几章,我们已经掌握了信号调理、电路原理、MCU 架构。
但嵌入式系统真正强大的地方在于:

> 它不是孤立的芯片,而是一个由通信与控制连接的整体。

在现代电子系统中:

传感器 → 采集数据

MCU → 计算与控制

外设模块 → 执行 / 通信

主机 / 云端 → 管理与反馈


所有这一切的连接都依赖于通信接口和驱动软件。


---

二、嵌入式通信的层次结构

通信不只是“线连上就能传”,它有严格的分层思想:

层级    名称    作用    示例

物理层    定义电平与波形    电线、电压、电流    UART、SPI 电平
链路层    定义数据帧结构    同步、校验、寻址    I²C、CAN
传输层    定义数据包控制    重传、流控    TCP/UDP
应用层    具体协议语义    命令格式、内容    Modbus、MQTT


嵌入式系统通常主要涉及物理层与链路层,
而嵌入式联网系统(如 ESP32)会扩展到应用层。


---

三、UART 通信 —— 最古老但最经典的接口

3.1 UART 概念

UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)
是最基本的串行通信方式。
异步意味着通信双方不共享时钟信号。

数据通过 TX(发送)和 RX(接收)两根线传输。


---

3.2 UART 帧格式

一个 UART 帧包括:

起始位(1) + 数据位(5~9) + 校验位(可选) + 停止位(1或2)

例如:
8N1 格式 → 1 个起始位 + 8 数据位 + 无校验 + 1 停止位。

示例波形:

空闲线高电平

|_Start_|_D0_|_D1_|_D2_|_D3_|_D4_|_D5_|_D6_|_D7_|Stop|


---

3.3 波特率(Baud Rate)

波特率定义通信速率,例如:

9600 bps

115200 bps


若发送与接收端波特率不匹配(误差 > 3%),通信将失败。


---

3.4 UART 驱动编写思路

发送端:

1. 等待发送缓冲区空;


2. 写入数据寄存器;


3. 硬件自动移位发送;


4. 发送中断触发或等待标志位。

接收端:

1. 检测接收标志位;


2. 读取接收缓冲寄存器;


3. 处理校验与缓存。

示例伪代码(STM32 HAL 框架):

HAL_UART_Transmit(&huart1, data, len, 100);
HAL_UART_Receive(&huart1, rx_buf, len, 100);


---

3.5 UART 应用举例

串口调试输出(printf);

GPS 模块通信;

蓝牙串口模块(HC-05);

RS232/RS485 工业总线。

---

四、I²C 通信 —— 双线多设备总线

4.1 I²C 基本结构

I²C(Inter-Integrated Circuit)是一种由 Philips 提出的双线通信协议。
仅需两根信号线:

SCL(时钟线);

SDA(数据线)。


支持多主多从结构。


---

4.2 数据传输机制

I²C 是同步通信协议。
主机产生时钟信号,所有设备都在该时钟下传输数据。

信号规则:

当 SCL 为高电平时,SDA 的变化代表起始 / 停止;

数据在 SCL 高电平期间稳定;

每字节传输完毕后,从机应答(ACK)。

---

4.3 典型传输过程

Start → 地址(7bit) + R/W → ACK → 数据1 → ACK → 数据2 → ... → Stop

每个从设备都有唯一地址(通常 7 位或 10 位)。


---

4.4 驱动设计关键点

起始条件与停止条件的时序要正确;

ACK 信号必须检测;

需要等待总线空闲;

多主机环境要处理仲裁。


伪代码示例:

I2C_Start();
I2C_SendByte(DeviceAddr << 1);
I2C_WaitACK();
I2C_SendByte(RegAddr);
I2C_SendByte(Data);
I2C_Stop();


---

4.5 应用实例

温湿度传感器(如 SHT30、BME280);

OLED 显示屏;

EEPROM 存储芯片;

RTC 时钟芯片(DS1307)。

---

五、SPI 通信 —— 高速同步接口

5.1 SPI 架构

SPI(Serial Peripheral Interface)由 Motorola 提出,
采用主从结构,4 根信号线:

引脚    功能

SCK    时钟信号
MOSI    主机输出,从机输入
MISO    主机输入,从机输出
CS (SS)    片选信号

---

5.2 SPI 时序模式

SPI 有 4 种模式,由时钟极性(CPOL)和相位(CPHA)决定。
不同设备要求不同模式:

模式    CPOL    CPHA

0    0    0
1    0    1
2    1    0
3    1    1


注意:主从两端必须模式一致。


---

5.3 驱动编写要点

SPI 通信是全双工的,
每发送一位数据,同时接收一位。

驱动伪代码:

uint8_t SPI_Transfer(uint8_t data) {
    SPI->DR = data;
    while(!(SPI->SR & SPI_FLAG_RXNE));
    return SPI->DR;
}


---

5.4 优缺点

优点:

高速(可达数十 MHz);

简单、硬件占用少;

全双工传输。


 缺点:

不支持多主机;

每个从机需独立 CS 引脚;

传输距离有限(几米内)。

---

5.5 应用场景

显示屏(LCD、TFT、OLED);

SD 卡模块;

传感器(陀螺仪、加速度计);

FLASH 存储芯片。

---

六、CAN 总线 —— 工业级通信协议

CAN(Controller Area Network)是一种多主抗干扰总线,
广泛用于汽车与工业控制系统。


---

6.1 特点

差分信号传输,抗干扰能力强;

支持多主仲裁;

自动重发;

校验完善;

实时性强。

---

6.2 数据帧结构

CAN 帧包括:

起始位 → 标识符 → 控制位 → 数据段 → CRC 校验 → ACK → 结束位

常见速率:125Kbps ~ 1Mbps。


---

6.3 驱动机制

CAN 驱动通常依靠硬件过滤器和中断机制。
MCU 中的 CAN 控制器负责自动仲裁与错误处理。


---

6.4 应用领域

车辆 ECU 通信;

电机控制网络;

机器人控制系统;

工业自动化。

---

七、DMA —— 解放 CPU 的数据传输引擎

DMA(Direct Memory Access)允许外设与内存直接交换数据,无需 CPU 干预。

7.1 工作原理

1. CPU 配置 DMA 通道;


2. 外设触发 DMA 请求;


3. DMA 自动搬运数据;


4. 传输完成触发中断。


---

7.2 优势

极大提高系统吞吐;

降低 CPU 占用;

实现实时数据流处理。

---

7.3 应用示例

ADC 连续采样;

UART 接收环形缓冲;

SPI 高速传输;

显示数据刷新。

---

八、通信协议栈与数据管理

嵌入式通信的上层通常通过协议栈(Protocol Stack)管理数据流。

8.1 Modbus 协议

一种广泛用于工业的通信标准。
支持:

RTU(串口);

TCP(以太网)。


帧结构:

地址 + 功能码 + 数据 + CRC 校验


---

8.2 MQTT 协议

IoT 领域常用的轻量级发布/订阅协议。
适用于 ESP32、嵌入式 Linux 系统。


---

8.3 数据缓存与队列

在多任务系统中,常通过环形缓冲区(Ring Buffer)或消息队列(Queue)管理通信数据。


---

九、驱动设计思想

嵌入式驱动是软硬件结合最紧密的部分。
核心思想:

1. 硬件抽象化(HAL 层)

屏蔽寄存器差异;

提供统一 API。

2. 中断与 DMA 驱动

减少 CPU 负载;

提升实时性。

3. 状态机设计

用结构体保存驱动状态;

用 switch-case 管理通信流程。

4. 分层架构:

应用层(App)

驱动接口层(Driver API)

硬件抽象层(HAL)

寄存器操作层(LL)


---

十、调试与问题排查技巧

通信问题排查流程:

1. 检查供电与地线;


2. 检查时钟与波特率;


3. 用逻辑分析仪抓包;


4. 校验 ACK 或 CRC;


5. 确认模式匹配(SPI、UART、I²C)。

抗干扰措施:

加 RC 滤波;

短线、差分布线;

软件重发机制;

校验码检测。


系统稳定性优化:

中断优先级调整;

DMA 缓冲区双缓冲;

Watchdog 防死机。

---

十一、通信系统的整体思维

通信是嵌入式的“神经系统”,
稳定的通信意味着系统的可靠与智能。

> 数据的准确传输 = 控制的可靠执行。

从 UART 到 SPI,从 I²C 到 CAN,从底层电平到协议逻辑,
真正的工程师要能:

画得出时序;

看得懂波形;

写得出驱动;

找得出干扰源。

 

Logo

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

更多推荐