我是靠谱客的博主 能干大白,最近开发中收集的这篇文章主要介绍CAN的信号结构前言,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言

CAN的通讯是基于帧传递的,CAN通讯的帧结构由以下七段组成:

帧起始 仲裁段 控制段 数据段 CRC段 ACK段 帧结束
CAN的帧分为两种:标准帧和扩展帧,分别对应着两个不同的协议:CAN2.0A | CAN2.0B;
标准帧和扩展帧的区别主要在于ID的长度,标准帧是11位,扩展帧是29位。
接下来介绍一下,帧结构的组成部分:

帧起始

帧起始是一个显示位电平,当总线空闲时,发送节点发送一个显性电平,所有的接收节点同步于该帧起始位

注:在CAN通讯中,低电平代表的是显性电平,高电平代表的是隐形电平,所以一个显性电平的发出也代表着一帧信号的开始。

仲裁段

对于标准帧来说,仲裁段包含的部分是:ID、RTR
对于扩展帧来说,仲裁段包含的部分是:ID、SRR、IDE、RTR
仲裁机制:决定哪条信号可以发,哪条可以不发,因为只有一条CAN总线,所以同一时刻只能发送一帧信息
依据:根据信号的ID,总线会对ID进行逐位的比较
结果:显性电平胜出,隐形电平退出发送
注:CAN的ID值越小,优先级越高,仲裁机制对于标准帧和扩展帧是一样的
仲裁段中的RTR是为了区分数据帧和远程帧,当RTR为显性电平时代表数据帧
当RTR为隐形电平时代表远程帧
RTR也在仲裁段中,就会和信号的优先级有关系,如果在一帧消息中,ID是完全一样的,到了RTR位,数据帧是显性的,就优先于远程帧
IDE既存在于标准帧的控制段又存在于扩展帧的仲裁段,在这两个帧的相对位置是一样的,都是第13位,所以在一个网络中既存在标准帧又
存在扩展帧,并且这两个帧类型的ID是一致的,那么标准数据帧的优先级高于扩展数据帧,因为仲裁到第13位的时候,标准帧的IDE为显性电平,扩展帧的IDE为隐性电平
SRR作用是在同样的位置替代远程请求帧的RTR

控制段

标准帧和扩展帧的控制段长度都是6位,在标准帧中的控制端包含IDE,保留位r0以及数据长度DLC
在扩展帧中的控制段包含保留位r0,r1以及数据长度DLC
保留位暂时没有别的用途,一般都用于隐性位填充,DLC代表下一个部分数据段的长度,从编码规则上来说是BCD编码,可以表示的长度范围是0-8

数据段

根据需要传输的数据长度传输相应的字节,每次传输最多只有8个字节,现在好像可以传输64个字节

CRC段

对这一帧信号中前面的部分进行校验,以保证数据传输的正确性,校验的部分包括:帧起始、仲裁段、控制段、数据段
发送节点在发送数据时会把计算的校验值写到CRC段,接收节点在接收数据时,会在接收节点以同样的CRC校验方式进行计算,然后用自己的计算结果与接收到的计算结果进行对比,以判断数据在传输过程中是否出现了位丢失或者其他位错误的情况。

ACK段

ACK段和CRC段是相关的,CRC校验结果没有问题的话,接收节点会在总线发送一个显性电平
最终总线的电平状态是显性电平

帧结束

和帧起始相呼应,帧结束是由七个连续的隐性电平组成
在各种类型的CAN帧中,不管是数据帧还是远程帧还是扩展帧,都包含相同的帧起始和帧结束

最后

以上就是能干大白为你收集整理的CAN的信号结构前言的全部内容,希望文章能够帮你解决CAN的信号结构前言所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部