当前位置: 首页 > news >正文

CAN总线协议:帧格式

目录

1.CAN总线帧格式

2.数据帧(广播式传输)

3.数据帧各部分用途简介

4.数据帧的发展历史

5.遥控帧(请求式传输)

6.错误帧

7.过载帧

8.帧间隔

9.位填充

例如:

位填充作用:

10.波形实例(图中标黄的是填充位)(CAN总线是高位先行的)

11.波形实例(图中标黄的是填充位)(CAN总线是高位先行的)


1.CAN总线帧格式

CAN协议规定了以下5种类型的帧:


2.数据帧(广播式传输)

标准ID是11位的,所以标准ID号的范围是0x000~0x7FF

扩展ID是29位的,不是4的整数倍,所以扩展ID号的范围是0x0000 0000~0x1FFF FFFF


3.数据帧各部分用途简介

SOF(Start of Frame):帧起始,表示后面一段波形为传输的数据位

ID(Identify):标识符,区分功能,同时决定优先级

RTR(Remote Transmission Request ):远程请求位,区分数据帧和遥控帧

IDE(Identifier Extension):扩展标志位,区分标准格式和扩展格式

SRR(Substitute Remote Request):替代RTR,协议升级时留下的无意义位

r0/r1(Reserve):保留位,为后续协议升级留下空间

DLC(Data Length Code):数据长度,指示数据段有几个字节

Data:数据段的1~8个字节有效数据

CRC(Cyclic Redundancy Check):循环冗余校验,校验数据是否正确

ACK(Acknowledgement):应答位,判断数据有没有被接收方接收

CRC/ACK界定符:为应答位前后发送方和接收方释放总线留下时间

EOF(End of Frame ):帧结束,表示数据位已经传输完毕

补充说明:

RTR:远程请求标志位,用于区分数据帧还是遥控帧,数据帧为显性0,遥控帧为隐形1

RTR加入仲裁帧的作用是为了让仲裁区分相同的数据帧和遥控帧,数据帧的优先级大于遥控帧

IDE:用于区分标准格式还是扩展格式,标准格式为显性0,扩展格式为隐性1

r0:必须为显性0,r0意思是保留位,目前还没用到,最开始时IDE也是保留位,叫r1

DLC:数据段的长度,CAN总线一帧数据可以有1~8字节有效载荷,发一个字节:0001(显显显隐),发8个字节:1000(隐隐隐显),要配合数据段使用,数据段发送的字节必须是8的倍数

CRC:校验算法,校验发送的数据是否有误

CRC界定符:1位,必须是隐性电平

ACK槽:应答;当发送方发送一帧数据的主要内容后,在应答这一位时,发送方释放总线,总线回归默认状态,隐性1,如果接收方收到数据,就会在ACK槽这一个,把总线再拉开,使总线呈现显性0的状态

发送方释放总线后,在ACK槽会读取总线状态,如果发送方读取位显性0,就正常工作,如果读取为隐性1,就说明发送失败,发送方可以配置自动重发,也可以不管

可以发现在ACK槽的前后,操作总线的权力是有个短暂的交换的,前面所有的波形,都只有发送方有权操作总线,在ACK槽这一位时,变为接收方操作总线,为了给权力交接留出时间,ACK槽前后就要留两个界定符,在CRC界定符时,发送方必须发隐性1,除了做一个分隔,另外一个作用时,在ACK槽之前,发送方必须释放总线,发送隐性1就是释放总线,之后在ACK槽的时间点,接收方会拉开总线,ACK槽接收后,接收方不能一直拉着不放,,所以在ACK界定符时,接收方必须及时释放总线,交出控制权,给隐性1,这就是ACK槽的设计

注意事项

1.ACK槽时,可以允许多个接收方共同拉开总线,因为一个报文消息,可以被多个设备同时接受,所以可以允许多个接收方共同拉开总线

2.发送方并不是把一段波形完整发出去,然后再接受应答的 ,而是,发送方和接受方共同完成一整个波形,发送方每发出一位,接收方就立刻收到这一位


4.数据帧的发展历史

CAN 1.2时期,仅存在标准格式,IDE位当时仍为保留位r1

CAN 2.0时期,ID不够用,出现了扩展格式,增加了ID的位数,为了区分标准格式与扩展格式,协议将标准格式中的r1赋予了新功能—IDE


5.遥控帧(请求式传输)

遥控帧无数据段,RTR为隐性电平1,其他部分与数据帧相同

请求式传输,每传输一次数据,都需要一来一回的两个过程,适合使用频率低,但偶尔又需要集中用几次的数据


6.错误帧

总线上所有设备都会监督总线的数据,一旦发现“位错误”或“填充错误”或“CRC错误”或“格式错误”或“应答错误” ,这些设备便会发出错误帧来破坏数据,同时终止当前的发送设备


7.过载帧

当接收方收到大量数据而无法处理时,其可以发出过载帧,延缓发送方的数据发送,以平衡总线负载,避免数据丢失


8.帧间隔

将数据帧和遥控帧与前面的帧分离开


9.位填充

位填充规则:发送方每发送5个相同电平后,自动追加一个相反电平的填充位,接收方检测到填充位时,会自动移除填充位,恢复原始数据

例如:

即将发送: 100000110 10000011110 0111111111110

实际发送: 1000001110 1000001111100 011111011111010

实际接收: 1000001110 1000001111100 011111011111010

移除填充后: 100000110 10000011110 0111111111110

位填充作用:

增加波形的定时信息,利于接收方执行“再同步”,防止波形长时间无变化,导致接收方不能精确掌握数据采样时机(解释:如果一直波形都不变化,没有明确的分界点,接收方无法精准的确定采样点的准确位置)

将正常数据流与“错误帧”和“过载帧”区分开,标志“错误帧”和“过载帧”的特异性,因为“错误帧”和“过载帧”是连续6位相同的电平

保持CAN总线在发送正常数据流时的活跃状态,防止被误认为总线空闲,CAN总线规定,当总线出现11个隐性1后,即认为总线空闲


10.波形实例(图中标黄的是填充位)(CAN总线是高位先行的)

标准数据帧,报文ID为0x555,数据长度1字节,数据内容为0xAA

标准数据帧,报文ID为0x666,数据长度2字节,数据内容为0x12, 0x34


11.波形实例(图中标黄的是填充位)(CAN总线是高位先行的)

扩展数据帧,报文ID为0x0789ABCD,数据长度1字节,数据内容为0x56

标准遥控帧,报文ID为0x088,数据长度1字节,无数据内容

http://www.dtcms.com/a/602693.html

相关文章:

  • 企业微信AI怎么用?从智能表格落地看如何提升运营效率
  • 昆明做网站seo南昌公司网站建设
  • 知寰Hybrid RAG:不止于图谱,重新定义GraphRAG的行业智能新范式
  • 上海网站建设企业建站方一凡和磊儿做家教的网站
  • SQLiteStudio基本操作教程
  • Labview进阶04:Labview与OPC UA设备通信(dll版)
  • 江苏网站建设wordpress域名配置
  • 德州市建设街小学网站首页wordpress的文章多重筛选
  • 加密货币均线策略与传统MACD(介绍下回测框架的择时功能)
  • 青海建设厅报名网站软件工程课程设计题目
  • 网站制作 牛商网中文域名到期对网站的影响
  • 《雷电模拟器9》 [9.1.76.0][x64] [绿色纯净版] 下载
  • 网站建设要点自助建站推广
  • 开发网站的基本流程网站制作怎么做框架
  • 【经典书籍】《代码整洁之道》第十三章“并发编程”精华讲解
  • 绵阳成套配电柜厂家
  • 反向海淘独立站技术架构深度解析:从搭建到优化的全链路实践
  • 做外贸用什么网站比较好济宁网站
  • C语言程序在线编译 | 让编程更便捷,提高开发效率
  • 2025下半年软考高级系统架构设计师考试流水账
  • 微信网站平台建设表白网站制作
  • 高级边界扫描 --1-- IEEE标准1149.6
  • 【C++】STL -- list 的使用与模拟实现
  • 百度认证官方网站怎么制作网站布局
  • 劲松网站建设专门做dm单的网站
  • Go语言编译器 | 探索Go语言编译过程与优化技巧
  • 在线监测系统:农药精细化工的“安全锁”与“效率引擎”
  • Python 爬虫教程 | 豆瓣 TOP250 数据抓取与分析实战
  • 专门做创意桌椅的网站访问中国建设银行网站
  • 搭建外文网站计算机网络课程设计