目录
·CAN总线(Controller Area Network Bus)控制器局域网总线
·CAN总线是由BOSCH公司开发的一种简洁易用、传输速度快、易扩展、可靠性高的串行通信总线,广泛应用于汽车、嵌入式、工业控制等领域
·CAN总线特征:
两根通信线 (CAN_H、CAN_L),线路少
差分信号通信,抗干扰能力强
高速CAN(ISO11898):125k~1Mbps, <40m
低速CAN(ISO11519):10k~125kbps, <1km
异步 ,无需时钟线,通信速率由设备各自约定
半双工 ,可挂载多设备,多设备同时发送数据时通过仲裁判断先后顺序
11位/29位报文ID,用于区分消息功能,同时决定优先级
可配置1~8字节的有效载荷
可实现广播式和请求式两种传输方式
应答、CRC校验、位填充、位同步、错误处理等特性
通信协议对比:
can的优势就是可以实现:多个主控通信

CAN硬件电路:
·每个设备通过CAN收发器挂载在CAN总线网络上
·CAN控制器引出的TX和RX与CAN收发器相连,CAN收发器引出的CAN_H和CAN_L分别与总线的CAN_H和CAN_L相连
·高速CAN使用闭环网络,CAN_H和CAN_L两端添加120Ω的终端电阻
·低速CAN使用开环网络,CAN_H和CAN_L其中一端添加2.2kΩ的终端电阻


CAN电平标准:
CAN总线采用差分信号,即两线电压差(VCAN_H-VCAN_L)传输数据位
高速CAN规定:
电压差为0V时表示逻辑1(隐性电平)
电压差为2V时表示逻辑0(显性电平)
低速CAN规定:
电压差为-1.5V时表示逻辑1(隐性电平)
电压差为3V时表示逻辑0(显性电平)

电压差值大为0,电压差值小为1
0:显性电平,1:隐性电平
CAN收发器:
CANH与CANL的电压差2V,RXD(CAN收发器)接收到逻辑电平0,单片机(CAN控制器)收到0
CANH与CANL的电压差0V,RXD(CAN收发器)接收到逻辑电平1,单片机(CAN控制器)收到1
单片机(CAN控制器)发送1,TXD(CAN收发器)发送逻辑电平0,上下两个 MOS 管都截止。此时 CANH 和 CANL 通过内部的两个 25kΩ 电阻分压,都被偏置在 0.5V(相当于无差值)。
单片机(CAN控制器)发送0,TXD(CAN收发器)发送逻辑电平0,上方的 PMOS 导通(连到 VCC),下方的 NMOS 导通(连到 GND)。这时 CANH 电压被拉高到约 3.5V,CANL 被拉低到约 1.5V,产生 2V 压差。

重点:
正常空闲/悬空:CAN 收发器内部电阻把两根线拉到 2.5V(无压差,逻辑 1)。(类似 I2C 的上拉,但 CAN 是拉到中间电平,且靠内部电阻)
想发 0(显性):收发器强行把 CAN_H 拉高、CAN_L 拉低,产生 2V 压差。(类似 I2C 拉低,但 CAN 是双向差动拉扯)
想发 1(隐性):收发器松开,内部电阻又把两根线拉回 2.5V,压差消失。(类似 I2C 松开按键,上拉恢复高电平)