OpenCyphal除了支持can 2.0 B,还支持canfd扩展协议。所以先学习下canfd协议。

文章目录

  • 1、CAN-FD协议特性
  • 2、CAN-FD帧结构分析

1、CAN-FD协议特性

随着电动汽车,无人驾驶汽车技术的快速发展,以及对汽车高级驾驶辅助系统和人机交互的增加,传统的CAN总线在传输速率和带宽等方面越来越显得力不从心,因此改进版的CAN总线应运而生。

普通can主要有以下几方面不足:

(1)最高数据传输速率限制为1 Mbit/s,车载领域实际使用速率最高为500 Kbit/s,无法满足越来越高的数据吞吐量需求;

(2)每帧报文有效数据场为8 字节,有效负载比率不足50%;

(3)性能上难以应对Flexray、Ethernet 等新型车载总线的威胁。

市场对提升CAN 总线性能的强烈需求使CAN-FD (CAN with Flexible Data rate)应运而生,CAN-FD发扬了CAN 的优点,并弥补了CAN 的不足,其主要特性如下:

(1)采用与CAN 通信相同的事件触发模式,软件容易开发和移植;

(2)最高数据传输速率达5Mbit/s,更好地满足要求高实时性高数据传输速率的应用;

(3)每帧报文有效数据场为64 字节,有效负载超过70%;

(4)相比Flexray、Ethernet 等新兴总线成本更低。

(5)CAN-FD标准向下兼容CAN2.0A/B标准,CAN-FD节点可以与现存的CAN2.0协议的节点进行通信,当然在这点情况下不能够使用CAN-FD帧。这种兼容性为了CAN2.0设备能够平滑地过渡到CAN-FD功能的硬件上。所以,我们对CAN-FD有了另一种说法,为“CAN3.0”。

CAN-FD比CAN总线的带宽更高,具有与CAN总线相似的控制器接口,这种相似性使ECU供应商不需要对ECU的软件部分做大规模修改,降低了开发难度和成本。CAN-FD是CAN总线的升级换代设计,它继承了CAN总线的主要特性,**提高了CAN总线的网络通信带宽,改善了错误帧漏检率,同时可以保持网络系统大部分软硬件特别是物理层不变。**CAN-FD协议充分利用CAN总线的保留位进行判断以及区分不同的帧格式。在现有车载网络中应用CAN-FD协议时,需要加入CAN-FD控制器,但是CAN-FD也可以参与到原来的CAN通信网络中,提高了网络系统的兼容性。

2、CAN-FD帧结构分析

canfd也分标准帧和扩展帧两种。

CAN-FD仅定义了数据帧,与传统CAN相比,取消了远程帧的支持。原因是在没有数据的情况下,远程帧没有必要改变数据段的比特率。
与CAN一样,数据帧分为“标准帧(11位ID)”和“扩展帧(29位ID)”格式。从BRS(Bit Rate Switch)到CRC分界符之间为可变速率。绿色表示与CAN的传输速度相同,黄色表示可加速传输速度。

标准帧

备注:r1,r0表示保留位,有些地方r1写为RRS,远程请求替代位。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3ybiwxA6-1646140900048)(/home/syrius/.config/Typora/typora-user-images/image-20220228153341987.png)]

**SOF(Start Of Frame)**帧起始

在SOF,CAN FD与CAN相同,仅有1bit的“显性”位。只有总线空闲时才允许节点发送信号,发送时,SOF将总线从隐性(1)改变为显性(0),所有节点必须同步于首先开始发送报文的节点的帧起始前沿。对于SOF的定义,CAN FD和CAN是相同的。

仲裁场

CAN FD的仲裁场是由Identifier识别符和RRS位构成。CAN FD 与 CAN 相同的地方是,都有Identifier识别符,可用于区别消息的同时又可以表示消息的优先级。不同的是,在CAN FD中使用的RRS位,而CAN中使用的是RTR位。

RRS位(Remote Request Substitution)远程请求替换位:即传统CAN中的RTR位

与传统CAN相比,CAN FD取消了对远程帧的支持,用RRS位替换了RTR位为常显性

控制场

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

IDE(Identifier Extension) 扩展帧标志:显性(0)=11位ID,隐性(1)=29位 ID。

FDF:对应原来can帧的保留位r,表示CAN报文还是CAN-FD报文。

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

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

DLC字段

DLC为data lenght content的缩写,用于表示DATA数据场的字节数。

CAN-FD一帧最多可以传输64个字节,因此DLC将重新定义CAN-FD的数据长度,值的范围将由原来的0000b1000b(覆盖8个字节)扩大至0000b1111b以满足需求,如图所示为DLC数值与字节数的对应关系。

在数据场长度为0-8个字节时,采用线性规则;数据场长度为12-64字节时,使用非线性编码。

位填充法

CRC校验场的第一位以及往后每间隔4位添加一个固定填充位。插入的填充位个数是经过格雷码计算转换后的值,并且用奇偶校验位保护(Stuff Count)。
在CRC校验场中,填充位被放置在固定的位位置,这称为固定填充位(Fixed Stuff Bit FSB)。固定填充位的值是上一位的反码。

CRC-stuff count

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

Stuff Count由以下两个元素组成:
格雷码计算:CRC区域之前的填充位数除以8,得到的余数(Stuff bit count modulo 8)进行格雷码计算得到的值(Bit0-2)
奇偶校验:通过格雷码计算后的值的奇偶校验(偶校验Bit3)

格雷码

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OQ2pYRYX-1646140900050)(/home/syrius/.config/Typora/typora-user-images/image-20220228151805903.png)]在CAN中,CRC的位数是15位,而在CAN FD中,CRC场扩展到了21位,详见以下:
当传输数据为16字节或更少时:CRC 17位
当传输数据超过16个字节时:CRC 21位

CRC界定符
CRC界定符是表示CRC校验场的结束,是一个1位的常态隐性位。但是,在CAN FD中,考虑到节点之间的位的距离,在接收端允许最大2位时间。CAN FD帧的数据场(可变速段)是CRC界定符的第一位采样点。

ACK应答场
CAN FD的ACK应答场包括应答间隙和应答界定符,其构成和CAN是相同的。不同的是,在CAN中,应答场的长度是1位,但在CAN FD,接收节点利用2位时间将其识别为有效应答。
由从高速的数据场到慢速的仲裁场时,时钟切换会引起收发器相移和总线传播延迟。为了补偿其相移和延迟,相比传统的CAN,在CAN FD中多加了这额外的1位时间。在ACK之后,发送ACK界定符。这是一个表示ACK结束的分隔符,为是1位隐性位。

帧结尾

每一个数据帧均由一标志序列界定,这个标志序列由7个“隐性”位组成。CAN FD的帧结尾与CAN相同

有关CRC的ISO CAN FD、non-ISO CAN FD兼容性问题
当前CAN FD协议有两个版本,为提高故障(错误)检测能力,新版本特别引入了一个3位填充位计数器和一个额外的奇偶校验位。此外,CRC计算方法也发生了变化。这些改进使最新的CAN FD协议与博世(BOSCH)开发的原始CAN FD协议不兼容。负责ISO的工作组已完成其文件,并已将其提交给DIS(国际标准草案)在进行投票程序。
为了避免误解,CiA建议使用术语“ISO CAN FD”和“non-ISO CAN FD”。所有符合ISO 11898-2:2015的产品都应称为“ISO CAN FD”。执行博世(BOSCH)原始CAN FD协议的产品应命名为“non-ISO CAN FD”,在这个过度阶段的产品主要目的是用于前期评估和开发,将来所有产品都将符合ISO标准。
请注意,早前一些供应商提供的组件或者工具是针对non-ISO CAN FD协议的,包括目前在售的部分CAN FD产品,CiA建议仅使用ISO CAN FD产品进行设计和开发,不过你可继续使用non-ISO CAN FD做评估和前期开发,因为协议的改变对于用户界面是不可见,但注意的是不能同一个网络混用non-ISO CAN FD和ISO CAN FD接口设备,这样会造成CAN总线错误无法完成发送和接收,如果仅仅是发送或接收传统的CAN帧将不会受到任何影响,幸运的是部分设备供应商提供的组件或者工具允许用户选择支持ISO或者non-ISO模式,这样能很好地在过渡时期帮助你完成工作。

CAN-FD保留了所有的CAN错误界定机制,包括错误帧、错误计数器、主动错误/被动错误状态等。

全网唯一OpenCyphal/UAVCAN教程(10)canfd协议详解相关推荐

  1. MQTT协议详解及开发教程(四)MQTT协议报文格式

    推荐一款稳定的基于C编写的MQTT Client开源库 cMQTT MQTT协议详解及开发教程(一)MQTT协议概述 MQTT协议详解及开发教程(二)MQTT服务器EMQx搭建 MQTT协议详解及开发 ...

  2. Nmap扫描教程之基础扫描详解

    Nmap扫描教程之基础扫描详解 Nmap扫描基础扫描 当用户对Nmap工具了解后,即可使用该工具实施扫描.通过上一章的介绍,用户可知Nmap工具可以分别对主机.端口.版本.操作系统等实施扫描.但是,在 ...

  3. HTTP协议详解 转自小坦克

    HTTP协议详解 转自小坦克 -- 有些文章是引用别人的,为了方便我以后或不再备注;引用目的是因为直接网摘里面的地址经常被重置,找不到原来的文章 当今web程序的开发技术真是百家争鸣,ASP.NET, ...

  4. nbns协议_网络协议详解1 - NBNS

    NetBIOS 简介 NetBIOS,Network Basic Input/Output System的缩写,一般指用于局域网通信的一套API,相关RFC文档包括 RFC 1001, RFC 100 ...

  5. TCP/IP协议详解---概述

    工作之后,才发现以前在学校里学的东西忘得太快太干净了,现在需要一点点地捡起来了,要不然写几行程序会闹很多笑话会出现很多bug的.从今天开始,翻一翻<TCP/IP协议详解 卷1>这本书,希望 ...

  6. IoT:MQTT协议详解

    IoT -- (七)MQTT协议详解 转自:https://blog.csdn.net/anxianfeng55555/article/details/80908795 MQTT是什么? MQTT(M ...

  7. modbus通讯协议详解

    1.Modbus协议简介 Modbus协议是一种广泛应用于当今工业控制领域的通用通信协议.通过此协议,控制器相互之间.或者控制器经由网路(如以太网)可以和其他设备之间进行通信.Modbus协议使用的是 ...

  8. 《TCP IP协议 详解》思考总结 · 三

    前言 这一篇文章主要围绕了IP协议,ICMP协议和UDP协议展开,希望可以在这里大概做一个总结,将<TCP/IP协议详解 卷一>书中TCP相关章节前面的内容做一个结束,在下一篇文章专心的去 ...

  9. MQTT协议详解 三、MQTT控制包(CONNECT)

    文章目录 系列文章目录 前言 CONNECT(客户端请求连接服务端) 一.固定包头(2字节) 二.可变包头(10字节) 协议名字(6字节) 协议等级(1字节) 连接标识(1字节) Clean Sess ...

最新文章

  1. IJCAI 2021 | 医学AI新坑:心电全景图及其生成网络
  2. 周星驰的10个华人记录
  3. (转)PHP5使用cookie时报错 cannot modify header information - headers already sent by (......)
  4. 【剑仙教程】易语言的结构体。自定义数据类型。
  5. Java连接MySQL数据库 报错
  6. SQLite 简介(http://www.w3cschool.cc/sqlite/sqlite-intro.html)
  7. 7-15 QQ帐户的申请与登陆 (25 分)(map做法+思路分析)
  8. oracle什么是重复组,规范化:“重复组”是什么意思?
  9. 消息传递的图神经网络
  10. ARM 编译 phddns
  11. js头像裁剪实现——canvas+Jcrop+jQuery
  12. 麦腾股份正式挂牌新三板,创业孵化市场或将深度洗牌
  13. 世界坐标系、相机坐标系和图像坐标系的转换
  14. python输出excel指定列为文本格式_POI设置excel某列值为文本格式
  15. 断章·贵鬼篇·白羊妇语
  16. Mybatis-Plus配置和使用
  17. 策略岗、分析岗、模型岗,在不同机构的组织架构是怎样的?
  18. 微型博客网站Twitter打假
  19. 数字IC面试手撕代码(一)
  20. c++ 旅行家的预算

热门文章

  1. WAP Push SP接口协议
  2. 71java并发编程不得不知道的几件事
  3. 使用windows钩子捕获进程的启动和关闭消息
  4. 使用openCV进行视频人脸识别
  5. SQL高级查询案例讲解与分析
  6. 使用AlphaBlend函数实现位图半透明绘制
  7. (二)对图像进行预处理(灰度化,二值化)
  8. matlab矩阵旋转
  9. 微信授权时遇到48001的问题
  10. 微信小程序获取openid等参数报错errcode:48001 errmsg:'api unauthorized'