CAN Frame详解

news2024/11/28 12:53:37

CAN Frame是CAN总线通信的基本单位,它有多种类型,其中最常见的是数据帧(Data Frame),用于传输数据。数据帧有标准格式(Standard Format)和扩展格式(Extended Format),它们的字段如下:

  • 标准格式的数据帧有七个字段,分别是:

    • (1).帧起始(Start Of Frame-SOF),1 bits,显性信号,表示数据帧的开始 。
    • (2).仲裁段(Arbitration Field-ARB Field),13 bits,包括标识符位(Identifier field-ID),12 bits,用于表示数据帧的优先级和功能地址 ;远程发送请求位(Remote Transfer Request-RTR),1 bit,用于区分数据帧和远程帧 。
    • (3).控制段(Control Field-CTRL Field),7 bits,包括扩展标识符位(Identifier Extension bit-IDE),1 bit,用于表示该帧是标准格式还是扩展格式 ;FDF event type是指CAN FD帧中的FDF bit(FD帧格式)的值,用于区分经典CAN帧和CAN FD帧。FDF event type有两种可能,分别是:
    • FDF = 显性信号(0),表示该帧是经典CAN帧,使用标准的数据段长度和比特率12。
    • FDF = 隐性信号(1),表示该帧是CAN FD帧,可以使用更长的数据段长度和更高的比特率
    • FDF event type的作用是让节点可以识别不同的帧格式,从而支持经典CAN和CAN FD的混合网络。CAN FD帧可以传输更高的速率和更长的数据段,提高了网络的效率和性能;数据长度编码位(Data Length Code-DLC),5 bits,用于表示该帧实际发送的数据的长度 。

    • (4).数据段(Data Field-DATA Field),77个 bits,用于发送数据的内容 。
    • (5).循环校验段(CRC Field),18 bits(这个长度不确定的),包括循环校验序列(CRC Sequence),17 bits,用于校验传输是否正确 ;界定符(Delimiter-DEL),1 bit,隐性信号,表示循环校验序列的结束 。
    • (6).确认段(ACK Field),2 bits,包括确认位(ACK SLOT),1 bit,用于表示是否正常接收 ;界定符(Delimiter-DEL),1 bit,隐性信号 。
    • 帧结束(End of Frame-EOF),7 bits,隐性信号,表示帧的结束 。
  • 扩展格式的数据帧与标准格式的数据帧相比,在仲裁段和控制段有所不同:

    • 仲裁段(Arbitration Field),32 bits,包括基本标识符位(Base identifier-Base ID),11 bits,与标准格式的标识符相同 ;替代远程请求位(Substitute Remote Request Bit-SRR),1 bit,隐性信号 ;扩展位(Identifier Extension Bit-IDEA),18 bits,用于扩展标识符的长度 ;远程发送请求位(Remote Transfer Request-RTR),1 bit,与标准格式相同 。
    • 控制段(Control Field),6 bits,包括保留位0和保留位1(Reseved bit0-r0 and Reseved bit1-r1),2 bits,保留,以后使用 ; 数据长度编码位(Data Length Code-DLC),4 bits,与标准格式相同

其余字段与标准格式相同。

CAN frame中,IFS和Stuff Bits是两个不同的概念,它们的作用和占用的位数如下:

  • IFS(帧间隔)是指在两个连续的CAN frame之间的空闲时间,用于让控制器处理接收到的帧或准备发送下一个帧。IFS由7个隐性信号(recessive bit)组成,占用7 bits。IFS是CAN协议中规定的必要字段,用于保证帧之间的同步和分离
  • Stuff Bits(填充位)是指在CAN frame中,为了防止误判帧起始或帧结束,而在数据段和CRC段中插入的额外的位。Stuff Bits的规则是:如果在ARB,CTRL,DATA,CRC段中出现了连续5个相同的位(显性信号或隐性信号),则在这5个位后面插入一个与之相反的位。Stuff Bits不占用固定的位数,而是根据数据段和CRC段中的位模式动态变化。Stuff Bits的作用是保证数据传输的可靠性和正确性

下图中的黄色bit为stuff bits,有17个stuff bits

 下图中的黄色bit为stuff bits,有15个stuff bits

 

CAN Frame中的显性信号和隐性信号是指CAN总线上的两种电平状态,用于表示逻辑0和逻辑1。显性信号是指CAN_H和CAN_L的电压差为2V,用0表示;隐性信号是指CAN_H和CAN_L的电压差为0V,用1表示

例如,如果一个CAN Frame的仲裁段为00000000000(标准格式),那么在CAN总线上,它会表现为11个显性信号,即CAN_H和CAN_L的电压差为2V的状态。如果一个CAN Frame的数据段为10101010(一个字节),那么在CAN总线上,它会表现为交替的显性信号和隐性信号,即CAN_H和CAN_L的电压差为2V或0V的状态

 

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

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

相关文章

redhat 6.4安装oracle11g RAC (一)

(一)基础环境 虚拟机环境 :vmware workstation 12 操作系统 : redhat6.4 - 64bit 数据库版本 :11.2.0.4 Last login: Fri Jun 16 18:40:20 2023 from 192.168.186.1 [rootrhel64 ~]# cat /etc/redhat-release Red Ha…

项目描述1

学成在线- 6分片上传,8xxl-job 课程模块开发 分布式事务,消息表 spring-security oauth 用户认证授权 学成在线 学成在线认证授权 一些代码 黑马分布式事物 框架学习 - 若依 / RuoYi-Vue-Plus 统一数据权限 若依数据权限使用 数据权限表结构 1. 设备故…

音视频技术开发周刊 | 298

每周一期,纵览音视频技术领域的干货。 新闻投稿:contributelivevideostack.com。 AI艺术在北京798,展望人工智能与环境的未来 本文很有意思的提出了个假设,通过人工智能和艺术家协作与实践产生环绕地球的叙事,去开启置…

【事故致因】HFACS模型各层级中因素的具体含义及内容归纳

HFACS模型各层级中因素的具体含义及内容归纳 1 HFACS(2000版本)中英文结构图2 定义3 结构组成4 各层级因素及内容4.1 不安全行为4.2 不安全行为的前提条件4.3 不安全监督4.4 组织影响 5 HFACS框架的使用 1 HFACS(2000版本)中英文结构图 英文版本(论文首次提出原图&…

接口测试基础知识(使用 Fiddler 抓包、使用 Postman 发起请求、Postman汉化教程)

文章目录 一、 什么是接口二、接口测试的流程三、设计接口测试测试用例常见的点四、使用 Fiddler 进行抓包1. 一个重要设置2. 进行抓包 五、使用 Postman 发起 GET 请求1. 通过API文档得到调用信息2. 通过 Postman 构造 GET 请求 六、使用 Postman 发起 POST 请求1. 得到接口调…

机器学习——朴素贝叶斯(手动代码实现)

朴素的我,决定朴素地徒手实现贝叶斯算法! 摒弃sklearn 这个体贴善解人意把一切都打包封装好的妈妈 再见了sklearn 妈妈 我要自己手动实现 哪怕前方困难重重 哪怕我此刻还在发牢骚 但我还是要说,撒哟娜拉sklearn妈 看了知乎阿婆主的分析&#…

在 Maya、ZBrush 和 Substance 3D 中创建女枪手(P2)

今天瑞云渲染小编给大家带来了Ivan Lim 的Female Gunslinger 项目的细目,讨论了他在 Think Tank 的教育过程,并解释了他为什么选择虚幻引擎来呈现这个角色。这篇接着上篇继续拓扑UV、灯光材质、渲染等方面的分享 头发 我开始用一个块来处理头发&#xf…

看看人家那高并发秒杀系统,那叫一个优雅

618,大家剁手了么? 说起618,就不得不提其中较为复杂的秒杀环节了。虽说秒杀只是一个促销活动,但对技术要求不低。 秒杀作为618、双十一等电商活动不可缺少的一环,是一个非常典型的活动场景。秒杀场景的业务特点是限时…

并发知识学习

aqs中有2个队列,一个是同步队列,另外一个是条件队列简单记住:独占没有朋友,所以是null。共享就有朋友,所以是固定的node对象。nextWaiter就是表示节点的模式,在条件队列中指向下一个节点。 一个想要去获取锁…

车载测试范例,如何进行ADAS执行器性能测测试?

概述 执行器性能分为横向性能和纵向性能,横向性能主要指方向盘转向的响应性能,纵向主要包括油门加速性能及刹车减速性能。其中横向性能在ADAS中涉及的功能包括LKA、LDW,跟纵向加/减速性能相关的功能主要是ACC(自适应巡航&#xf…

C++数据结构【树状数组】

​ 树状数组 什么是树状数组?树状数组和线段树的区别 树状数组的结构什么是lowbitlowbit如何计算代码实现:补充知识——&,|,^运算&|^注意: 树状数组的基本操作单点修改while循环版代码for循环版代码 单点查询区…

pytest生成 junit-xml 测试报告

pytest 生成junit-xml 测试报告,那么生成的xml报告有什么用呢?可以集合一些持续集成工具(如jenkins…等)方便查看报告。 junit-xml 测试报告 命令行参数有2个跟 junit-xml 报告相关的参数 --junit-xmlpath create junit-xm…

2023年软件测试——精选金融银行面试真题

1、P2P你们也测试后台管理吗?个人芝麻信用积分是调取哪里的资料? 测试后台管理: 后台也测,但是我主要测试前台,我的关注点是前台,后台只是拿来用,能配合前台正常走完流程就行。 后台主要对前…

Linux线程同步(下)

文章目录 1. POSIX信号量2. 基于环形队列的生产消费模型2.1 代码实现2.1.1 构造函数和析构函数2.1.2 生产和消费2.1.3 测试 3. 线程池3.1 成员变量3.2 构造和析构3.3 push和pop3.4 启动线程池3.5 测试 4. 将线程池改成单例模式5. STL、智能指针和线程安全6. 其他常见的各种锁6.…

聊聊测试驱动开发

这是鼎叔的第六十四篇原创文章。行业大牛和刚毕业的小白,都可以进来聊聊。 欢迎关注本专栏和微信公众号《敏捷测试转型》,星标收藏,大量原创思考文章陆续推出。 本文观点参考自Lasse Koskela,他是《测试驱动开发的艺术》的作者。…

软件测试之【单元测试、系统测试、集成测试】

一、单元测试的概念 单元测试(Unit Testing)是对软件基本组成单元进行的测试,如函数(function或procedure)或一个类的方法(method)。当然这里的基本单元不仅仅指的是一个函数或者方法&#xff0…

揭秘跨部门沟通的秘密武器:让不归你管的人主动配合你的绝妙方法!

跨部门沟通,Edge对此有点胆怯:“我们自己内部进度,怎么着都好管。都是自己人,目标一致。可涉及跨部门合作,管起来就困难。人家又不归我们管,不可控因素太多了。如果在合作的过程中,出现啥问题&a…

docker 镜像结构原理

目录 参考文档:第八篇:Docker镜像结构原理_Linux运维开发的技术博客_51CTO博客 1、基础镜像 base base 镜像有两层含义: 为什么我们的镜像文件比一般的软件小一些呢? 二、镜像的分层结构 问什么 Docker 镜像要采用这种分层结…

org.yaml.snakeyaml.parser.ParserException: while parsing a block mapping

一、yml解析异常问题 今天启动某开源项目时,碰到一个问题org.yaml.snakeyaml.parser.ParserException: while parsing a block mapping 。 二、解决 2.1 修改项目目录下缩进格式 在项目下的nacos目录中application-common.yml 文件中修改缩进格式,每…

15个最好的性能测试工具(软件测试工程师必备)

在软件测试日常工作中,大家接触得比较多的性能测试工具有LoadRunner和Jmeter,这里整理了web应用程序性能和负载压力能力的最广泛使用的性能测试工具的综合列表。 这些负载测试工具将确保您的应用程序在高峰流量和极端压力条件下的性能。 该列表包括开源…