CAN 与 CAN FD 总线协议 | 概念 / 特性 / 应用

注:本文为 “CAN 与 CAN FD 总线协议” 相关合辑。
图片清晰度受引文原图所限。
略作重排,未整理去重。
如有内容异常,请看原文。


CAN 和 CAN FD

小幽余生不加糖 已于 2023-04-08 21:33:48 修改

一、CAN 和 CAN FD

1. CAN

CAN 是 Controller Area Network 的缩写(以下简称 CAN),是 ISO 国际标准化的串行通信协议。该协议由德国电气商博世公司于 1986 年率先提出,此后通过 ISO 11898 及 ISO 11519 完成标准化,目前在欧洲已成为汽车网络的标准协议。

CAN 协议经 ISO 标准化后形成两个标准:ISO 11898 标准与 ISO 11519-2 标准。其中,ISO 11898 针对通信速率为 125 Kbps ~ 1 Mbps 的高速通信场景,ISO 11519-2 则针对通信速率为 125 Kbps 以下的低速通信场景。

CAN 具有极高的可靠性,广泛应用于汽车电子、工业自动化、船舶、医疗设备、工业设备等领域。

2. CAN 协议的特点

① 多主控制。总线空闲时,所有节点均可发送消息;当两个及以上节点同时开始发送消息时,通过标识符(ID,非地址)确定优先级。此时,各节点会对消息 ID 的每一位进行逐个仲裁比较,仲裁获胜(优先级最高)的节点可继续发送消息,仲裁失利的节点则立即停止发送并转入接收状态。

② 系统灵活性。连接至总线的节点无类似“地址”的信息,因此在总线上新增节点时,已连接的其他节点的软硬件及应用层均无需修改。

③ 速度与距离特性。最高通信速率为 1 Mbps(传输距离 < 40 m),最远传输距离可达 10 km(速率 < 5 Kbps)。

④ 错误处理功能。所有节点均具备错误检测能力(错误检测功能);检测到错误的节点会立即通知总线上的其他所有节点(错误通知功能);正在发送消息的节点若检测到错误,会强制终止当前发送,并反复重发该消息直至成功(错误恢复功能)。

⑤ 故障封闭功能。CAN 可区分总线上的错误类型:暂时的数据错误(如外部噪声干扰)或持续的数据错误(如节点内部故障、驱动器故障、断线等)。当总线上出现持续数据错误时,该功能可将引发故障的节点从总线上隔离。

⑥ 多节点连接能力。CAN 总线为可连接多个节点的总线,理论上连接节点总数无限制,但实际受总线上的时间延迟及电气负载限制。降低通信速度可增加连接节点数,提高通信速度则会减少连接节点数。

正是由于上述特点,CAN 特别适用于工业过程监控设备的互连,因此受到工业界的广泛重视,已被公认为最具发展前景的现场总线之一。

3. CAN 物理层特征

CAN 控制器通过 CAN_L 和 CAN_H 上的电位差判断总线电平,总线电平分为显性电平和隐性电平,且二者必居其一。发送方通过改变总线电平将消息传输至接收方。

  • 显性电平对应逻辑 0,此时 CAN_H 和 CAN_L 之差约为 2 V。
  • 隐性电平对应逻辑 1,此时 CAN_H 和 CAN_L 之差为 0 V。

在这里插入图片描述

显性电平具有优先权,只要有一个节点输出显性电平,总线即呈现显性电平;隐性电平具有包容性,仅当所有节点均输出隐性电平时,总线才呈现隐性电平(显性电平强于隐性电平)。此外,CAN 总线的两端均需接入 120 Ω 的终端电阻以实现阻抗匹配,减少回波反射。

4. CAN 帧种类介绍

CAN 通信通过以下 5 种类型的帧实现:

在这里插入图片描述

其中,数据帧和遥控帧均包含标准格式与扩展格式:标准格式的标识符(ID)为 11 位,扩展格式的 ID 为 29 位。

5. CAN 数据帧介绍

数据帧由 7 个段组成:

① 帧起始:表示数据帧开始的段。

② 仲裁段:表示该帧优先级的段(11 ~ 29 位)。

③ 控制段:表示数据字节数及保留位的段(6 位)。

④ 数据段:数据内容,一帧可传输 0 ~ 8 字节的数据。

⑤ CRC 段:用于检测帧传输错误的段(15 位)。

⑥ ACK 段:表示确认正常接收的段(2 位)。

⑦ 帧结束:表示数据帧结束的段(7 位)。

6. CAN 总线仲裁

在这里插入图片描述

仲裁规律如下:

  1. 总线空闲时,最先发送的节点获得发送优先权,一旦开始发送,其他节点无法抢占。
  2. 若多个节点同时发送,连续输出显性电平更多的节点具有更高优先级。

仲裁从 ID 开始比较,若 ID 相同,还可能比较 RTR 和 SRR 等位。

7. CAN FD

CAN FD 是 CAN with Flexible Data rate 的缩写,可视为传统 CAN 的升级版。为适应新能源汽车与智能汽车的发展需求,CAN FD 由 CAN 2.0 演变而来,是一种新的 CAN 通信协议。

当前汽车产业的发展聚焦于新能源与智能化两大方向。汽车已成为人们生活中不可或缺的一部分,用户不仅将其视为代步工具,更期望其成为生活及工作范围的延伸。

为此,汽车制造商为提升产品竞争力,在汽车上集成了越来越多的功能,导致电子控制单元(ECU)数量大幅增加,总线负载率急剧上升,传统 CAN 总线逐渐难以满足需求,CAN FD 应运而生。

2011 年,CAN FD 协议的开发工作启动;2015 年,包含传统 CAN 与 CAN FD 的 ISO 11898-1 修订版发布。

与传统 CAN 总线技术相比,CAN FD 主要有两方面升级:

  1. 支持可变速率,最大速率可达 5 Mbit/s;
  2. 支持更长数据长度,最长数据长度为 64 bytes。

二、CAN 和 CAN FD 区别

CAN FD 可理解为 CAN 协议的升级版,仅升级协议,物理层未作改变。

1. 传输速率不同

  • CAN:最大传输速率为 1 Mbps。
  • CAN FD:速率可变,仲裁比特率最高为 1 Mbps(与 CAN 相同),数据比特率最高为 8 Mbps,据调研,目前应用中多为 5 Mbps。

2. 数据长度不同

  • CAN:一帧数据最长为 8 字节。
  • CAN FD:一帧数据最长为 64 字节。

3. 帧格式不同

CAN FD 新增了 FDF、BRS、ESI 位:

  • FDF:用于区分 CAN 报文与 CAN FD 报文。
  • BRS:表示位速率转换,该位为隐性时,速率可变(即从 BRS 到 CRC 采用转换速率传输);该位为显性时,以正常的 CAN FD 总线速率传输(恒定速率)。
  • ESI:表示发送节点的状态。

4. ID 长度不同

  • CAN 标准帧的 ID 长度最长为 11 bit。
  • CAN FD 标准帧的 ID 长度可扩展至 12 bit。

5. CAN FD 与 CAN 的主要区别

(1)可变速率

CAN FD 采用两种位速率:从控制场中的 BRS 位到 ACK 场之前(含 CRC 分界符)为可变速率,其余部分采用原 CAN 总线的速率。两种速率各有一套位时间定义寄存器,除位时间单位 TQ 不同外,位时间各段的分配比例也可不同。

(2)新的数据场长度

CAN FD 大幅扩充了数据场长度,数据长度码(DLC)最大支持 64 字节。当 DLC ≤ 8 时,与原 CAN 总线一致;当 DLC > 8 时,数据长度呈非线性增长,因此最大数据场长度可达 64 字节。

三、CAN 和 CAN FD 硬件区别

  1. 控制器接口相似,物理层保持不变。

  2. CAN FD 的硬件支持(引自《车载网络技术革新——CAN FD 浅析》)

在 CAN 总线基础上发展的 CAN FD 协议,实际应用时需对原有 CAN 网络的物理层进行部分修改,而对软件及应用程序的修改较少。通常,在车载 CAN 网络中实现 CAN FD 通信时,需添加 CAN FD 控制器。目前 CAN FD 控制器尚未有成品问世,博世公司在实验室中通过将 CAN IP 模块嵌入 FPGA 实现了 CAN FD 控制器的功能,该方法目前主要用于仿真验证与实验室测试。CAN IP 模块如图 3 所示,其由 2 个 CAN FD IP core 在 FPGA 上运行,上层由 CPU 控制。

在这里插入图片描述

恩智浦(NXP)宣布将于 2013 年上半年发布 TJA1145 FD 收发器样片,该收发器支持 CAN 局部网络(PN, Partial Networking),并配置额外寄存器以忽略 CAN FD 消息,为 CAN FD 节点与传统 CAN 节点在同一网络中的兼容提供了条件——即 CAN FD 节点通信时,CAN 节点进入睡眠状态;CAN FD 通信结束后,通过 CAN 唤醒消息唤醒 CAN 节点。同时,恩智浦宣布将于 2013 年第三季度发布 SJA1145 样片,这是一款集成片上收发器的 CAN FD 协议控制器,支持 64 字节的传输负载与 2 M 的传输速率,但 SJA1145 需要精确的外部时钟。Etas 和 Vector 等工具厂商也已推出支持 CAN FD 总线通信的工具及相关发展计划。

  1. TC277 支持 4 路 CAN FD

在这里插入图片描述

  1. TC397 支持 12 路 CAN FD

在这里插入图片描述

四、CAN 和 CAN FD 组网问题

当传统 CAN 网段的部分节点升级至 CAN FD 时,需特别注意:CAN FD 节点可正常收发传统 CAN 报文,但传统 CAN 节点无法正确收发 CAN FD 报文,原因在于帧格式不一致,这会导致传统 CAN 节点发送错误帧。

在这里插入图片描述

针对上述场景,为解决传统 CAN 与 CAN FD 的兼容性问题,芯片厂商提出一种解决方案:在传统 CAN 节点上采用 CAN FD Shield 模式的收发器。当收到 CAN FD 报文时,该收发器会将其过滤,防止传统 CAN 节点发出错误帧,从而实现网络兼容。


一文搞懂 CAN 和 CAN FD 总线协议

心觉 001 已于 2024-01-16 17:06:31 修改

一、CAN 与 CAN FD 的概念

1. CAN 是什么

控制器局域网总线(CAN,Controller Area Network)是一种用于实时应用的串行通讯协议总线,可通过双绞线传输信号,是目前世界上应用最广泛的现场总线之一。CAN 协议用于汽车中各类元件之间的通信,以替代昂贵且笨重的配电线束。该协议的健壮性使其应用延伸至其他自动化及工业领域。CAN 协议的特性包括完整的串行数据通讯、实时支持、传输速率高达 1 Mb/s、11 位寻址能力及检错能力。

img

CAN 连线图

2. CAN FD 是什么

CAN FD 是 CAN with Flexible Data rate 的缩写,译为“可变速率的 CAN”,可视为传统 CAN 的升级版,且仅升级协议,物理层未作改变。

3. 为什么需要 CAN FD?

主要原因是汽车功能日益增多且复杂,传统 CAN 总线(CAN 2.0)的负载率不断升高,甚至可达 95%,同时传统 CAN 总线存在一定局限性。

传统 CAN 总线的局限性包括:

  • 最大传输率为 1 Mb/s(典型应用中 ≤ 500 kbit/s);
  • 传统 CAN 数据帧的额外开销超过 50%(overhead > 50%)。

与其他协议相比,其额外开销比例显著更高,例如 UDP(1500 bytes/datagram,64 bytes overhead)、FlexRay(254 bytes/frame,8 bytes overhead)。

此外,出于历史原因,汽车行业无法直接放弃现有传统 CAN 总线技术重新开发。因此,为解决 CAN 总线负载率问题,同时兼顾兼容性且控制研发成本,2015 年发布了包含传统 CAN 与 CAN FD 的最新修订版 ISO 11898-1。

当前众多应用对通讯数据量和速率的要求不断提高,尤其是当速率高于 1 MBit/s 时,传统 CAN 通讯无法满足需求,基于此应用需求,CAN FD 应运而生。鉴于此,CAN FD 的出现旨在解决传输速率与传输字节数的问题,基于这一思路可更易理解 CAN FD 协议及其产生的必要性。

二、CAN 与 CAN FD 的比较

CAN 与 CAN FD 的主要区别体现在传输速率数据域长度帧格式ID 长度四个方面。

1. 传输速率不同

CAN 的传输速率

工程中常用的通讯速率为 500 K 每秒,该速率在实际测试中可靠性较高。CAN 总线上任意两个节点的最大传输距离与其位速率相关,最大通信距离指同一条总线上两个节点之间的距离。由下图可知,速率越低,通讯距离越远,即 CAN 总线的通讯距离与波特率成反比。CAN 的最大传输速率为 1 Mbps。

img

CAN 总线的通讯距离和波特率的关系图

CAN FD 的传输速率

CAN FD 采用两种位速率:从控制场中的 BRS 位到 ACK 场之前(含 CRC 分界符)为可变速率,其余部分采用原 CAN 总线的速率。两种速率各有一套位时间定义寄存器,除位时间单位 TQ 不同外,位时间各段的分配比例也可不同。

因此,CAN FD 在 CAN 的基础上增加了数据域的传输速率,数据传输速率大于等于原 CAN 总线的速率。即 CAN FD 支持两种传输速率,且两种速率可相同或不同。其速率可变,仲裁比特率最高为 1 Mbps,数据比特率最高为 8 Mbps。

img

标准帧对比

img

img

扩展帧对比

2. 数据域长度不同

CAN 的数据域长度最长为 8 字节,CAN FD 的数据域长度最长为 64 字节。

传统 CAN 报文与 CAN FD 报文的 DLC 长度区别如下所示:

img

传统 CAN 报文与 CAN FD 报文的最大区别有两点:① CAN FD 可传输更多数据;② CAN FD 报文传输过程中采用两种传输速率,一种是标称 CAN 总线速率(用于传输非数据域字段),另一种是数据域传输速率(用于传输数据域字段)。

3. 帧格式不同

CAN 总线上传输的信息称为报文,总线空闲时,任何连接的节点均可开始发送新报文。CAN 通信通过以下 5 种类型的帧实现:数据帧、遥控帧、错误帧、过载帧、帧间隔。

img

img

CAN 总线数据帧格式

img

CAN 遥控帧

3.1. CAN Framing 帧格式
  • 标准帧

    • 标准数据帧(11 bit ID + 0 ~ 8 bytes data)
    • CAN ID 为 11 bit,如下可通过示波器查看
    • img
    • 标准远程帧(11 bit ID + 0 byte data)
  • 扩展帧

    • 扩展数据帧(29 bit ID + 0 ~ 8 bytes data)
    • 扩展远程帧(29 bit ID + 0 byte data)

img

  • SOF:值为 0(显性电位为 0,隐性电位为 1,总线空闲时默认值为 1),作为帧起始,接收节点收到帧起始后会与总线时钟进行同步(硬同步,此处为硬同步)。

  • 仲裁字段

    • ID:高位在前。
    • RTR:远程帧请求位,数据帧中该位为 0,远程帧中该位为 1。远程帧表明接收该帧的节点不主动发送数据,仅当收到远程帧时才开始发送,以减少对 CAN 通信的占用。
  • 控制字段

    • IDE:表示是否为扩展帧,IDE 为 1 时为扩展帧。
    • r:保留位。
    • DLC:数据长度码,合理范围为 0 - 8,超出则表示 8 字节。
  • 数据字段

  • 校验字段

    • CRC:15 位校验位。
    • DEL(delimter):分隔符,无实际意义,值为 1。
  • 确认字段

    • ACK:发送节点发送该位时均置为 1;接收节点若 CRC 校验正确,则在 ACK 位时将其置为 0,否则保持为 1。若发送节点回读 ACK 位为 0,继续发送;否则停止发送,下次发送错误帧。
    • DEL:分隔符。
  • EOF + ITM:结束字段 + 帧间隔

img

扩展帧结构

  • 位填充
    • 当出现 5 个连续相同的位(包括填充位)时,在后续位置填充一个相反的位。
    • 位填充范围从 SOF 开始至 CRC 段结束。

帧错误检测机制

  • 位监控:回读发送出去的位数据。
  • ACK 位:发送节点回读 ACK 位为 0 时继续发送,否则表明发生错误,停止发送。
  • Stuff Check:填充检测。
  • CRC 检测。
  • Form 检测:对分隔符(del)等进行检测。
  • 帧错误处理:当某一节点检测到发送或接收的帧存在错误时,会通过发送错误帧告知其他参与通信的节点,当前发送或接收的帧存在问题。

img

帧错误检测机制

3.2. CAN FD Framing 帧格式

硬件及协议略有改动。CAN FD 数据段最多为 64 字节,最高支持 8 MB/s 的传输速率,且采用可变速率,数据字段传输速度更快。

img

CAN FD 无远程帧,仅分为两种:标准帧(标识符 11 位)和扩展帧(标识符 29 位)。

img

CAN FD 标准帧中的数据帧

img

CAN FD 标准帧和扩展帧结构

  • SOF:帧起始。
  • 标识符 ID。
  • RRS:替代原 CAN 帧中的 RTR。
  • IDE:表示是否为扩展帧。
  • FDF:表示是 CAN 帧还是 CAN FD 帧。
  • r:保留位。
  • BRS(Bit Rate Switch):用于指示数据段传输是否变换速度。BRS 之前为仲裁段,以低速传输;从 BRS 开始至 CRC 分隔符为止为数据段,可高速传输。CRC 分隔符之后因需 ACK 应答,恢复为低速传输。
    • BRS = 0 时,保持低速传输;BRS = 1 时,数据段以高速传输。

在这里插入图片描述

  • ESI:用于告知其他节点发送方的错误状态。ESI = 1 时,发送节点(Tx Node)处于被动错误状态;ESI = 0 时,发送节点处于主动错误状态。
  • DLC:0 - 8 线性表示数据长度,9 - 15 离散表示数据长度。

img

  • CRC:根据数据长度采用不同长度的 CRC 校验。CAN 采用 15 位 CRC 校验,且不包含填充位;CAN FD 的 CRC 包含数据填充位。CAN FD 在 CRC 字段的前四位增加对前面填充位的计数校验,填充规则为每出现 5 个相同位后跟随一个相反位。CRC 字段不采用前述填充方式,而是采用固定位填充:从 CRC 字段起始位置开始,每 4 位填充 1 位,填充位取前一位的相反值。
    • 首先统计从 SOF 开始至 CRC 字段之前的填充位个数对 8 取模,将结果以格雷编码形式存储在高三位,最后一位为偶校验位,用于校验前三位。
    • 当数据段长度 > 16 字节时,采用 21 位 CRC。
    • 当数据段长度 ≤ 16 字节时,采用 17 位 CRC。
3.3. CAN FD 新增了 FDF、BRS、ESI 位
  • FDF:用于区分 CAN 报文与 CAN FD 报文。
  • BRS:表示位速率转换,该位为隐性(1)时,速率可变(即从 BRS 到 CRC 采用转换速率传输);该位为显性(0)时,以正常的 CAN FD 总线速率传输(恒定速率)。
  • ESI:表示发送节点的状态。

img

4. ID 长度不同

CAN 标准帧的 ID 长度最长为 11 bit,CAN FD 标准帧的 ID 长度可扩展至 12 bit。

三、CAN 与 CAN FD 的优劣势

1. CAN 优势

  • 实时性强、传输距离较远、抗电磁干扰能力强、成本低。
  • 采用双线串行通信方式,检错能力强,可在高噪声干扰环境中工作。
  • 具有优先权和仲裁功能,多个控制模块通过 CAN 控制器连接至 CAN-bus,形成多主机局部网络。
  • 可根据报文的 ID 决定接收或屏蔽该报文。
  • 具备可靠的错误处理和检错机制。
  • 发送的信息若遭到破坏,可自动重发。
  • 节点在错误严重时可自动退出总线。
  • 报文不包含源地址或目标地址,仅通过标志符指示功能信息、优先级信息。

2. CAN 缺点

不一致性

CAN 总线各节点质量的不一致可能引发系统瘫痪、错误、死机等问题,因此 CAN 一致性测试成为保证 CAN 网络安全运行的重要手段。

不可预测性

CAN 总线将节点状态分为 Error Active、Error Passive 和 Bus Off 三种,这三种状态在特定条件下可相互转换,不同状态下节点的发送延迟不同。此外,由于 CAN 的原子广播特性,其他节点的发送或接收错误会触发错误帧,进而影响该节点的接收错误计数器值及节点状态。

信道出错堵塞

节点可能因干扰或其他原因暂时或永久失效,出错的主机会命令 CAN 收发器持续发送消息,即所谓的“Babbling Idiot”错误。由于该信息格式合法,CAN 无相应机制处理此类情况。

3. CAN FD 的优势

CAN FD 提高位速率的同时提供更短的 CAN 帧

  • 延迟时间更短。
  • 实时性能更优。
  • 带宽更高。

CAN FD 可在 CAN 帧中容纳 8 至 64 字节更多的数据

  • 系统开销相对更少,数据吞吐量更优。
  • 发送较大数据对象时,软件更简单高效。

img

CAN FD 具有更高性能的 CRC 算法

  • 降低未检测到错误的风险。
  • 但受产品稳定性考验、改造成本等因素限制,CAN FD 尚未快速全面普及。

四、CAN FD 通信 CANoe 配置

若需两个 CAN 节点对发信息,CANoe 配置(以 VN1640A 为例)如下:

img

将 VN1640A 的 CH1 和 CH2 配置为 CAN FD 时,发送的数据类型配置为 CAN Data 或 CAN FD 均可发送。

将 VN1640A 的 CH1 和 CH2 配置为 CAN 时,发送的数据类型配置为 CAN Data 或 CAN FD 均可发送。

img

五、小结

总体而言,随着车辆所需的通讯数据量不断增加,原有 CAN 总线的负载率逐年升高。考虑到传统 CAN 通讯架构已十分庞大,若完全推翻并更换全新通讯方式,成本过高。因此,需要一种既能兼容原有 CAN 通讯,又不会显著增加成本的方案,CAN FD 便是这样一种折中方案,同时它还能提高数据传输量。


通信总线协议之 CAN-FD 协议详解

由园长 QwQ 于 2024 年 3 月 11 日 22:27:17 发布

1. CAN-FD 简介

1.1 什么是 CAN FD

  • 在《通信总线协议之 CAN 总线协议详解》中介绍了 CAN 2.0 A/B 总线协议,然而,随着总线技术在汽车电子领域的应用日益广泛,特别是自动驾驶技术的快速发展,汽车电子对 总线宽度数据传输速率 的要求不断提高,传统 CAN( 1  MBit/s 1\ \text {MBit/s} 1 MBit/s 8  Bytes Payload 8\ \text {Bytes Payload} 8 Bytes Payload)已难以满足不断增长的需求。

  • 因此,一种能够与 CAN 2.0 A/B 兼容,且通信速率更高、有效载荷更大的 CAN 总线 ——CAN-FD 总线协议 应运而生。2012 年,Bosch 发布了新的 CAN FD 标准(CAN with Flexible Data Rate)。

  • CAN FD 继承了 CAN 的绝大多数特性,例如相同的物理层、双线串行通信协议、基于非破坏性仲裁技术、分布式实时控制、可靠的错误处理与检测机制等,同时弥补了 CAN 在总线带宽和数据长度方面的不足。

1.2 CAN FD 的特点

  • CAN FD传输速率可变:从控制场中的 BRS 位到 ACK 场之前(含 CRC 分界符)为可变速率,最高速率可达 8  Mbps 8\ \text {Mbps} 8 Mbps

  • CAN FD数据长度不同:CAN FD 每个数据帧最多支持 64 64 64 个数据字节,而传统 CAN 最多支持 8 8 8 个数据字节,这减少了协议开销,提高了协议效率。

  • CAN FD帧格式存在差异:CAN FD 新增了 FDF、BRS、ESI 位。

  • FDF 位(Flexible Data Rate Format):原 CAN 数据帧中的保留位 r r r,用于区分 CAN 报文与 CAN-FD 报文。FDF 位常为 隐性 1,表示为 CAN FD 报文;

  • BRS 位(Bit Rate Switch):表示位速率转换。当 BRS 为 显性位 0 时,数据段的位速率与仲裁段的位速率一致(恒定速率);当 BRS 为 隐性位 1 时,速率可变(即 BSR 到 CRC 使用转换速率传输);

  • ESI 位(Error State Indicator):发送节点错误状态指示。主动错误时发送显性位 0被动错误时发送隐性位 1

2. CAN-FD 总线协议

  • CAN FD 节点可正常收、发 CAN 报文,但 CAN 节点无法正确收、发 CAN FD 报文,因其帧格式不一致。

  • 与 CAN 相同,CAN FD 由以下 7 7 7 部分组成:帧起始、仲裁段、控制段、数据段、CRC 段、ACK 段和帧结束。

CAN 标准帧格式

CAN FD 帧格式

2.1 帧起始

  • CAN FD 与 CAN 使用相同的 SOF 标志位 标志报文的起始。

  • 帧起始由 1 1 1 个显性位构成,标志着报文的开始,并在总线上起到同步作用。

在这里插入图片描述

2.2 仲裁段

  • 与传统 CAN 相比,CAN FD 取消了远程帧,用 RRS 位替换了 RTR 位,且 RRS 位为常显性。

  • RTR(Remote Transmission Request Bit):远程发送请求位。RTR 位在数据帧中必须为显性,在远程帧中为隐性;

  • RRS(Remote Request Substitution):远程请求替换位,即传统 CAN 中的 RTR 位,在 CAN FD 中为常显性;

  • IDE 位 仍为标准帧和扩展帧的标志位。若标准帧与扩展帧具有相同的前 11 11 11 位 ID,则标准帧会因 IDE 位为 0 0 0 而优先获得总线。

在这里插入图片描述

2.3 控制段

  • 控制段中,CAN FD 与 CAN 具有相同的 IDEresDLC 位;同时新增了三个控制位,即 FDF、BRS、ESI

  • FDF(Flexible Data Rate Format):原 CAN 数据帧中的保留位 r r rFDF 常为隐性,表示为 CAN FD 报文;

  • BRS(Bit Rate Switch):位速率转换。当 BRS 为显性位时,数据段的位速率与仲裁段的位速率一致;当 BRS 为隐性位时,数据段的位速率高于仲裁段的位速率;

  • ESI(Error State Indicator):错误状态指示。主动错误时发送显性位,被动错误时发送隐性位。

在这里插入图片描述

  • DLC 同样由 4  bit 4\ \text {bit} 4 bit 表示数据段的长度,其对应关系如下:

在这里插入图片描述

2.4 数据段

  • 数据段为传输的具体数据内容。

  • CAN FD 不仅支持传统的 0 ∼ 8 0 \sim 8 08 字节报文,还可支持 12 12 12 16 16 16 20 20 20 24 24 24 32 32 32 48 48 48 64 64 64 字节的报文。

在这里插入图片描述

2.5 CRC 段

  • 为避免位填充对 CRC 的影响,CAN FD 在 CRC 场中增加了 stuff count 以记录填充位个数对 8 8 8 的模,并用格雷码表示,同时增加了奇偶校验位;且在 CRC 中加入了填充位 FSB(fixed stuff-bit)。

  • Stuff Count 由以下两个元素组成:

  1. 格雷码计算:对 CRC 区域之前的填充位数除以 8 8 8 得到的余数(Stuff bit count modulo 8)进行格雷码计算后得到的值(Bit 0-2);

  2. 奇偶校验(parity):对通过格雷码计算后的值进行偶校验。

  • CAN FD 对 CRC 算法进行了改进,CRC 计算中包含了填充位;在校验部分,为避免连续位超过 6 6 6 个,规定在第一位及之后 每 4 位添加一个填充位加以分割,该填充位的值为上一位的反码,作为格式检查。若填充位不是上一位的反码,则进行出错处理。

  • CAN 的 CRC 位数为 15 15 15 位,而 CAN FD 的 CRC 场扩展至 21 21 21 位,具体如下:

  • 当传输数据为 0 ∼ 8 0 \sim 8 08 字节时:CRC 15 位

  • 当传输数据为 9 ∼ 16 9 \sim 16 916 字节时:CRC 17 位

  • 当传输数据为 17 ∼ 64 17 \sim 64 1764 字节时:CRC 21 位

在这里插入图片描述

2.6 ACK 段

  • 与 CAN 相比,CAN FD 中最多可接受 2 2 2 个位时间有效的 ACK,允许额外 1 1 1 个位时间以补偿收发器相移和传播延迟。

  • 从高速的数据场切换至慢速的仲裁场时,时钟切换会引起收发器相移和总线传播延迟;为补偿该相移和延迟,CAN FD 相比传统 CAN 增加了这额外的 1 1 1 个位时间。

  • ACK 之后为 ACK 界定符,作为 ACK 结束的分隔符,由 1 1 1 位隐性位表示。

2.7 帧结束

  • 与 CAN 相同,CAN FD 的帧结尾为 连续 7 位的隐性位

3. 如何从传统的 CAN 升级到 CAN FD

  • 尽管 CAN FD 继承了传统 CAN 的绝大部分特性,但从传统 CAN 升级至 CAN FD 仍需完成多项工作,主要包括:
  1. 硬件和工具方面:使用 CAN FD 需选取支持 CAN FD 的 CAN 控制器和收发器,以及新的网络调试和监测工具;

  2. 网络兼容性方面:对于传统 CAN 网段中部分节点需升级至 CAN FD 的情况需特别注意。由于帧格式不一致,CAN FD 节点可正常收发传统 CAN 节点的报文,但传统 CAN 节点无法正常收发 CAN FD 节点的报文。


via:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值