canfd报文格式(can报文blf打开)

canfd报文格式(can报文blf打开)都说 CANFD 是兼容 CAN 的 实际上这句话有个大前提 那就是 CAN 控制器是完全遵循 ISO11898 1 规范的 为什么这么说 接下来听君娓娓道来 我们先看下 CAN 的帧结构 nbsp nbsp CAN 帧结构 从上图可以看出 标准帧中有个 r0 位 这个位实际上是个保留位 ISO11898 1 中规定 发送方发送 r0 位固定为显性 接收方则不对该位显隐性做判断 同样

大家好,我是讯享网,很高兴认识大家。




讯享网

都说CANFD是兼容CAN的,实际上这句话有个大前提,那就是CAN控制器是完全遵循ISO11898-1规范的。为什么这么说,接下来听君娓娓道来…

我们先看下CAN的帧结构:


  CAN帧结构

从上图可以看出,标准帧中有个r0位,这个位实际上是个保留位,ISO11898-1中规定:发送方发送r0位固定为显性,接收方则不对该位显隐性做判断。同样,扩展帧除r0位还有个r1位,也是保留位,其规定与r0位一致。由于ISO11898-1对保留位的规定,导致部分老旧的CAN控制器在发送保留位时,未遵循ISO规范要求,将r0或r1位发送为隐性,而不是显性,接收方也能正常接收CAN报文。那么CAN控制器发送标准帧r0或扩展帧r1为隐性,在CANFD中会导致什么问题呢?这个就要从CANFD帧结构说起了。


  CANFD帧结构

如上图所示中箭头方向,在CANFD帧中,原来的CAN标准帧中的r0为此时变为了EDL位(CANFD位),CAN扩展帧中的r1位也同样变为EDL位。EDL位规定,EDL为隐性时为CANFD帧,显性为CAN帧。


    CAN标准帧r0位和扩展帧r1位发送隐性位带来的问题
那么问题就来了,那些未完全符合ISO11898-1规范的CAN控制器,他们发送CAN帧时R0位为隐性,此时若总线上存在CANFD节点时,就会被CANFD控制器识别为CANFD帧,但是实际上他发送又是CAN帧,这种情况下就导致CANFD控制器接收异常而发送错误帧。这种情况下,对于不完全遵循ISO11898-1规范的CAN控制器来说,CANFD就不兼容CAN了。

最后,我们再通过上面这张图总结下:未符合ISO11898-1规范的CAN控制器,因其发送报文时,标准帧r0位或扩展帧r1位为隐性,在CANFD网络中,会被CANFD控制器的接收方判别为CANFD帧,从而导致总线错误。


    解决方法

若总线存在此CAN控制器时,我们可以将CANFD控制器设置为CAN控制器以兼容该CAN节点。

若使用USBCANFD-200U系列CANFD卡,遇到不规范的CAN控制器时,我们可以通过ZCANPRO设置控制器类型为CAN,就可以解决这个问题。

【版权声明】本文为ZLG开发者社区用户原创内容,未经授权不得转载。欢迎更多用户到社区交流互动、创作博文,一经采用,可获得百元京东E卡。

地址:https://developer.zlg.cn(长按复制到PC端打开)

小讯
上一篇 2025-05-27 16:19
下一篇 2025-05-05 11:19

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/188139.html