Can总线学习笔记
通信总线学习笔记:TTL、RS-232、RS-485、CAN 总线详解
1. 通信接口的本质
电子设备之间要交换数据,需要一种“通信方式”。
通信主要解决三个问题:
-
信号怎么表示?
- 电压高低代表什么?
- 0 和 1 怎么表示?
-
数据怎么组织?
- 谁发送?
- 谁接收?
- 数据长度是多少?
-
多个设备同时通信怎么办?
- 冲突如何解决?
- 谁优先发送?
不同通信标准解决问题的层次不同。
2. TTL UART
2.1 什么是 TTL?
TTL 是最基础的数字电平通信。
例如 STM32:
- 高电平:3.3V
- 低电平:0V
通常:
1 → 3.3V
0 → 0V
它是单端通信。
2.2 什么叫单端通信?
单端通信:
信号线相对于 GND(地)判断电压。
例如:
信号线 ---- STM32
|
|
GND
接收端测量:
信号线电压 - 地电压
来判断 0 和 1。
优点:
- 简单
- 成本低
缺点:
- 抗干扰能力弱
- 传输距离短
典型:
TTL UART:
- 距离:几米以内
- 速度:几 Mbps(短距离)
应用:
- STM32连接传感器
- 蓝牙模块
- GPS模块
3. RS-232
3.1 RS-232是什么?
RS-232 是一种串口通信标准。
它也是:
- 单端通信
- 需要参考地
典型连接:
设备A 设备B
TX ------------ RX
GND ----------- GND
3.2 RS-232为什么有正负电压?
RS-232不是0V和5V。
它使用:
- 正电压
- 负电压
例如:
+12V
-12V
并且逻辑和TTL相反:
通常:
逻辑1 → 负电压
逻辑0 → 正电压
所以叫:
负逻辑电平
3.3 为什么STM32不能直接接RS-232?
因为STM32 UART:
0V ~ 3.3V
而RS-232:
±12V
电压不匹配。
需要转换芯片:
例如:
STM32 UART
↓
MAX232
↓
RS-232接口
3.4 RS-232特点
优点:
- 简单
- 历史悠久
缺点:
- 单端通信
- 抗干扰差
参数:
距离:
约15米
速度:
几十kbps到115.2kbps常见
应用:
- 老式电脑串口
- 工业仪器
4. RS-485
4.1 RS-485是什么?
RS-485 是差分通信。
它使用两根线:
A
B
也叫:
D+
D-
4.2 什么叫差分通信?
差分通信不是看某根线是多少伏。
而是看:
A - B
的电压差。
例如:
状态1:
A = 2.6V
B = 2.4V
差值 = +0.2V
状态2:
A = 2.4V
B = 2.6V
差值 = -0.2V
接收器只关心:
两根线谁高,谁低
4.3 为什么差分抗干扰强?
假设外界噪声:
A受到 +1V干扰
B受到 +1V干扰
那么:
原本:
A-B = 2V
干扰后:
(A+1)-(B+1)
= A-B
噪声抵消。
所以:
差分通信适合:
- 长距离
- 工业环境
4.4 RS-485需要几根线?
理论:
两根:
A
B
即可通信。
工程:
通常加:
GND
形成:
A
B
GND
4.5 RS-485特点
距离:
约1200米(低速)
速度:
最高可到数Mbps(短距离)
常见:
- 9600bps
- 115200bps
- 1Mbps
应用:
- PLC
- 变频器
- 工业传感器
5. Modbus 和 RS-485 的关系
这是容易混淆的地方。
RS-485:
解决:
电怎么传?
属于物理层。
Modbus:
解决:
数据是什么意思?
属于通信协议。
类似:
RS-485 = 电话线路
Modbus = 说话规则
例如:
RS-485发送:
01 03 00 10 00 02
Modbus规定:
01代表设备地址
03代表读取命令
00 10代表寄存器地址
所以:
RS-485 + Modbus
≈ 工业设备通信方案。
6. CAN总线
6.1 CAN是什么?
CAN:
Controller Area Network
控制器局域网。
特点:
- 差分通信
- 多节点
- 自动仲裁
- 高可靠性
应用:
- 汽车
- 机器人
- RoboMaster电机
7. CAN物理线路
CAN通信主要两根线:
CAN_H
CAN_L
通常:
再加:
GND
所以实际:
CAN_H
CAN_L
GND
8. CAN电压
高速CAN:
空闲:
CAN_H ≈ 2.5V
CAN_L ≈ 2.5V
差值:
≈0V
发送显性位:
CAN_H ≈3.5V
CAN_L ≈1.5V
差值:
≈2V
9. CAN的显性和隐性
CAN最巧妙的地方:
它定义:
隐性位
逻辑:
1
特点:
两根线电压接近。
显性位
逻辑:
0
特点:
产生明显差分电压。
关键:
显性0可以覆盖隐性1
10. CAN为什么能解决冲突?
假设两个设备同时发送:
设备A:
发送1
设备B:
发送0
总线:
因为0是显性:
结果:
总线=0
设备A发现:
我发1
但是检测到0
说明:
有更高优先级设备发送
于是:
A停止发送。
设备B继续发送。
这叫:
CAN仲裁机制
11. CAN的ID是什么?
CAN ID不是简单地址。
更准确:
报文标识符
它有两个作用:
1. 表示消息类型
例如:
0x201
表示1号电机反馈
2. 决定优先级
ID越小:
优先级越高。
例如:
0x100
优先级高
0x300
优先级低
12. 电机如何知道是不是自己的数据?
靠协议规定。
例如四个电机:
电机1:
ID=0x201
电机2:
ID=0x202
电机3:
ID=0x203
电机4:
ID=0x204
STM32收到:
0x203
知道:
这是3号电机。
13. CAN节点结构
一个CAN设备内部:
CPU
|
|
CAN控制器
|
CAN收发器
|
CAN_H CAN_L
CAN控制器负责:
- 报文封装
- CRC计算
- 仲裁
- 错误检测
CAN收发器负责:
数字信号
↓
差分电压
例如:
常见芯片:
TJA1050
14. RoboMaster C型STM32F4开发板
这块板:
内部STM32有:
CAN控制器
外部:
CAN收发器
所以提供:
CAN1接口
CAN2接口
15. 为什么有CAN1和CAN2?
不是因为CAN必须两根。
而是:
两个独立CAN网络。
例如:
CAN1:
底盘电机
CAN2:
云台设备
两条网络互不影响。
16. USB转CAN是什么?
USB转CAN设备:
本质:
电脑和CAN网络之间的桥梁。
结构:
电脑USB
↓
USB控制器
↓
CAN控制器
↓
CAN收发器
↓
CAN_H/CAN_L
用途:
- 调试电机
- 查看报文
- 测试CAN协议
17. CAN、485、232、TTL对比
| 类型 | 信号方式 | 线数 | 距离 | 速度 | 特点 |
|---|---|---|---|---|---|
| TTL | 单端 | TX/RX/GND | 几米 | Mbps级 | 板内通信 |
| RS232 | 单端 | TX/RX/GND | 15m左右 | 115kbps常见 | 老串口 |
| RS485 | 差分 | A/B/GND | 1200m | Mbps级 | 工业通信 |
| CAN | 差分 | H/L/GND | 百米级 | 1Mbps | 多节点实时控制 |
18. 最核心的理解
如果一句话总结:
TTL
我告诉你电压是多少。
RS232
我用正负电压告诉你数据。
RS485
我用两根线的电压差告诉你数据。
CAN
我不仅告诉你数据,还帮你管理很多设备同时通信。
19. 学习CAN需要掌握的知识路线
建议顺序:
- UART基础
- TTL电平
- RS232/RS485区别
- 差分信号
- CAN物理层
- CAN帧结构
- CAN ID和仲裁
- STM32 CAN外设
- 电机CAN协议
对于RoboMaster开发:
重点:
- CAN_H/CAN_L接线
- 波特率
- ID规划
- 发送报文
- 接收反馈
- 电机协议
总结:
CAN最大的特点不是“两根线”,因为485也是两根线。
CAN真正厉害的是:
它把多设备通信中的冲突处理、优先级管理、错误检测,都做到硬件里面去了。
所以汽车、电机、机器人特别喜欢用CAN。

浙公网安备 33010602011771号