北京网站制建设公司,华容网站定制,wordpress订单,互联网技术学什么目录
前言
一、CAN总线帧格式分类
1.数据帧#xff08;重点#xff09;
2.遥控帧
3.错误帧
4.过载帧 5.间隔帧
二、位填充
三、波形实例 前言 本期我们就开始学习CAN总线的帧格式#xff0c;对应帧格式的话#xff0c;在前面我们学习I2C协议和SPI协议等协议的时候…目录
前言
一、CAN总线帧格式分类
1.数据帧重点
2.遥控帧
3.错误帧
4.过载帧 5.间隔帧
二、位填充
三、波形实例 前言 本期我们就开始学习CAN总线的帧格式对应帧格式的话在前面我们学习I2C协议和SPI协议等协议的时候也是类似的学过这些协议在传输过程中是怎么样去实现数据的传输的。那么我们就开始今天的学习视频[1-2] 帧格式_哔哩哔哩_bilibili
一、CAN总线帧格式分类 帧类型 用途 数据帧 发送设备主动发送数据广播式 遥控帧 接收设备主动请求数据请求式 错误帧 某个设备检测出错误时向其他设备通知错误 过载帧 接收设备通知其尚未做好接收准备 帧间隔 用于将数据帧及遥控帧与前面的帧分离开
1.数据帧重点 数据帧是我们主要学习的内容之一同样的CAN数据帧也是跟其他通信方式类似的首先是SOF此时是逻辑电平显性总线被拉开。然后紧接着就是就是11位的ID位是用来区分当前广播设备的ID其划分为前三位中间四位后面四位范围是0~7FF紧接着就是RTR用来区分数据帧和遥控帧数据帧就是表示为显性0遥控帧就是为显性1。
IDE是扩展位如果是显性0就表示标准格式隐性1是表示扩展格式。r0是表示保留位。
然后接着就是DLC这个表示的是后面数据的长度DLC是4位范围是0000~1111但是DCL要跟着后面数据段Data一起的DLC指定多少那么数据段就要发送多少字节这里要一一对应的数据段最大是64位也就是8个字节。
后面就是CRC校验段当出现错误的时候这里基本上都会被发现的然后驳回这个帧。
然后就是ACK段应答这里跟I2C是很相似的在进入ACK之前刚开始有一个CRC界定符这时候发送方释放CAN总线发送一个显性1作为起始标志然后如果有接收方的话接收方就会拿到总线这时候接收方就会把总线给拉开使得为显性0当此时发送方再次拿到总线的时候就会发现总线上变为显性了那么就说明有人接收了所以发送完成最后就是结束位EOF长度为7位均为隐性1。 SOFStart of Frame帧起始表示后面一段波形为传输的数据位IDIdentify标识符区分功能同时决定优先级 344RTRRemote Transmission Request 远程请求位区分数据帧和遥控帧IDEIdentifier Extension扩展标志位区分标准格式和扩展格式SRRSubstitute Remote Request替代RTR协议升级时留下的无意义位r0/r1Reserve保留位为后续协议升级留下空间DLCData Length Code数据长度指示数据段有几个字节Data数据段的1~8个字节有效数据CRCCyclic Redundancy Check循环冗余校验校验数据是否正确ACKAcknowledgement应答位判断数据有没有被接收方接收CRC/ACK界定符为应答位前后发送方和接收方释放总线留下时间EOFEnd of Frame 帧结束表示数据位已经传输完毕 数据帧的发展历史 CAN 1.2时期仅存在标准格式IDE位当时仍为保留位r1 CAN 2.0 时期 ID 不够用出现了扩展格式增加了 ID 的位数为了区分标准格式与扩展格式协议将标准格式中的 r1 赋予了新功能 —IDE 2.遥控帧 遥控帧无数据段 RTR 为隐性电平 1 其他部分与数据帧相同 3.错误帧 总线上所有设备都会监督总线的数据一旦发现“位错误”或“填充错误”或“ CRC 错误”或“格式错误”或“应答错误” 这些设备便会发出错误帧来破坏数据同时终止当前的发送设备 4.过载帧 当接收方收到大量数据而无法处理时其可以发出过载帧延缓发送方的数据发送以平衡总线负载避免数据丢失 5.间隔帧 将数据帧和遥控帧 与前面的帧分离开 二、位填充 • 位填充规则发送方每发送 5 个相同电平后自动追加一个相反电平的填充位接收方检测到填充位时会自动移除填充位恢复原始数据 • 例如 即将发送 100000110 10000011110 0111111111110 实际发送 1000001110 1000001111100 011111011111010 实际接收 1000001110 1000001111100 011111011111010 移除填充后 100000110 10000011110 0111111111110 • 位填充作用 增加波形的定时信息利于接收方执行“再同步”防止波形长时间无变化导致接收方不能精确掌握数据采样时机将正常数据流与“错误帧”和“过载帧”区分开标志“错误帧”和“过载帧”的特异性保持CAN总线在发送正常数据流时的活跃状态防止被误认为总线空闲 下面看一个有意思的示例
下面展示的是原始数据11111 0000 1111 0000 1111 0000那么如果去位填充处理的话就应该会变为 11111 00000 11111 00000 11111 00000 这里就是因为第一个连续的5个1而要去插入一个0导致后面的4个0变为5位然后不得不再插入一个1后面的4个1还是被新插入的数字影响……以此类推。这样就成了连锁反应了哈不过这种情况很少出现但出现了也是按照位填充的方式插入的不要感到奇怪。 三、波形实例
• 标准数据帧报文 ID 为 0x555 数据长度 1 字节数据内容为 0xAA •标准数据帧报文ID为0x666数据长度2字节数据内容为0x12, 0x34 •扩展数据帧报文ID为0x0789ABCD数据长度1字节数据内容为0x56 •标准遥控帧报文ID为0x088数据长度1字节无数据内容
以上就是本期的全部内容了我们下次见
今日壁纸