整车CAN通讯之canfd协议研究

      最后更新:2022-03-07 20:59:04 手机定位技术交流文章

      目录

      CAN FD是什么

      CANFD诞生原因

      CAN FD对比FlexRay的优势

      CAN FD对比以太网的优势

      低成本解决方案:

      CAN FD与传统CAN比较

      CAN FD报文结构

      起始位SOF(start of frame)

      仲裁场(Arbitration Field)

      DLC控制域(control Field)

      CRC

      ACK

      CAN FD 是什么

      CANFD :可以理解成CAN协议的升级版,只升级了协议,物理层未改变。

      CANFD 诞生原因

      1. 原因主要是因为汽车功能越来越多,越来越复杂,传统的 CAN 总线( CAN2.0 )的负载率越来越高,甚至负载率高达 95%

      2. 因为传统 CAN 总线的局限性:

      · 传输率最大为 1Mbiy/s (典型的 <= 500kbit/s );

      · 传统 CAN 数据帧超过 50% 的额外开销( overhead > 50% )。

      3. 对比其他协议,额外开销比例要小得多,如 UDP 1500 bytes/datagram, 64 bytes overhead ), FlexRay 254 bytes/frame, 8 bytes overhead )。

      4. 因为历史原因,汽车不可能直接放弃目前的传统 CAN 总线技术,一切推到重来。那么为了解决 CAN 总线负载率问题,而又能兼容 CAN 总线,并且研发成本不能太高的问题。

      CAN FD 对比 FlexRay 的优势

      1. CAN FD 的开发成本远低于 FlexRay

      2. FlexRay ECU 升级刷写不友好。

      CAN FD 对比以太网的优势

      1. CAN FD 的开发成本远低于以太网;

      2. 以太网优势在于大数据的传输但不能完全适用于当前汽车架构。

      低成本解决方案:

      根据节点优先级动态更改波特率。例如,当节点 A B 想用高波特率通信时,按流程:

      Step1 A 按照默认波特率通知其他节点停止接收,通知 B 节点提高波特率。

      Step 2 A 提高波特率: 2~10HMz

      Step 3 A B 互相通信

      Step 4 A B 通信完释放总线。

      Step5 :其它节点按照默认波特率通信。

      CAN-FD 在仲裁场增加BRS位,只要一个Bit的时间1-2us,就可以无缝切换波特率。仅仅更换传统控制器CAN节点的收发器,使收到BRS位有效时立即关闭接收,避免波特率不一致使低速节点发出错误帧。使用最低的成本就是可以实现一个CAN网络中个别节点的速率提升。

      CAN FD 与传统CAN比较

      Can CanFD 主要区别:传输速率不同、数据长度不同、帧格式不同、 ID 长度不同。

      对比传统 CAN 的数据帧, CAN FD 在控制场新添加 EDL 位、 BRS 位、 ESI 位,采用了新的 DLC 编码方式、新的 CRC 算法( CRC 场扩展到 21 位)

      1. 一条报文中含有两种速率,仲裁段和传统CAN有着相同的速率,而数据段最高可以达到5Mbps
      2. 拥有更大的数据载荷,一条报文最大可以传输64字节的数据。

      成本上CAN FD和传统CAN几乎一样,硬件构造除了CAN Controller需要更换外其他完全一样,软件只需要一些小变更即可,其他触发管理机制也和原来的传统CAN一样,CAN FD兼容传统CAN

      通过CAN FD,可以使汽车上的软件拥有更快的下载速度、避免数据分割成数条报文、降低现有总线的负载、增加总线上的节点、避免网络的分割,以及加速长总线(卡车、公交车)上的通信等优势。

      CAN FD 报文结构

      CAN的报文详解见另外一篇文章: 一文掌握汽车总线CAN帧报文_ IT技术猿猴的博客-CSDN博客

      从上图可以看出,CAN FD报文在数据段之前基本和传统CAN类似, EDL 位、 BRS 位、 ESI

      起始位 SOF start of frame

      传统 CAN 的数据帧起始位 SOF CAN FD 的数据帧起始位 SOF 是一样的,一个 bit 的显性位 ‘0’

      仲裁场( Arbitration Field

      对比传统 CAN 数据帧, CAN FD 共享相同的 CAN ID ,包括扩展数据帧的 ID

      CAN FD RRS bit (始终为显性位 ‘0’ )代替 RTR

      FDF FD format )表示 CAN FD 还是传统 CAN 数据帧:

      ·FDF = ‘0’ --> 传统 CAN 数据帧

      FDF = ‘1’--> CAN FD 数据帧

      增加了BRS位(Bit Rate Switch速率不切换/速率切换)来 表示时钟频率的切换BRS = ‘1’ 表明时钟频率切换

      增加了ESI位(Error State Indicator error passive/ active)来表明错误状态。

      DLC 控制域( control Field

      CAN FD 因为最大可以传输64字节的数据,所以DLC和传统报文的有些区别

      数据段的变化就是由最大8字节变成了如图中DLC所描述的那样,最大可容纳64字节数据。

      CRC

      数据段后面的CRC和ACK,因为CAN FD的CRC对bit stuff也进行计算,所以在报文帧中增加了Stuff Count

      Stuff Count 可以分为两部分,即代表bit stuff个数余8的数据位,以及最后的奇偶校验位。

      CAN 总线由于位填充规则对 CRC 的干扰,造成错帧漏检率未达到设计意图。 CAN FD CRC 算法做了改变,即 CRC 以含填充位的位流进行计算。在校验和部分为避免再有连续位超过 6 个,就确定在第一位以及以后每 4 位添加一个填充位加以分割,这个填充位的值是上一位的反码。作为格式检查,如果填充位不是上一位的反码,就作出错处理。 CAN FD CRC 场扩展到了 21

      CRC 的位长则根据数据长度不同而不同:

      • 传统CAN的CRC位长15bit
      • 数据长度为16字节和16字节以下的CAN FD报文的CRC位长17bit
      • 数据长度为16字节以上的CAN FD报文的CRC位长21bit

      ACK

      CAN FD的CRC分隔和ACK与传统CAN一样,但是因为考虑到收发器速率切换的问题,总线分别可以容忍数据的1位延长,即CRC Delimiter从原来的1位【1】变为了CAN FD的最大2位【1】,ACK从原来的1位【0】变为了CAN FD的最大2位【0】。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/19688.html

          热门文章

          文章分类