当前位置:网站首页 > Haskell函数式编程 > 正文

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



都说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端打开)

到此这篇canfd报文格式(can报文blf打开)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • canfd报文格式(can报文格式有哪几种)2024-12-20 08:18:07
  • 地铁支付方式怎么更换(支付宝地铁支付怎么修改支付方式)2024-12-20 08:18:07
  • max的函数功能是什么(max函数的含义)2024-12-20 08:18:07
  • 字符串转换字符代码的函数是(字符串转换字符代码的函数是)2024-12-20 08:18:07
  • 聚合函数 null(聚合函数中不忽略空值(null) 的是)2024-12-20 08:18:07
  • bigboss源官网联系方式(bigboss源怎么用)2024-12-20 08:18:07
  • 支付方式有哪些(新加坡支付方式有哪些)2024-12-20 08:18:07
  • 报文格式有哪些(报文格式有哪些xml)2024-12-20 08:18:07
  • 字符串转码转换编码方式(字符串转码转换编码方式是什么)2024-12-20 08:18:07
  • vs怎么用scanf函数(vs scanf_s)2024-12-20 08:18:07
  • 全屏图片