CAN-FD基础概述

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: CAN-FD基础概述

1 概述

随着电动汽车,无人驾驶汽车技术的快速发展,以及对汽车高级驾驶辅助系统和人机交互的增加,传统的CAN总线在传输速率带宽等方面越来越显得力不从心,因此改进版的CAN总线应运而生。从2012年第13届ICC大会上发布,到2015年提交国际标准化ISO 11898系列,CAN FD(CAN with Flexible Data rate)正在步入快速的发展时期。

速度与稳定两者得兼

  相比“传统”的CAN协议,CAN FD具有两大优势:

  1、 CAN FD采用可变速率,最高速率可达10Mb/s,而传统的CAN协议只有1Mb/s;

  2、 能够支持更高的负载,在单个数据框架内传送率可达64字节,避免了经常发生的数据分裂状况。

  CAN-FD标准将CAN报文的数据段可提升到更高的位速度,其中可提升通信速率的数据段包括两个控制位、数据长度位,数据位以及CRC校验位。CAN-FD报文通信时,在仲裁段和紧接着的数据控制段都是使用标准的通信波特率,当来到数据段时,CAN-FD总线的通信波特率就会切换到更高的通信波特率。此时在CAN总线上只有一个CAN节点传输,其他节点进入监听模式。当这个数据段传送完毕后,通信波特率又重新切换到标准模式下。

  CAN-FD通信时经常会使用到两种通信波特率,因此对“FD”解释为(灵活的数据速率)“Flexible Data rate”

  另一个CAN-FD新的功能是减少控制位的开销。目前CAN2.0标准最大8个字节的数据,CAN-FD数据位最大的字节数提高至64位,CAN-FD具有更高的有效传输负载。例如:CAN-FD总线以2Mbit/s的速率、64位数据与CAN 250Kbit/s、8位数据传输对比,很明显在相同时间下,CAN-FD的有效传输负载是CAN传输负载的8倍。CAN-FD标准向下兼容CAN2.0A/B标准,CAN-FD节点可以与现存的CAN2.0协议的节点进行通信,当然在这点情况下不能够使用CAN-FD帧。这种兼容性为了CAN2.0设备能够平滑地过渡到CAN-FD功能的硬件上。所以,我们对CAN-FD有了另一种说法,为“CAN3.0”。

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

CAN与CAN-FD主要区别:传输速率不同、数据长度不同、帧格式不同、ID长度不同。

2 传输速率不同

CAN:最大传输速率1Mbps。

CAN-FD:速率可变,仲裁比特率最高1Mbps(与CAN相同),数据比特率最高8Mbps,CAN-FD的传输格式如下图所示。

c5e9e428f61e7e1aa53d64f788e5fc36_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

3 数据长度不同

CAN:一帧数据最长8字节

CAN-FD:一帧数据最长64字节。

4 帧格式不同

CAN-FD新增了FDF、BRS、ESI位。

FDF:表示CAN报文还是CAN-FD报文。

BRS:表示位速率转换,该位隐性时,速率可变(即BSR到CRC使用转换速率传输),该位为显性时,以正常的CAN-FD总线速率传输(恒定速率)。CAN FD采用了两种位速率:从控制场中的BRS位到ACK场之前(含CRC分界符)为可变速率,其余部分为原CAN总线用的速率,即仲裁段和数据控制段使用标准的通信波特率,而数据传输段时就会切换到更高的通信波特率,数据传输速率可大于。两种速率各有一套位时间定义寄存器,它们除了采用不同的位时间单位TQ外,位时间各段的分配比例也可不同。

ESI:表示发送节点状态。

63ff81c2a9f65d458f51048a3ea932d1_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

5 ID长度不同

CAN标准帧ID长度最长11bit。

CAN-FD标准帧ID长度可扩展到12bit。

6 CRC-stuff count

CAN FD还在安全性上有了提高。为了避免位填充对CRC的影响,CAN FD在CRC场中增加了stuff count记录填充位的个数对应8的模,并用Grey Code表示(图48),还增加了奇偶校验位。FSB(fixed stuff-bit)固定为前一位的补码。

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

格雷码计算:CRC区域之前的填充位数除以8,得到的余数(Stuff bit count modulo 8)进行格雷码计算得到的值(Bit0-2)

奇偶校验:通过格雷码计算后的值的奇偶校验(偶校验)

9a28d4a62be0db9e633ec95d205ffe76_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

c1b4e83c8f1d40c58ef09d94095e6391_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

2276f4b6036c53b8d1a2273d853dc99c_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

图48 CAN FD中的stuff count

7 CRC

随着数据场的扩大,为了保证信息发送的质量,CAN FD的CRC计算不仅要包括数据段的位,还包括来自SOF的Stuff Count和填充位。通过比较CRC的计算结果,可以判断接收节点是否能够正常接收。

在CAN中,CRC的位数是15位,而在CAN FD中,CRC场扩展到了21位,详见以下:

Ø 当传输数据为16字节或更少时:CRC 17位

Ø 当传输数据超过16个字节时:CRC 21位

33a6886d3a2cdbe4fe48992ba6323140_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

8.位填充法

与CAN一样,填充位插入到SOF和数据场的末尾之间。插入的填充位数值是经过格雷码计算转换后的值,并且用奇偶校验位保护(Stuff Count)。

在CRC校验场中,填充位被放置在固定的位位置,这称为固定填充位(Fixed Stuff Bit FSB)。固定填充位的值是上一位的反码。

Ø CRC校验场的第一位

Ø 每间隔4位添加一个固定填充位

9f11e46db7b6745518a32c181eb0afd2_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

9.波形实例

本实例使用 Kingst LA5016 usb 逻辑分析仪检测CAN FD数据通讯。LA5016的CAN FD解析模块,不仅可以解析CAN FD协议,同时也兼容CAN协议解析,以下几图是一个完整的数据包分析截图。从图中可以看到,CAN FD协议可以区分CAN FD及CAN协议,CAN FD协议将协议数据分析为 ID(协议id号), ExternId(扩展id), DLC(数据长度),Data(传输数据), StuffCount,CRC, ACK/NAK 。

协议解析参数设置:

b427dd2797c99658fc7048309cb98740_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

图1数据包的ID号为0x010, RTR:false(数据帧), DLC:0x8(8个数据),Data:0x00~0x07,CRC为0x0C5E7(17位), ACK:应答。

圆形白点:逻辑数据。

方形白点:填充位。

95dbb606773613f84d1c7a967009cd74_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

54811173e7062a908c8d96be574e9136_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

9f8b0c8f321266b3b7708a589e8c56fd_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

相关文章
|
6月前
|
SQL 开发框架 数据可视化
企业应用开发中.NET EF常用哪种模式?
企业应用开发中.NET EF常用哪种模式?
107 5
|
6月前
|
监控 网络协议 安全
socket开发遇到的问题及注意事项实战
socket开发遇到的问题及注意事项实战
89 1
|
3月前
|
运维 Rust 监控
Linux高效运维必备:fd命令深度解析,文件描述符管理从此得心应手!
【8月更文挑战第23天】本文介绍了一款名为fd的命令行工具,该工具基于Rust语言开发,旨在以更直观的语法和更快的速度替代传统的`find`命令。通过本文,您可以了解到如何安装fd以及一些基本用法示例,比如使用正则表达式匹配文件名、排除特定目录等。此外,文章还展示了如何结合`ps`和`lsof`命令来查找特定文件并显示其文件描述符,从而帮助您更好地管理和监控Linux系统中的文件与进程。
133 0
|
存储 Java Linux
【Linux】基础IO --- 系统级文件接口、文件描述符表、文件控制块、fd分配规则、重定向…
【Linux】基础IO --- 系统级文件接口、文件描述符表、文件控制块、fd分配规则、重定向…
|
索引
UVC 基础学习(3):基础描述符介绍
UVC 基础学习(3):基础描述符介绍
574 0
系统编程之高级文件IO(十一)——获取设置文件属性(fcntl、ioctl)
系统编程之高级文件IO(十一)——获取设置文件属性(fcntl、ioctl)
115 0
系统编程之高级文件IO(十一)——获取设置文件属性(fcntl、ioctl)
标准IO函数---扩展练习知识点2
标准IO函数---扩展练习知识点2
74 0
|
物联网 Linux 开发者
文件描述符概述|学习笔记
快速学习文件描述符概述
|
XML SQL JSON
自己使用的一个.NET轻量开发结构
三个文件夹,第一个是放置前端部分,第二个是各种支持的类文件,第三个是单元测试文件。
自己使用的一个.NET轻量开发结构