本章目標:
-
深入理解三種關鍵通信總線(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:循環冗余校驗