首页 > 其他分享 >CAN总线数据链路层(一)

CAN总线数据链路层(一)

时间:2022-11-17 18:00:12浏览次数:133  
标签:错误 报文 总线 ID 发送 接收 数据 节点 链路层

1.通信机制

  • 发送报文。 1.首先检测Bus状态,空闲 则发送 报文且回读

        2.线与机制,若有两个节点同时发报文

         报文结构:

         通过ID进行仲裁(规则判定),若ID值小则0位越展示在前面。如:

         0001 比1000 小 则0001中  显性位将1000覆盖    

题目:如有如下节点发送报文,看ID

A:5          5

B:   7

C:    3    3

D:      6        6

发送流程:5先发出,下一步是7和3,由于3小则3先发出;

     后续则是6和7,6小则6先发  按照此逻辑总线的报文内容依次:5363567

例2:

A:2   1

B:1  

C:3

BUS:A节点先进入,按照ID小的原则排序 应该是 123 但由于A节点先进入到寄存器,所以2先发

2131

 

  • 报文的接收  节点只会接收和自己相关性的内容,由报文ID控制。相同ID则接收 不相同的则过滤。编码采用NRZ编码,不适用曼彻斯特编码

   NRZ编码:可以使报文紧凑。0是低  1是高  (0是显性位  2v)

          曼彻斯特编码:0是上升沿  1是下降沿  。优点:可以位同步,定时更准确

     如:0110 

         

NRZ与位填充:

  NRZ编码沿比较少  则定时不精准,需要用位填充来补短板

       CAN总线需要 发连续5个相同位 补一个极性相反位

           收连续5个相同位  去 一个极性相反位

2.CAN帧类型

  数据帧【重点】分为 标准帧 和 扩展帧

标准帧:

  远程帧:

SOF(Start of Frame,帧起始)

SOF是数据帧传输的起始位。发送方(sender)会发送一个显性电平作为SOF,由于总线空闲时总线会保持隐性电平,因此SOF发出后会产生一个跳变沿用于整个CAN网络的时间同步。为了在帧传输期间保持与发送方的同步,接收方会在所有隐性电平到显性电平的跳变沿进行是否与发送方保持同步的判断。如果出现偏差,接收方将按照相关相位误差量重新进行同步(重同步)。

ID和RTR(Remote Transmission Request,远程传输请求位)

SOF之后是标识符(ID),用于区分数据帧的优先级,并根据通信矩阵中定义的收发关系为节点中的接收过滤器提供过滤依据。ID之后是RTR位。发送方将其用于通知接收方帧的类型(数据帧或远程帧)。RTR位为显性表示数据帧,隐性则表示远程帧

IDE(Identifier Extension bit,标识符扩展位)

IDE位用于区分标准格式和扩展格式。标准ID有11位,扩展ID有29位,“

ide是1 扩展帧     0是标准帧

DLC(Data Length Code,数据长度代码)

DLC表示数据场中的有效负载的字节数。一个数据帧最多可以传输八个字节。

表示9-15则用8表示

CRC(cyclic redundancy check,循环冗余校验码)和ACK(acknowledge,应答)

校验场使用以界定符(delimiter)为结尾的CRC来保护有效负载。接收方在ACK位做出肯定或否定的应答,ACK位后同样有一位界定符。

CRC   DEL    ACK     ACKDEL    EOF      ITM

15位    1       1              1            7           3

DEL、ACKDEL、EOF、ITM隐性位 固定是1

ACK  对是0  错是1

节点发送 以及节点接收 都会计算CRC 并对比值 

远程帧:无数据 只有ID

 

错误帧【重点】:

位错误:回读位与发出位不同【发送node可以检测出来】

填充错误:【发送和接收节点都可以检测出来】

ACK错误:发送节点可以检测出来

格式错误:【发送和接收节点都可以检测出来】CRC之后错误

CRC错误:接收节点可以探测到错误

被动错误转化为主动错误:则 REC<128 or TEC<128

 

主动错误帧:

  错误标志:6个连续的显性位  0-6个错误标志叠加  8个错误界定符

被动错误帧:

  错误标志:6个连续的隐性位  0或6个错误标志叠加  8个错误界定符

 

超载帧

帧空间

3.错误检测与处理【重点】

4.位定时与同步

  硬同步

  重同步

5.CAN控制器(不讲)

标签:错误,报文,总线,ID,发送,接收,数据,节点,链路层
From: https://www.cnblogs.com/W505020235/p/16900305.html

相关文章