当前位置:网站首页>CAN通信标准帧和扩展帧介绍
CAN通信标准帧和扩展帧介绍
2022-08-01 11:27:00 【路过的小熊~】
简介
CAN接口兼容规范2.0A和2.0B(主动),位速率高达1兆位/秒。它可以接收和发送11位标识符的标准帧,也可以接收和发送29位标识符的扩展帧。
标准帧和扩展帧的区别在于:
一、扩展帧的仲裁域有29位,可以出现2^29中报文,且在数据链路上是有间隙的(对操作者透明),帧ID的范围是0000 0000-1FFF FFFF。(PS:目的就是构造29位的CAN ID,可以实现更加庞大的ID群,妈妈再也不用担心ID不够用了!)
二、标准帧的仲裁域是连续的11位,可以出现2^11种报文,也就是帧ID的范围是000-7FF;
三、控制帧中的DLC(数据长度)完全相同,但保留位不同,标准帧IDE、R0,扩展帧R1、R0,必须以显性电平发送(由数据链路层操作),对程序员透明;
四、 总结: 其它的都一模一样,所以,其实CAN标准帧和扩展帧只是在帧ID的长度上不一样,以能扩展更多的CAN节点,更好地支持上层协议而已。
注意:这里的帧ID 并不是表示发送的目的地址,而是表示访问总线的消息的优先级(帧ID值越小,优先级越高,最小是0x00000000)。
标准帧:(0x12)
扩展帧:(0x1314)
CAN标准帧格式
CAN 标准帧信息为11个字节(3 + 8),包括两部分:信息和数据部分。前3个字节为信息部分。
字节1为帧信息。第7位(FF)表示帧格式,在标准帧中,FF=0;第6位(RTR)表示帧的类型,RTR=0表示为数据帧,RTR=1表示为远程帧;DLC表示在数据帧时实际的数据长度。
字节2、3为报文识别码,11位有效。
字节4~11为数据帧的实际数据,远程帧时无效。
CAN扩展帧格式
CAN 扩展帧信息为13个字节(5 + 8),包括两部分,信息和数据部分。前5个字节为信息部分
字节1为帧信息。第7位(FF)表示帧格式,在扩展帧中,FF=1;第6位(RTR)表示帧的类型,RTR=0表示为数据帧,RTR=1表示为远程帧;DLC 表示在数据帧时实际的数据长度。
字节2~5为报文识别码,其高29位有效。
字节6~13数据帧的实际数据,远程帧时无效
恶补知识
CAN协议的一个最大特点是废除了传统的站地址编码,而代之以对通信数据块进行编码。采用这种方法的优点可使网络内的节点个数在理论上不受限制,数据块的标识符可由11位或29位二进制数组成,因此可以定义2或2个以上不同的数据块,这种按数据块编码的方式,还可使不同的节点同时接收到相同的数据,这一点在分布式控制系统中非常有用。数据段长度最多为8个字节,可满足通常工业领域中控制命令、工作状态及测试数据的一般要求。
同时,8个字节不会占用总线时间过长,从而保证了通信的实时性。CAN协议采用CRC检验并可提供相应的错误处理功能,保证了数据通信的可靠性。CAN卓越的特性、极高的可靠性和独特的设计,特别适合工业过程监控设备的互连,因此,越来越受到工业界的重视,并已公认为最有前途的现场总线之一。
附录:
上面CANTest软件的最新下载地址:https://www.zlg.cn/Index/Search/search?selc=all&key=cantest
需要配置CAN盒使用
边栏推荐
- 用户体验 | 如何度量用户体验 ?
- 小程序毕设作品之微信美食菜谱小程序毕业设计成品(3)后台功能
- Glassmorphism design style
- 冰冰学习笔记:gcc、gdb等工具的使用
- C#/VB.NET 将PPT或PPTX转换为图像
- Mini Program Graduation Works WeChat Food Recipes Mini Program Graduation Design Finished Products (4) Opening Report
- 利用正则表达式的回溯实现绕过
- 博弈论(Depu)与孙子兵法(42/100)
- xss漏洞学习
- 深度学习 | MATLAB实现GRU门控循环单元gruLayer参数设定
猜你喜欢

小程序毕设作品之微信美食菜谱小程序毕业设计成品(3)后台功能

千万级乘客排队系统重构&压测方案——总结篇

OpenHarmony高校技术俱乐部计划发布

在线GC日志分析工具——GCeasy

程序员如何优雅地解决线上问题?

用户体验 | 如何度量用户体验 ?

Dapr 与 NestJs ,实战编写一个 Pub & Sub 装饰器

Solve vscode input! Unable to quickly generate skeletons (three methods for the new version of vscode to quickly generate skeletons)

Promise学习(二)一篇文章带你快速了解Promise中的常用API

Android Security and Protection Policy
随机推荐
.NET深入解析LINQ框架(三:LINQ优雅的前奏)
冰冰学习笔记:gcc、gdb等工具的使用
轮询和长轮询的区别
SCHEMA解惑
R语言ggplot2可视化:使用ggpubr包的geom_exec函数执行geom_*函数(没有任何参数需要放置在aes中)
语音聊天app源码——语音聊天派对
Golang内存分析工具gctrace和pprof实战
Glassmorphism design style
Hot review last week (7.25 7.31)
Promise学习(二)一篇文章带你快速了解Promise中的常用API
EasyRecovery热门免费数据检测修复软件
C language implementation!20000 in 4 seconds
Aeraki Mesh 正式成为 CNCF 沙箱项目
【CLion】CLion 总是提示 “This file does not belong to any project target xxx” 的解决方法
R语言诊断ARIMA模型:forecast包构建了一个ARIMA模型、使用checkresiduals函数诊断ARIMA模型、并进行结果解读(拟合较差的ARIMA模型具有的特点)
Flutter Widget 如何启用和屏蔽点击事件
图解MySQL内连接、外连接、左连接、右连接、全连接......太多了
【随心笔记】假期快过去了,都干了点什么
Promise学习(三)Promise的几个关键性问题 -- 状态改变、执行顺序与机制、多任务串联、异常穿透、中断promise链
MySQL常用语句总结