主题 | 内容 | 教学目的/扩展视频 |
---|---|---|
CAN总线重点课程 | 电路原理,跳线设置。协议分析。驱动程序。自检模式,其他CAN总线通信。 | 会设置CAN模式,会收发数据。 |
师从洋桃电子,杜洋老师
📑文章目录

一、CAN总线核心特性与工业价值
+---------------------+---------------------------------------+
| 特性 | 技术优势 |
+---------------------+---------------------------------------+
| 多主通信架构 | 任意节点可主动发起通信 |
| 差分信号传输 | CAN_H/CAN_L双绞线抗干扰能力极强 |
| 错误检测机制 | CRC校验+自动重传,错误率<10^-11 |
| 网络扩展能力 | 最多支持110个节点 |
| 传输距离 | 10km@5kbps,40m@1Mbps |
+---------------------+---------------------------------------+
典型应用场景:
- 汽车电子:ECU控制单元通信
- 工业控制:PLC与传感器网络
- 医疗设备:高可靠性数据交互
二、CAN总线通信原理详解
2.1 差分信号传输机制
STM32 TJA1050
│ │
├──PA11(CAN_Rx)───────► RXD │
│ │
├──PA12(CAN_Tx)◄─────── TXD │
│ │
└──GND───────────► GND───────┬─────┘
│
├── CAN_H(差分+)
│
└── CAN_L(差分-)
信号特性:
- 显性电平(逻辑0):CAN_H=3.5V,CAN_L=1.5V(ΔV=2V)
- 隐性电平(逻辑1):CAN_H=2.5V,CAN_L=2.5V(ΔV=0V)
2.2 数据帧结构解析
字段 | 长度 | 说明 |
---|---|---|
帧起始 | 1bit | 显性电平标识帧开始 |
仲裁段 | 11/29bit | 消息ID,决定优先级 |
控制段 | 6bit | 数据长度标识(DLC) |
数据段 | 0-8Byte | 有效载荷 |
CRC校验段 | 15bit | 循环冗余校验码 |
应答间隙 | 2bit | 接收节点确认 |
帧结束 | 7bit | 连续7个隐性位 |
三、TJA1050芯片深度解析
3.1 芯片功能框图
+-------------------------------+
| TJA1050 |
| +-----------+ +----------+ |
STM32 | │ │ │ │ | CAN总线
PA11──────┼─►│ RXD │ │ CAN_H ├─┼─►
PA12◄─────┼──┤ TXD │ │ CAN_L ◄─┼──
VCC───────┼──┤ VCC │ │ │ |
GND───────┼──┤ GND │ │ │ |
| +-----------+ +----------+ |
+-------------------------------+
关键参数:
- 工作电压:4.5V-5.5V
- 最大速率:1Mbps
- ESD保护:±8kV接触放电
- 工作温度:-40℃~150℃
3.2 典型应用电路
+5V
│
▼
┌───┐ 120Ω
TJA1050│ ├──CAN_H───┬─────►
│ │ │
│ ├──CAN_L───┼─────►
└───┘ │
120Ω
▼
GND
设计要点:
- 总线两端必须连接120Ω终端电阻
- CAN_H/CAN_L需使用双绞线(绞距<25mm)
- 建议添加共模电感抑制高频干扰
四、通信测试系统搭建
4.1 硬件连接方案
STM32F103C8T6 工业控制面板
┌──────────────┐ ┌──────────────┐
│ PA11(CAN_Rx)├──────┬───────┤ CAN_Rx │
│ PA12(CAN_Tx)├──────┘ │ CAN_Tx │
│ TJA1050 │ │ TJA1050 │
└──────┬────────┘ └──────┬───────┘
│ │
└─────────CAN总线──────────────┘
4.2 测试程序逻辑
五、常见问题解决方案
现象 | 诊断方法 | 解决方案 |
---|---|---|
节点无法通信 | 测量终端电阻阻值 | 确保两端接120Ω电阻 |
数据错误率过高 | 示波器查看信号完整性 | 缩短线缆或降低波特率 |
总线持续显性电平 | 断开节点分段排查 | 定位短路节点 |
节点频繁离线 | 检查供电电压 | 确保5V供电稳定 |
六、进阶应用:构建CAN网络
6.1 多节点组网方案
┌──────────────┐
│ 主控节点 │
│ (STM32+F103)│
└──────┬───────┘
│
┌───────────┼───────────┐
▼ ▼ ▼
┌────────────┐ ┌────────────┐ ┌────────────┐
│ 电机控制器 │ │ 温度传感器 │ │ 人机界面 │
└────────────┘ └────────────┘ └────────────┘
网络管理策略:
- 心跳包监测(1Hz)
- 总线负载监控(<30%)
- 优先级动态调整
七、相关资源
[1] 洋桃电子B站课程-STM32入门100步
[2] STM32F103xx官方数据手册
[3] STM32F103X8-B数据手册(中文)
[4] STM32F103固件函数库用户手册(中文)
[5] CAN通信测试程序
[6] TJA1050 数据手册 + CAN总线协议
[7] CAN总线原理与驱动.pptx
总结与开发建议
-
硬件设计规范:
- 使用屏蔽双绞线,线缆总长与波特率匹配
- 每个网段至少两个终端电阻
- 电源添加π型滤波电路
-
软件优化方向:
- 启用自动重传机制(NART=DISABLE)
- 实现总线错误计数与状态监控
- 采用DMA传输提升效率
通过合理应用CAN总线技术,开发者可构建出满足工业4.0要求的高可靠通信系统。
💬 技术讨论(请在评论区留言~)
📌 下期预告:下一期将探讨CAN总线驱动程序分析
重点课程
,欢迎持续关注!
点击查阅🔍往期【STM32专栏】文章
版权声明:本文采用[CC BY-NC-SA 4.0]协议,转载请注明来源
实测开发版:洋桃1号开发版(基于STM32F103C8T6)
更新日志:
- v1.0 初始版本(2025-03-09)