CAN 总线的报文是怎么产生以及收发的,遇到通讯异常的问题时从什么角度分析?这篇文章将会带您快速了解报文的传输原理。
1 节点通讯的原理
图 1 CAN 节点示意图
如图 1 所示是一个 CAN 节点的示意图,整体包括了 CAN 收发器、CAN 控制器和 MCU。我们以节点发送报文为例,当我们使用上位机软件发送一段报文时,报文会通过 MCU 发送给 CAN 控制器。CAN 控制器将这段报文解析成逻辑信号后,再发送给 CAN 收发器。CAN 收发器根据 CAN-bus 标准将接收到的逻辑信号转换成电信号,再通过 CAN_H 和 CAN_L 两根总线将电信号传到总线上的其他节点上。
简单说就是 MCU 将报文发送给控制器,控制器将报文转换成符合规范的 CAN 报文后,通过 CAN 收发器以电信号的形式在总线上进行传输。
2 电平是如何转换成逻辑?
图 2 CAN-bus 信号电平
如图 2 所示,CAN 总线使用的是双线差分信号,所以分为 CAN_H 和 CAN_L 两根总线,根据两根总线之间电压的差值大小来判断其显隐性。而线缆上传输的电平信号只有两种可能,分别为显性电平和隐性电平,其中显性电平代表逻辑 0,隐性电平代表逻辑 1。
当接受到报文时,首先就要通过 CAN 收发器将电信号转换成逻辑信号。根据图 3 所示的 ISO11898 高速 CAN 电平标准进行判断,但是线路上经常会受到各种干扰,为了保证传输的稳定性。所以差分电平小于 0.5V 就是隐性电平代表逻辑 1,差分电平大于 0.9V 就是显性电平代表逻辑 0。
图 3 ISO11898 高速 CAN 电平
3 逻辑信号如何转换成报文?
CAN 控制器是 CAN-bus 设备的核心元件,集成了 CAN 规范中数据链路层的全部功能,能够自动完成 CAN-bus 协议的解析。
当 CAN 收发器将逻辑信号传送给 CAN 控制器后,CAN 控制器会将逻辑信号转换成符合 CAN 规范的 CAN 帧。而 CAN 帧的类型包括了数据帧、远程帧、帧间空间、错误帧和超载帧。
图 4 标准帧格式
以最常见的数据帧为例,图 4 就是标准帧的格式,包括了帧起始、仲裁场、控制场、数据场等。
图 5 报文解析实例
图 5 就是报文解析的实例,当接受到对应的逻辑信号后,CAN 控制器就会根据规定的 CAN 帧格式进行解析,并将报文发给 MCU。
4 上位机报文显示
图 6 上位机报文显示
如图 6 所示,当 CAN 控制器完成了 CAN-bus 协议的解析后,就会将报文传输到 MCU 中在上位机软件中进行显示。像帧起始、CRC 场、ACK 场这样的数据不读取,所以我们上位机软件只显示数据帧类型、帧 ID 和帧数据等信息。
5 总结
对于 CAN 总线报文错误来说,百分之 90 的错误都来自于物理层,而 CANScope 总线分析仪可以对 CAN 波形与报文同步发送和接收,快速对 CAN 总线进行各项测试,帮助工程师们快速完成故障定位和问题排查。