1.6 CAN-Bus数据链路层

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

应答错误
发送节点在ACK 阶段没有接收到 应答信号时发生 该错误
位发送错误
发送节点在发送 时发现总线电平 与发送电平不相 同时发生该错误
位填充错误
通信线缆上传输 信号违反“位填 充”规则时发生 该错误
错误帧
当出现5种错误类型之一时,发送或接收节点将发送错误帧。错误帧
的结构如下,其中错误标识分为主动错误标识和被动错误标识。
总线仲裁
假设节点A、B和C都发送相同格式相同类型的帧,如标准格式数据帧, 它们竞争总线的过程是:
SOF RTR 10 9 8 7 6 5 4 3 2 1 0
控制段
DATA
节点A
节点B
只听模式
节点C
只听模式
节点C的ID第3位是隐性, 节点B的ID第5位是隐性, 从该分析过程得出结论是:帧ID值越小,优先级越高; 节点A、C的为显性,总线电平 节点A的为显性,总线电平 为显性,节点B退出总线竞争。 对于同为扩展格式数据帧、标准格式远程帧和扩展格式远程帧的情况同理。 为显性,节点C退出总线竞争。
EOF 7
扩 展 帧
ID 11 1 1
ID 18 1 1 1
DLC
与标准帧相同
4
SRR
IDE
RTR
r1
r0
帧起始和帧结束
帧起始和帧结束用于界定一个数据帧,无论是标准数据帧或扩展
数据帧都包含这两个段。
数据帧 结构
帧起始
仲裁段
控制段
数据段
CRC段
ACK段
帧结束
标准帧 或 扩展帧
……
由单个显性位组成。总线空 闲时,发送节点发送帧起始, 其他接收节点同步于该帧起 始位。 由7个连续的隐性位组成。
IDE r1 r0 r0 DLC DLC
数据段的长度码,占4bit; BCD编码,范围0~8
保留位0和1,各占1bit, 总是用隐性电平填充
数据段
一个数据帧传输的数据量为0~8个字节,这种短帧结构使得CANbus实时性很高,非常适合汽车和工控应用场合。
数据帧 结构 帧起始 仲裁段 控制段 数据段 帧结束
总线仲裁
CAN控制器在发送数据的同时监测数据线的电平是否与发送数据对 应电平相同,如果不同,则停止发送并做其他处理。
通信数据线
根据比较结果 判断是否停止 发送和其他处理
发送位的电平 进行比较
监测总线的电平 CAN控制器电平监测示意
如果该位属于仲裁段,则退出总线竞争; 如果处于其他段,则产生错误事件(帧ACK时间段或被动错误标 志传输期间除外) 。
比较内容
ID SRR RTR DLC 是否有数据段 CRC校验范围
数据帧
发送节点的ID 0(显性电平) 0(显性电平) 发送数据长度 是
远程帧
被请求发送节点的ID 1(隐性电平) 1(隐性电平) 请求的数据长度 否 帧起始 + 仲裁段 + 控制段
帧起始 + 仲裁段 + 控制段 + 数据段


概述
数据帧 远程帧
被动 错误
TEC > 255
总线 关闭
数据帧的收发 都被禁止


概述
数据帧 远程帧
错误帧 过载帧与帧间隔
小结
过载帧
当某个接收节点没有做好接收下一帧数据的准备时,将发送过载帧
以通知发送节点;过载帧由过载标志和过载帧界定符组成。
过载帧结构:
1
过载标志
1 1 1 1 1
+
1
过载帧界定符
1 1 1 1 1 1 1
6个连续显性电平位
8个连续隐性电平位
由于存在多个节点同时过载且过载帧发送有时间差问题,可能出现过载标志 叠加后超过6个位的现象。
过载标志 过载帧界定符 8
6
过载标志重叠部分
帧间隔
帧间隔用于将数据帧或远程帧和他们之前的帧分离开,但过载帧和
错误帧前面不会插入帧间隔。
…… 其他帧 帧间隔 数据帧或远程帧 …… 其他帧 过载帧或远程帧 ……
标准格式和扩展格式,且RTR位为1(隐性电平)。
帧 结 构
帧起始
仲裁段
RTR
控制段
IDE r0
DLC
CRC段
ACK段
帧结束
标 准 帧
ID
CRC
EOF
1
11
1
1
1
4
15
1
1
1
7
扩 展 帧
ID 11 1 1
ID 18 1 1 1
DLC 与标准帧相同 4
SRR
IDE
RTR r1
r0
数据帧与远程帧区别
数据帧与远程帧的区别如下:
干扰其他节点通信,CAN-bus规定了节点的3种状态及其行为。
REC :接收错误计数器 TEC :发送错误计数器; 复位时两者都被清0。
复位
设备正常参与总线通 信,检测到错误时发 送主动错误标识
主动 错误
设备正常参与总线通 信,检测到错误时发 送被动错误标识 REC < 127 且 TEC < 127 复位或检测到128次 11位连续隐性位 REC > 127 或 TEC > 127
1:帧间隔过后,如果无节点 发送帧,则总线进入空闲。

帧间隔
0~∞

2:帧间隔过后,如果被动 错误节点要发送帧,则先 发送8个隐性电平的传输 延迟,再发送帧。
8个 隐性位
… 帧间隔 传输延迟 被动错误节点发送帧
保证主动错误节点优先发送, 避免被动错误节点因硬件故障干扰整个网络


概述
数据帧 远程帧
数据帧 结构
帧起始
仲裁段
控制段
数据段
CRC段
ACK段
帧结束
模2除以 多项式 G(x)
CRC值 [0:14]
CRC界定符
X15 + X14 + X10 + X8 + X7 + X4 + X3 + 1
占1bit, 隐性电平填充
ACK段
当一个接收节点接收的帧起始到CRC段之间的内容没发生错误时, 它将在ACK段发送一个显性电平。
总线仲裁
由于标准帧的IDE位为显性电平,扩展帧的IDE位为隐性电平,对于
前11位ID相同的标准帧和扩展帧,标准帧优先级比扩展帧高。
前11位ID相同 SOF RTR/SRR
10 9
8
7
6
5
4
3
2
1
0
节点A 发送标准帧 节点B 发送扩展帧
IDE
ID[0:10]
……
ID[0:10]
只听模式
当发送IDE位时,由于线与的原理,总线上出现显性电平, 节点B仲裁失败,进入只听模式。 节点A获得总线,继续发送剩余数据。
仲裁段
CAN-bus是如何解决多个节点同时发送数据, 即总线竞争的问题?该问题由仲裁段给出答案。
CAN-bus并没有规定节点的优先级,但通过仲裁段帧ID规定了数据帧的 优先级。 根据CAN2.0标准版本不同,帧ID分为11位和29位两种。
数据帧 结构
帧起始
仲裁段
控制段
数据段
CRC段
ACK段
帧结束
远程帧发送标识位, 占1bit,为显性
错误帧 结构
主动 错误 标识 被动 错误 标识
1
错误标志
+
错误界定符 由处于主动错误 状态的节点发送
1
1
1
1
1
1
1
1
1
1
1
1
1
6个连续显性电平位
1 1 1 1 1 1 1
8个连续隐性电平位
1 1 1 1 1 1 1
由处于被动错误 状态的节点发送
6个连续隐性电平位
8个连续隐性电平位
错误状态及转化
为防止自身由于某些原因导致无法正常接收的节点一直发送错误帧,
CAN-Bus数据链路层


概述
数据帧 远程帧
错误帧 过载帧与帧间隔
小结
概 述
1.5小节介绍了CAN-bus物理层相关知识,本小节重点介绍
CAN-bus的数据链路层。
CAN节点分层 应用层 Application
解决的问题
• 收发目标选择 • 数据校验 • 总线竞争 • …… • 错误机制
. . .
错误帧 过载帧与帧间隔
小结
小 结
CAN-bus整个链路层处理数据的流程是:
初始化 1 等待空闲
TEC和REC清0 若TEC < 8 则TEC加8 若TEC > 255 则断开连接
5 检测到错误 不 取 消 发 送 请 求
REC加1
检测到 SOF
等待总线SOF或 应用层的发送请求
仲裁失败
发送 请求
TEC 加8
数据链路层 Data Link Layer 物理层 Physical Layer
CAN-bus上传输的基本单位是CAN帧。 CAN-bus通过各种不同的帧实现以上这 些功能,所以下面从介绍CAN-bus的帧 开始。
Let’s Go!
CAN-bus帧分类
CAN-bus通信帧共分为数据帧、远程帧、错误帧、过载帧和帧间隔
小结
数据帧
数据帧是使用最多的帧,结构上由7个段组成,其中根据仲裁段ID码 长度的不同,分为标准帧(CAN2.0A)和扩展帧(CAN2.0B)。
帧 结 构
帧起始
仲裁段
RTR
控制段
IDE r0
数据段
CRC段
ACK段
帧结束
标 准 帧
ID 1 11 1
DLC Data 由于帧起始和帧结束比较简单,CRC 1 1 4 0~64 先说明;其他段随后逐一说明 15 1 1 1
错误帧 过载帧与帧间隔
小结
CAN-bus错误类型
尽管CAN-bus是可靠性很高的总线,但依然可能出现错误;CANbus的错误类型共有5种。 CRC错误
发送节点计算得 到的CRC值与接 收到的CRC值不 同时发生该错误
格式错误
传输的数据帧格 式与任何一种合 法的帧格式不符 时发生该错误
CAN-bus 错误类型
接收报文 成功 发送ACK 成功
失败
2
发送报文 无错
失败 EOF 无效
2
TEC 减1
发送错误帧 3
接收ACຫໍສະໝຸດ Baidu 成功
7 失败
等待EOF
EOF有效
2
4
REC减1
REC 加8
等待EOF
成功
5 失败
发送错误帧 8
6
控制段
控制段共6位,标准帧的控制段由扩展帧标志位IDE、保留位r0和
数据长度代码DLC组成;扩展帧控制段则由IDE、r1、r0和DLC组成。
数据帧 结构
帧起始
仲裁段
控制段
数据段
CRC段
ACK段
帧结束
识别符扩展位,占1bit, 标准帧中该位位于控制段,为显性; 扩展帧中该位位于仲裁段,为隐性。 标准格式 扩展格式
CRC段
ACK段
Data:Byte0 ~ Byte7
传输时MSB先传输
与其他总线协议相比,CAN-bus的短帧结构具有以下优势:
优势 1: 数据量小,发送和接收时间短,实时性高。
优势 2: 数据量小,被干扰的概率小,抗干扰能力强。
CRC段
CAN-bus使用CRC校验进行数据检错,CRC校验值存放于CRC段。 CRC校验段由15位CRC值和1位CRC界定符构成。
数据帧 结构
帧起始
仲裁段
控制段
数据段
CRC段
ACK段
帧结束
ACK槽期间: 发送节点:发送隐性电平 接收正确的节点:发送显性电平 发送节点根 据此结果判 断发送成功
ACK槽
ACK界定符
总线线与结果:显性电平
1个隐性电平


概述
数据帧 远程帧
错误帧 过载帧与帧间隔
小结
远程帧
与数据帧相比,远程帧结构上无数据段,由6个段组成,同理分为
总线仲裁
由于数据帧的RTR位为显性电平,远程帧的RTR位为隐性电平,
所以帧格式和帧ID都相同情况下,数据帧的优先级比远程帧优先级高:
RTR/SRR …… ID段相同 SOF
10 9
8
7
6
5
4
3
2
1
0
节点A 发送数据帧
节点B 发送远程帧
ID[0:10]
ID[0:10]
只听模式
节点A仲裁失败退出发送,进入只听模式; 节点B获得总线,继续发送剩余数据。
标准格式 扩展格式
ID[0 : 10] ID[0 : 10]
RTR SRR IDE ID[11 : 28] RTR
组成29位ID,前11位与标准 替代远程帧请求位, 帧的11位ID编码位置相同 占1bit,为显性
识别符扩展位,占1bit, 标准帧中该位位于控制段,为显性; 扩展帧中该位位于仲裁段,为隐性。
5
种类型。 数据帧 远程帧 错误帧 过载帧 帧间隔
用于发送节点向接收节点传送数据,是使用最多的帧类型
用于接收节点向某个发送节点请求数据 用于当某节点检测出错误时向其他节点通知错误的帧 用于接收节点向发送节点通知自身接收能力的帧
用于将数据帧或远程帧与前面的帧分离的帧


概述
数据帧 远程帧
错误帧 过载帧与帧间隔
相关文档
最新文档