当前位置:网站首页>CAN报文:数据帧详解
CAN报文:数据帧详解
2022-07-29 15:04:00 【DingUXiu】
CAN报文
CAN使用的是两条差分信号线,只能表达一个信号,简洁的物理层决定了CAN必然要配上一套复杂的协议。
CAN协议对数据、操作命令(如读/写)以及同步信号进行打包,打包后的这些内容称为报文
打包的过程就是在原始数据的基础上再加上帧起始段、仲裁段、控制段、CRC校验、应答和帧结束,把这些内容按特定的格式打包好,就可以用一个通道表达各种信号了,当数据包被发送时,只要接收方按约定格式去解读,就能还原出原始数据
为了更有效地控制通讯,CAN一共规定了5种类型的帧
CAN帧类型
| 帧类型 | 帧用途 |
|---|---|
| 数据帧 | 发送单元向接收单元传送数据的帧 |
| 遥控帧 | 接收单元向发送单元请求数据的帧 |
| 错误帧 | 检测出错误时向其它单元通知错误的帧 |
| 过载帧 | 接收单元通知其尚未就绪的帧 |
| 间隔帧 | 将数据帧及遥控帧与前面的帧分离开来的帧 |
数据帧和遥控帧有标准格式和扩展格式两种格式,标准格式有 11 个位的标识符ID,扩展格式有 29 个位的 ID
数据帧
数据帧由帧起始、仲裁段、控制段、数据段、CRC、ACK、帧结束共7个段构成

帧起始(Start Of Frame)
表示帧开始的段,1个位的显性位
标准格式与扩展格式相同
仲裁段
表示数据帧优先级的段
标准格式与扩展格式的构成有所不同,均禁止高7位为隐性(ID=1111111XXXX…)
仲裁段的内容主要为本数据帧的ID,标准格式的ID 有11 个位,扩展格式的 ID 有29 个位,在CAN协议中,ID决定着数据帧发送的优先级,也决定着其它节点是否会接收这个数据帧。CAN总线不对挂载在它之上的节点分配优先级和地址,对总线的占有权是由信息的ID决定的,即对于重要的信息,优先级高的ID,能够优先发送出去
RTR位(Remote Transmission Request Bit)
译作远程传输请求位,它是用于区分数据帧和遥控帧的,当它为显性电平时表示数据帧,隐性电平时表示遥控帧。
IDE位(Identifier Extension Bit)
译作标识符扩展位,它是用于区分标准格式与扩展格式,当它为显性电平时表示标准格式,隐性电平时表示扩展格式
SRR位(Substitute Remote Request Bit)
只存在于扩展格式,它用于替代标准格式中的RTR位,由于扩展帧中的SRR位固定为隐性位,RTR在数据帧中为显性位,所以两个ID相同的标准格式与扩展格式,标准格式的优先级较高
控制段
控制段由 6 个位构成,表示数据段的字节数
标准格式和扩展格式的构成有所不同
保留位(r0、r1)必须全部以显性电平发送。
数据长度码(DLC),数据的字节数必须为 0~8 字节
数据段
标准格式和扩展格式相同
数据段可包含 0~8 个字节的数据,从MSB(最高位)开始输出
CRC段
标准格式与扩展格式相同
CRC 段是检查帧传输错误的段,由15 个位的CRC值和1 个位的CRC界定符(隐性分隔位)构成
CRC是根据多项式生成的CRC值,CRC的计算范围包括帧起始、仲裁段、控制段、数据段
接收方以同样的方式计算CRC值并进行比较,不一致时利用错误帧请求重新发送
ACK段
标准格式与扩展格式相同
ACK段包括ACK槽位、ACK界定符位2个位
发送单元的ACK 段:发送单元在 ACK 段发送2 个位的隐性位
接收单元的ACK 段:接收到正确消息的单元在ACK 槽发送显性位,通知发送单元正常接收结束,这称作“发送ACK”或者“返回ACK”
帧结束(End Of Frame)
标准格式与扩展格式相同
帧结束是表示该帧结束的段,由发送节点发送 7 个位的隐性位构成
边栏推荐
- 瑞萨RZ/G2L处理器详细测评
- 微服务实战|集中配置中心Config非对称加密与安全管理
- Linux安装MySQL(超详细)
- 求连续90日每日的用户留存率 -- 全网唯一
- 深圳见!云原生加速应用构建专场:来看云原生 FinOps、SRE、高性能计算场景最佳实践
- Learning Policies for Adaptive Tracking with Deep Feature Cascades全文翻译
- SkiaSharp 之 WPF 自绘 弹动小球(案例版)
- 腾讯云数据库负责人林晓斌借1亿炒股:已爆仓破产
- 突破性能天花板!亚信数据库支撑 10 多亿用户,峰值每秒百万交易
- APP为什么用JSON协议与服务端交互:序列化相关知识
猜你喜欢
随机推荐
APP为什么用JSON协议与服务端交互:序列化相关知识
每日优鲜倒下,下一个是谁?
[MySQL] 排序与分页
【7.22-7.29】写作社区精彩技术博文回顾
工作效率-十五分钟让你快速学习Markdown语法到精通排版实践备忘
Mysql数据库及表的建立
qt vs2015中无法打开源文件“QtWidgets”的解决方案
数据挖掘场景-发票虚开
又一位AI大佬辞职进体制内!AI的尽头是编制?
怎么建立数据分析思维
【 LeetCode 】 350. The intersection of two arrays. II
【左连接】坑点
AC自动机笔记与例题整理
使用Xshell和Xftp7跑学校服务器记录
如何在MySQL中执行SQL?
【LeetCode】53. 最大子数组和
走高质量、可持续的保障亿万家庭之路 水滴公司发布2020·2021ESG报告
协同多智能体学习的价值分解网络的原理与代码复现
Face key point prediction and normalization
uni 的下拉式筛选菜单的功能/图片懒加载









