CAN_FD和CAN2.0的不同点——深入浅出理解CAN协议(二)

本系列是在同公司硬件设计和验证同事,1、在完成了CANFD硬件接口IP开发 2、熟悉ISO-11898系列、ISO16845、CAN2.0协议、CANFD协议等以及大量学习资料 3、深入研究其他家CANFD IP(NXP、BOSCH)4、独立开发了对应底层驱动 5、通过CANoe和周立功CAN分析仪完成前述各协议要求的场景 6、以及对autosar底层接口适配后,基本上对CAN协议有了深入的理解。将过程中整理了一些文档分享出来,希望能给新入门和从业多年的相关工程师提供一点点帮助。
主要包含CAN2.0及CANFD协议,后面对CAN2.0及CANFD的不同点做些说明。

  • 可作为入门CAN协议
  • 另外也有深入硬件的理解,从业多年软件工程师也可以学习一二
  • 亦可作为后续查阅使用,常看常新嘛。

CAN(-FD)协议介绍—— 深入浅出理解CAN协议(一)
CAN_FD和CAN2.0的不同点——深入浅出理解CAN协议(二)

0 简介

直接来看CAN2.0和CANFD,CANFD是在链路层对CAN协议做了升级,物理层并未改变;区别从宏观上来说:帧格式、传输速度和数据长度等上有不同。

  1. 帧类型上CAN2.0支持远程帧,而CANFD不支持(实际使用下来,bosch、nxp家的CANFD是可以支持远程帧收发的,这里应该是应用层做了限制不让发送远程帧);帧格式会在下面第一节详细说明
  2. 传输速度:CAN2.0最大传输速率为1Mbps;CANFD仲裁比特率最高1Mbps,数据比特率最高8Mbps
  3. 传输数据长度:CAN2.0最大DLC=8 bytes;CANFD最大DLC=64 bytes

网上大部分文章都是针对这些的表象和特点在说明,都是软件使用时直接可以看到的,对大部分软件从业人员基本覆盖很全了,我将深入的介绍细节,让软件使用者也有更深的理解;另外对硬件设计也有一点参考。
抛砖引玉,如有更多见解,评论区一起讨论。

1 帧格式Frame structure

在这里插入图片描述

  1. 帧头SOF
  2. 仲裁域
    11bit ID + RTR,canfd不支持remote帧,RTR为reserved
  3. 控制域
    除了IDE、r0和dlc字段,canfd还多了EDL、BRS以及ESI
ABBR英文全拼作用
EDLEXTENDED DATA LENGTHCanfd,区分can和canfd帧
BRSBIT RATE SWITCHCanfd,指示canfd是否变速
ESIERROR STATE INDICATORCanfd,指示发送canfd的错误状态
  1. 数据域
    用户希望发送的数据,经典can支持一次传输0-8bytes的数据,canfd支持一次传输0-64bytes数据
  2. 检查循环冗余序列(CRC)+ DEL
    • 经典can通过15bit的CRC来校验数据,DEL为delimiter,即CRC delimiter
    • canfd的crc算法为crc-17,crc-21,其中dlc>=20时,采用crc-21,dlc<20时,采用crc17
  3. ack域
    包含1bit的ack slot和1bit的ack delimiter。
  4. 帧尾(EOF)
    通过连续7bit的隐性位来表示
  5. IFS
    inter-frame space

Note:
1、对于29bit的扩展帧,标准can和canfd是类似的。

2 CRC 计算

一般软件人员对这块不用深入,只需简单了解即可
在这里插入图片描述

2.1. crc多项式

  • CRC_15,用于经典CAN格式的所有帧。
    在这里插入图片描述

  • CRC_17,用于CANFD帧,数据字段最多16字字节。
    在这里插入图片描述

  • CRC_21,用于CANFD帧且数据字段大于16的CAN帧字节。在这里插入图片描述

2.2. fix stuff bit

  • 在crc多项式发送时,每隔4bit插入1bit的fix stuff bit(该bit和前面bit相反)
  • crc15不会插入fix stuff bit,crc-17和crc-21会按照上面原则插入
  • fix stuff bit不会参与crc计算

2.3. stuff cnt

crc-17和crc-21的crc字段中包含stuff count字段,该字段是sof-data中包含的stuff bit模8后根据规则生成gray-code(格雷码有兴趣可以自行搜索学习下,标准格雷码参考下图)
例如上图crc-21前面stuff bit共14个,14%8 = 6,所以gray-code为101,根据规则末尾补0
在这里插入图片描述

2.4. stuff bit

在crc-15时,sof-data中stuff bit不参与计算;而crc-17和crc-21需要参与计算

2.5. ISO模式和bosch模式

博世在设计协议时做了一个bosch模式;区别在于:
- bosch模式stuff count是不参与crc计算的(图示逻辑分析仪解码错误,不用在意)
- crc初始值(0x00000)和ISO模式(0x10000)不一样,
crc是由硬件来实现,软件不用关心那么细节,只需要收发时配置一致(见到的大部分的CANFD的硬件都支持配置bosch模式)就可以了。(下图是bosch)
在这里插入图片描述

3 Ack field

Ack filed包括ACK SLOT and the ACK DELIMITER.
在CAN FD格式中,所有节点应接受2 bit的重叠ACK位主导相位作为有效ACK,以补偿接收器之间的相位差;在CAN格式中,所有节点只能接受一个1bit的ack slot。
这也就是说在CAN格式中如果ack delimiter为显性,则控制器会产生form err,而CANFD格式则正常。

4 变速bit timing

canfd是支持变速的,即在数据段支持以更快的速率传输数据;这里就涉及一个问题,就是什么时间变速,以及变速bit的处理。
如下图:

  • 变速阶段从BRS开始到CRC-delimiter结束
  • BRS bit的bit timing :Sync+seg1(N)+seg2(D)
  • CRC-delimiter的bit timing:Sync+seg1(D)+seg2(N)
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1538068.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Java Web服务运行一段时间后出现cpu升高导致的性能下降问题排查

背景 有个web服务&#xff0c;运行一段时间后&#xff0c;出现cpu逐渐占用高&#xff0c;服务处理请求整体性能下降问题。 异常情况时&#xff0c; 同时jvm的cpu上涨 最终表现为&#xff0c;处理内部逻辑执行耗时变高。 排查原因 原来服务的jvm启动参数带了 -XX:-TieredCom…

rocky9虚拟机配置双网卡的详细过程

编辑虚拟机配置->添加->选择网络适配器->确认->打开虚拟机 1.ip add查看第二个网卡的名称&#xff0c;我这里是ens36 2.cd到网卡的配置文件目录 cd /etc/NetworkManager/system-connections/ ls3.复制一份网卡的配置文件并改名为ens36.nmconnection(根据自己的第…

5V全桥驱动芯片单通道可替代型号LG9110S,应用于牙刷,电子锁,共享单车锁等产品中具有过温保护功能

芯片描述&#xff1a; GC9110 是一款低压 5V 全桥驱动芯片&#xff0c;为摄像机、消费类产品、玩具和其他低压或者电池供电的运动控制类应用提供了集成的电机驱动解决方案。GC9110 能提供高达 1.3A 的持续输出电流。可以工作在 2~6V 的电源电压上。GC9110 具有 PWM&#xff08;…

香橙派zero2w上手——环境配置添加OLED小屏幕

0 硬件参数 origin pi zero2W 硬件参数 CPU全志 H618 四核 64 位 1.5GHz Cortex-A53 处理器GPUMali G31 MP2&#xff0c;支持OpenGL ES 1.0/2.0/3.2&#xff0c;OpenCL 2.0&#xff0c;Vulkan 1.1内存LPDDR4:1GB/1.5GB/2GB/4GB (可选)存储SPI Flash: 16MBWiFi蓝牙WiFi蓝牙二合…

mysql时间戳格式化yyyy-mm-dd

格式化到 年月日 # 将时间换成列名就行&#xff1b;当前是秒级时间戳&#xff0c;如果是毫秒的 / 1000即可 # SELECT FROM_UNIXTIME(1602668106666.777888999 / 1000,%Y-%m-%d) AS a; # SELECT FROM_UNIXTIME(列名 / 1000,%Y-%m-%d) AS a; SELECT FROM_UNIXTIME(1602668106.666…

办公生产力工具 职场打工人早下班宝藏神器推荐

当你外出时&#xff0c;电脑不在身边&#xff0c;但需要处理文件怎么办&#xff1f;这时&#xff0c;你需要一个提高办公生产力工具。网易GameViewer远程控制软件可以帮助你轻松实现这一目标&#xff0c;简直是职场打工人早下班宝藏神器。 GameViewer远程可以一键直连无需复杂配…

光控资本:美股,又新高!比特币也大涨!静待“关键时刻”

隔夜道指、标普500指数盘中再创新高后&#xff0c;日股开盘也体现强势。 当地时刻9月17日&#xff0c;美股三大指数收盘涨跌纷歧&#xff0c;标普500指数和道指盘中创新高后底子收平。中概股体现亮眼&#xff0c;纳斯达克我国金龙指数收涨1.83%&#xff0c;盘中一度涨超2.7%。…

Doris docker 安装

Doris docker 安装 安装地址 1. 操作系统配置初始化 1.1. 配置 vm.max_map_count sudo vim /etc/sysctl.conf追加以下配置&#xff1a; vm.max_map_count20000001.2. 关闭swap vim /etc/fstab注释配置如下&#xff1a; # /dev/mapper/centos-swap swap …

分布式锁总结1 - 为什么需要分布式锁?

目录 1. 最基本的业务逻辑是&#xff1a; 2. 高并发场景下常见的缓存问题 2.1问题一 缓存穿透 : 一直查询不存在的数据 解决方案 : 短暂缓存null结果 2.2 问题二 缓存雪崩 : 大量key同时过期大量请求直击数据库 解决方案 : 在原有的过期时间上加一个随机的值&#xff0c;…

Vue 自定义指令实战

引言 Vue自定义指令是Vue.js框架中强大而灵活的功能之一&#xff0c;它允许开发者根据具体需求创建自定义的指令&#xff0c;以实现更加精细化的交互和数据绑定效果。本文将带你深入探索Vue自定义指令的使用方法、原理和实战&#xff0c;为你打开前端开发的新视野。 我们前面…

推荐10款知名的供应链管理系统,为企业选型提供参考!

本文将盘点十款供应链管理系统&#xff0c;为企业选型提供参考&#xff01; 想象一下&#xff0c;一家企业在生产和销售产品的过程中&#xff0c;原材料供应不及时、库存积压严重、物流配送混乱。这时&#xff0c;供应链管理系统就如同一位高效的指挥家&#xff0c;将各个环节紧…

汽车EDI:MöllerTech EDI项目案例

MllerTech &#xff08;以下简称 Mller&#xff09;是一家德国的家族企业&#xff0c;成立于1730年&#xff0c;主要从事塑料和橡胶领域的生产和加工。公司以其在汽车工业、电子设备和机械制造等行业的解决方案而闻名&#xff0c;尤其是在汽车部件、密封件和工业用途的高性能塑…

进程的知识

进程知识 1.进程和程序的区别: 程序是静态的&#xff0c;它是保存在磁盘上的指令的有序集合&#xff0c;没有任何执行的概念进程是一个动态的概念&#xff0c;它是程序执行的过程&#xff0c;包括了动态创建、调度和销毁的整个过程 2.进程的执行方式&#xff1a; 并行执行 :…

彻底解决找不到msvcr100dll,无法继续执行代码的5个方法

MSVCR100.dll文件的丢失可能会引发一系列系统运行和应用程序功能上的问题。作为Microsoft Visual C运行库中的一个关键动态链接库文件&#xff0c;它的缺失会导致依赖于此文件的软件无法正常启动或执行预期功能。具体表现可能包括但不限于&#xff1a;应用程序崩溃、闪退&#…

SAP B1 营销单据 - 单据字段介绍(下)

背景 营销单据&#xff0c;SAP B1 中一群神秘的单据&#xff0c;在官方说明文档中并未指明【营销单据】范围&#xff0c;却经常使用这一说法。它们结构相似&#xff0c;在 用户定义字段(UDF) 功能里统一受【营销单据】部分增加字段的影响&#xff0c;可以相互复制&#xff08;…

企语iFair-协同管理系统-任意文件读取

文章目录 免责申明漏洞描述搜索语法漏洞复现yaml修复建议 免责申明 本文章仅供学习与交流&#xff0c;请勿用于非法用途&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任 漏洞描述 企语iFair协同管理系统getuploadimage.jsp接口处存在任意文件读取漏洞…

媒体购买指南:是什么以及如何开始

媒体购买是几乎任何企业都非常重要的一个过程&#xff0c;其中包括付费的网络广告、电视广告、音频广告、户外广告等&#xff0c;这些都是许多多渠道营销策略中的重要组成部分。然而&#xff0c;线上和线下广告远非简单之事&#xff0c;尤其是数字广告&#xff0c;随着各种平台…

LED智慧一体机已成为高端超微小间距COB显示领域的风向标

​LED智慧一体机成为推动智能会议、高效办公与教育创新的强大引擎。本文将深入剖析晶锐创显LED智慧一体机的技术革新、功能集成、应用场景以及其对未来显示技术发展的深远影响。 1、技术革新&#xff1a;COB超高清显示技术的璀璨绽放 LED智慧一体机之所以能在众多显示产品中脱…

深入探究HTTP网络协议栈:互联网通信的基石

在我们日常使用互联网的过程中&#xff0c;HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;扮演着至关重要的角色。无论是浏览网页、下载文件&#xff0c;还是进行在线购物&#xff0c;HTTP协议都在背后默默地支持着这些操作。今天&#x…

DNS和ICMP

DNS DNS&#xff08;Domain Name System &#xff09; DNS 是一整套从域名映射到 IP 的系统 关于DNS背景 TCP/IP 中使用 IP 地址和端口号来确定网络上的一台主机的一个程序 . 但是 IP 地址不 方便记忆 . 于是人们发明了一种叫主机名的东西 , 是一个字符串 , 并且…