我们先看下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帧。
最后,我们再通过上面这张图总结下:未符合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端打开)
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/haskellbc/19553.html