CAN通信学习(一)
CAN通信(一)
- CAN通信是什么?
CAN (Controller Area Network)是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO 11898),是国际上应用最广泛的现场总线之一。 在北美和西欧,CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN为底层协议专为大型货车和重工机械车辆设计的J1939协议。
- CAN的物理层特征
CAN 控制器根据CAN_H和CAN_L两根线上的电位差来判断总线电平。总线电平分为显性电平和隐性电平,二者必居其一。发送方通过使总线电平发生变化,将消息发送给接收方。
正常情况下没有数据发送时,CAN_H和CAN_L的电压为2.5V,总线电平为隐性,对应逻辑电平为:1。
当进行数据传输时,CAN_H为3.5V,CAN_L为1.5V,总线电平为显性,对应逻辑电平为:0。
通过检测电压可以查询CAN的发送状态。
优先级:显性电平具有优先权,只要有一个单元输出显性电平,总线上即为显性电平。而隐形电平则具有包容的意味,只有所有的单元都输出隐性电平,总线上才为隐性电平(显性电平比隐性电平更强)。另外,在CAN总线的起止端都有一个120Ω的终端电阻,来做阻抗匹配,以减少回波反射。
图 1 CAN连接图
图 2 总线电平示意图
- 帧类型
CAN通信帧的方式进行,下面为5种类型的帧。
图 3 五种类型的帧
其中数据帧和遥控数据帧和遥控帧有标准格式和扩展格式两种格式。标准格式有11 个位的标识符(ID),扩展格式有29 个位的ID。
在实际工业设备中,较为常用的是数据帧。数据帧由以下7个段构成。
(1) 帧起始
表示数据帧开始的段。
(2) 仲裁段
表示该帧优先级的段。
(3) 控制段
表示数据的字节数及保留位的段。
(4) 数据段
数据的内容,可发送 0~8 个字节的数据。
(5) CRC 段
检查帧的传输错误的段。
(6) ACK 段
表示确认正常接收的段。
(7) 帧结束
表示数据帧结束的段。
图中D表示显性电平,R表示隐形电平
参考:《CAN入门教程》