第 4 章:网络与总线——CAN / Ethernet / USB-OTG
本章目标:
-
深入理解三种关键通信总线(CAN、Ethernet、USB-OTG)的协议架构、硬件接口与软件驱动
-
掌握 STM32(或同类 MCU)中各总线的寄存器配置、中断/DMA 驱动框架
-
通过实战案例,实现基于 CAN 总线的节点通信、基于 Ethernet 的 TCP/IP 通信,以及基于 USB-OTG 的虚拟串口与大容量存储访问
章节结构
4.1 CAN 总线
4.1.1 CAN 协议概览与帧结构
4.1.2 硬件电气特性与物理连接
4.1.3 STM32 CAN 控制器寄存器解析
4.1.4 CAN 驱动框架(中断与报文过滤)
4.1.5 实战案例:STM32 与多个节点的可靠通信
4.2 Ethernet
4.2.1 Ethernet 协议栈概览(MAC+PHY, TCP/IP)
4.2.2 硬件接口与 MII/RMII/PSE 报文时序
4.2.3 STM32 Ethernet MAC 寄存器解析
4.2.4 LwIP 驱动集成与零拷贝 DMA
4.2.5 实战案例:Web 服务器与 MQTT 客户端示例
4.3 USB-OTG
4.3.1 USB 枚举与端点模型(Host/Device/OTG)
4.3.2 硬件信号:DP/DM、ID 引脚、VBUS 检测
4.3.3 STM32 USB-OTG 控制器寄存器解析
4.3.4 USB-CDC(虚拟串口)与 MSC(大容量存储)实现
4.3.5 实战案例:STM32 同时支持 CDC 与 MSC Composite 设备
4.4 本章小结与选型建议
4.1 CAN 总线
4.1.1 CAN 协议概览与帧结构
Controller Area Network (CAN) 是一种多主、基于广播的实时通信总线,广泛用于汽车电子、工业控制与分布式系统。CAN 的关键特点包括:
-
多主访问:所有节点并行收发,使用位仲裁确保无冲突
-
帧结构:支持标准帧(11 位标识符)与扩展帧(29 位标识符)、数据字段长度 0–8 字节
—— CAN 数据报文结构(标准帧) ——
┌────────┬───────┬───────┬───────┬───────┐
│ 标识符(11b) │ RTR(1) │ IDE(1) │ DLC(4) │ Data(0–8×8b) │ CRC(15) │
└────────┴───────┴───────┴───────┴───────┘
-
标识符 (ID):决定优先级,ID 值越小优先权越高
-
RTR:远程帧请求位
-
IDE:扩展帧指示位
-
DLC:数据长度码
-
CRC:循环冗余校验