CAN总线学习笔记-CAN帧结构

数据帧

数据帧:发送设备主动发送数据(广播式)

标准格式的11ID不够用了,由此产生了扩展格式

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

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

RTR:远程请求位,区分数据帧和遥控帧

IDE:扩展标志位,区分标准格式和扩展格式

SRR:替代RTR,协议升级时留下的无意义位

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

DLC:数据长度,指示数据段有几个字节(1-8字节的有效载荷)

CRC:循环冗余校验,校验数据是否正确

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

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

EOF:帧结束,表示数据位已经传输完毕

遥控帧

遥控帧:接收设备主动请求数据(请求式)

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

CAN总线的数据主要依靠发送方自觉广播出来,一般发送放会定一个周期,定时广播自己的数据,但如果发送方没有及时发送出数据,或者说这个数据使用频率太低了,广播太频繁了大家用不到浪费总线资源,广播你太慢了,偶尔有用的话,又及时拿不到,可以规定发送发不需要主动广播这个数据,而是如果有设备需要的话,首先接收方(需要数据的一方)发出一个遥控帧,遥控帧包含报文ID(遥控帧也是广播出来的,每个设备都能收到遥控帧),如果其中某个设备有这个ID的数据,那这个设备就会通过数据帧广播出来

错误帧

错误帧:某个设备检测出错误时向其他设备通知错误。

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

过载帧

过载帧:接收设备通知其尚未做好接收准备。

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

帧间隔

帧间隔:用于将数据帧及遥控帧与前面的帧分离开

位填充

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

位填充作用:防止数据波形长时间不变化

增加波形的定时信息,利于接收方执行"再同步",防止波形长时间无变化,导致接收方不能精确掌握数据采样时机

将正常数据流与"错误帧"和"过载帧"区分开,标志"错误帧"和"过载帧"的特异性

保持CAN总线在发送正常数据流时的活跃状态,防止被误认为总线空闲

相关推荐
kanimito11 分钟前
大语言模型入门指南:从科普到实战的技术笔记(2)
人工智能·笔记·语言模型
Bin二叉15 分钟前
南京大学cpp复习——面向对象第一部分(构造函数,拷贝构造函数,析构函数,移动构造函数,友元)
c++·笔记·学习
爱奥尼欧15 分钟前
【QT笔记】常用控件——QWidget 核⼼属性
数据库·笔记·qt
摇滚侠24 分钟前
Vue 项目实战《尚医通》,获取挂号医生的信息展示,笔记43
前端·javascript·vue.js·笔记·html5
大锦终28 分钟前
【Linux】高级IO
linux·服务器·网络·c++
Jerry丶Li40 分钟前
二十八、STM32的USART (介绍)
stm32·单片机·嵌入式硬件
智者知已应修善业44 分钟前
【proteus数电74LS175+74LS48抢答器仿真扩展为矩阵键盘16路】2022-9-1
驱动开发·经验分享·笔记·硬件架构·proteus·硬件工程
xhyyvr1 小时前
解码大地的预警 —— VR地震起因及先兆学习系统
学习·vr·vr公共安全·vr公共安全体验馆·vr地震·vr地震起因先兆·vr地震模拟平台
Amber_371 小时前
php的数组和python的列表 -- 横向对比学习
python·学习·php
LCG元1 小时前
Linux 下高效开发环境搭建:VSCode Remote + 容器开发
linux