CAN总线学习(一)CAN总线通讯&硬件电路
目录
- CAN总线学习(一)
- 一、CAN总线通讯&硬件电路
- 1.1 CAN简介
- 1.2 和主流协议对比
- 1.3 CAN硬件电路
- 1.4 CAN电平标准
- CAN收发器-TJA1050(高速CAN)
- 共模电压(为啥CAN通信在实际使用中需要共地)
- 附学习参考网址
- 欢迎大家有问题评论交流 (* ^ ω ^)
CAN总线学习(一)
一、CAN总线通讯&硬件电路
1.1 CAN简介
- CAN总线(Controller Area Network Bus)控制器局域网总线
- CAN总线是由BOSCH公司开发的一种简洁易用、传输速度快、易扩展、可靠性高的串行通信总线,广泛运用于汽车、嵌入式、工业控制等领域
- CAN总线特征
- 两根通信线(CAN_H、CAN_L),线路少,无需共地(实际使用中为了防止较高的共模电压还是会共地的)
- 差分信号通信,抗干扰能力强
- 高速CAN(ISO11898):125k~1Mbps,<40m
- 低速CAN(ISO11519):10k~12kbps, <1km
- 异步,无需时钟线,通信速率由设备各自约定
- 半双工,可挂载多设备,多设备同时发送数据可以通过仲裁判断先后顺序
- 11位或者29位报文ID,用于区分消息功能,同时决定优先级
- 一个数据帧可以配置1~8字节的有效载荷
- 可实现广播式和请求式两种传输方式
- 应答、CRC校验、位填充、位同步、错误处理
1.2 和主流协议对比
- CAN最大的优势就是多主控系统的相互通信
1.3 CAN硬件电路
- 每个设备通过CAN收发器挂载到CAN总线网络上(CAN收发器主要实现电平转换,输出驱动和输入采样的功能)
- CAN控制器引出的TX和RX与CAN收发器相连,CAN收发器引出的CAN_H和CAN_L分别与总线的CAN_H和CAN_L相连
- 高速CAN使用闭环网络,CAN_H和CAN_L两端添加120Ω的终端电阻(防止回波反射,拉紧两根线的电压一致,代表逻辑1状态,类似I2C的上拉电阻)
- 低速CAN使用开环网络,CAN_H和CAN_L其中一端添加2.2kΩ的终端电阻
1.4 CAN电平标准
- CAN总线采用差分信号,即两线电压差(VCAN_H-VCAN_L)传输数据位
- 高速CAN规定:电压差0V位逻辑1(隐形电平),2V为逻辑0(显性电平)
- 低速CAN规定:电压差-1.5V位逻辑1(隐形电平),3V为逻辑0(显性电平)
CAN收发器-TJA1050(高速CAN)
- SOP-8封装,8引脚,分别是VCC、GND供电,CAN_H、CAN_L接总线,TX、RX连CAN控制器,Vref输出参考电压(Vref 引脚输出电压为电源电压 VCC 的一半,一般不用),S选择运行模式(高速为一般模式,静音为只接受的模式)
共模电压(为啥CAN通信在实际使用中需要共地)
-
引入两个概念,共模电压和差模电压
- 共模电压是同时出现在差分信号的两根导线(CAN_H 和 CAN_L)上,相对于一个公共参考点(通常是地)的相同电压
- 例如有AB两个设备在进行CAN通信,他们没有共地,A的地参考电压比B高5V,A向B发送了一个显性电平,VCAN_H = 3.5V VCAN_L = 1.5V
- 首先要明确共模电压和差模电压的参考点都是要确定的一个设备(A或B)
-
针对A来计算
- 共模电压:
Vcommon = (VCAN_H+VCAN_L)/2 + VGND = (3.5+1.5)/2 + 0 = 2.5V; - 差模电压:
Vdiff = (VCAN_H-VCAN_L)/2 = (3.5+1.5)/2 = 2V;
- 共模电压:
-
针对B来计算
- 共模电压:
Vcommon = (VCAN_H+VCAN_L)/2 + VGND = (3.5+1.5)/2 + 5 = 7.5V; - 差模电压:
Vdiff = (VCAN_H-VCAN_L)/2 = (3.5+1.5)/2 = 2V;
- 共模电压:
-
对于一个芯片,如CAN通信的引脚电压范围小于7.5就会被烧坏,这就是共模电压的影响。
-
CAN信号是利用差分信号不收共模电压的影响来实现稳定通信的,但是要防止共模电压过高烧坏芯片。
附学习参考网址
- CAN总线入门教程-全面细致 面包板教学 多机通信
- 共模电压与差模电压区别
- TJA1050数据手册