CANbus数据帧结构解析(转自电液爱好者)

 近期遇到CAN总线上错误帧的问题,花了些时间来了解CANbus数据帧的结构,利用工具也抓到了CANbus电压波形,在此来和大家分享一下。


CAN的全称是Controller Area Network,是ISO国际标准化的串行通信协议。因其高性能及可靠性,已被广泛应用于船舶、工业、医疗等领域。


下图为一张完整的CAN frame,其中绿线表示CAN_H,棕线表示CAN_L,蓝线表示电位差。


CANbus数据帧结构解析(转自电液爱好者)的图1

CANbus数据帧结构解析(转自电液爱好者)的图2


高速CAN中,CAN_H/CAN_L电压及显性/隐形的定义如下:

CANbus数据帧结构解析(转自电液爱好者)的图3


下面就结合理论及实例展示来介绍帧结构中的各部分含义:


一、帧起始、帧结束


帧起始及帧结束在标准帧及扩展帧中都存在,在帧的首尾,用于界定一个数据帧。


CANbus数据帧结构解析(转自电液爱好者)的图4


实例:帧起始

CANbus数据帧结构解析(转自电液爱好者)的图5


实例:帧结束

CANbus数据帧结构解析(转自电液爱好者)的图6


二、仲裁段


当总线上多个节点同时发送数据,应该先发送谁,后发送谁?由仲裁段来判决。


CANbus数据帧结构解析(转自电液爱好者)的图7

CANbus数据帧结构解析(转自电液爱好者)的图8

CANbus数据帧结构解析(转自电液爱好者)的图9

可以看出,帧ID值越小,优先级越高。


实例:仲裁段

CANbus数据帧结构解析(转自电液爱好者)的图10


三、控制段


控制段一共有6位,由扩展帧标志位IDE、保留位r、数据长度代码DLC组成,解释如下:

CANbus数据帧结构解析(转自电液爱好者)的图11


实例:控制段

CANbus数据帧结构解析(转自电液爱好者)的图12


四、数据段


一个数据帧传输的数据为0-8个字节,这种短帧结构使得CANbus的数据量小,发送和接收时间短,实时性高;同时被干扰的概率小,抗干扰能力强。


CANbus数据帧结构解析(转自电液爱好者)的图13


实例:数据段

CANbus数据帧结构解析(转自电液爱好者)的图14


五、CRC段


CRC校验用于CANbus的数据检错,CRC校验值存放于CRC段,CRC校验段由15位CRC值和1位CRC界定符构成。


CANbus数据帧结构解析(转自电液爱好者)的图15


实例:CRC段

CANbus数据帧结构解析(转自电液爱好者)的图16


六、ACK段


当一个节点接收到的帧起始到CRC段之间的内容没有错误时,将在ACK段发送一个显性电平。


CANbus数据帧结构解析(转自电液爱好者)的图17


实例:ACK段

CANbus数据帧结构解析(转自电液爱好者)的图18


文中从帧起始、仲裁段、控制段、数据段、CRC段、ACK段、帧结束来展示了CANbus数据帧的结构,为了方便理解,插入了很多实例图片,也借用了很多网络的资料,希望有助于理解。


下一篇将会介绍,CAN通信帧的分类及CANbus上的错误类型。

  

登录后免费查看全文
立即登录
App下载
技术邻APP
工程师必备
  • 项目客服
  • 培训客服
  • 平台客服

TOP

5
2