前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CAN协议栈(二) 之对ISO11898-1的理解

CAN协议栈(二) 之对ISO11898-1的理解

作者头像
xbai921031
发布2022-05-25 14:56:21
1.8K0
发布2022-05-25 14:56:21
举报
文章被收录于专栏:汽车软件工程师

ISO11898主要定义了物理层和数据链路层,对比标准OSI通信模型,物理层和数据链路层属于最底层的两个层级。在详细讲ISO11898-1之前先来了解一下汽车CAN通信网络中常用的几个协议都处于OSI模型的什么位置。

图1 OSI模型

物理层定义了比特流的一些性质及电气特性,不在本文讨论范围内故跳过。

>>>>

数据链路层(Data Link Layer)

数据链路层(Data Link Layer)的作用主要是将物理层的数据比特流封装成帧,并控制帧在物理信道上的传输,还包含检错、调节传送速率等功能。

在ISO11898-1中,将数据链路层(Data Link Layer)分为两个子层:逻辑链路控制(Logical Link Control,LLC)和媒体访问控制(Medium Access Control,MAC)。

逻辑链路控制(LLC):数据链路层(Data Link Layer)的上层部分,DLL服务通过LLC为网络层提供统一接口。

媒体访问控制(Medium Access Control,MAC):定义了数据帧如何在介质上进行传输,我们知道CAN属于广播式的总线,MAC就分配了帧在信道上的使用权。

图2 数据链路层(DLL)示意图

每一层都有都有各自定义的PDU(Protocol Data Uint),同层级之间的通信通过交换PDU来实现,两个上下层级通过SDU(Service Data Uint)来进行交互。

图3 层级间交互示意图

>>>>

CAN的特点

1.基于多主优先级的总线访问

总线空闲时,任何节点都可以发送数据。当有多个节点同时发送时,就要根据ID值按位进行仲裁(ID值越小优先级越高),优先级高的获得总线访问权。

2.非破坏性仲裁机制

3.广播型

节点通过本地过滤接收自己所需的数据,不需要的就过滤掉。

4.配置灵活

可随意增减节点,不影响软硬件。节点数量理论上无限制,实际受电气负载限制。

5.系统范围内数据一致性

6.错误检测

7.自动重传仲裁或错误期间被破坏的数据

8.区分临时错误和永久性故障节点,自动关闭有缺陷节点

>>>>

MAC子层

  • 数据的打包/拆包
  • 帧编码(填充/去填充)
  • 错误检测及通知
  • 串并行转换

MAC层有3种服务:

  1. 数据帧传输
  2. 远程帧传输
  3. 过载帧传输

MAC层帧结构:

1.数据帧

数据帧将数据从发送器传输到接收器。

标准格式:

图4 数据帧标准格式

扩展格式:

图5 数据帧扩展格式

(1)帧起始

帧起始(SOF)标志数据帧和远程帧的起始,仅有一个显性位组成(0)。

(2)仲裁域

标准格式中,仲裁域由11位标识符和RTR位组成;扩展格式中,仲裁域由29位标识符和SRR位、IDE位、RTR位组成。

标识符(Identifier):在扩展帧中,有11位基本ID和18位扩展ID。

RTR位(Remote Transmission Request Bit):0表示数据帧,1表示远程帧。

SRR位(Subtitue Remote Request Bit):SRR位为0,当标准帧与扩展帧发生冲突,而扩展帧的的基本ID与标准帧的ID相同时,标准帧优先于扩展帧。

IDE位(Identifier Extension Bit):扩展格式里为隐性(1)。

(3)控制域

IDE位与r0组成保留位。

DLC有4位,表示数据长度,0 ~ 8 个字节。

(4)数据域

0 ~ 8 个字节的数据。

(5)循环冗余码(CRC)域

CRC序列里存计算出的CRC校验值。

CRC界定符包含1个隐性位(1)。

(6)应答场(ACK)

应答间隙:在发送器隐性位写一个显性位(0)表示收到匹配到正确CRC。

应答界定符:1位隐性位(1)。

(7)帧结束

帧结束(EOF)由7个隐性位(1)组成。

2.远程帧

节点发出远程帧,请求具有相同ID的数据帧。

远程帧也分标准格式和扩展格式,RTR位为1表示远程帧,相比数据帧少了数据域。

标准格式:

图6 远程帧标准格式

扩展格式:

图7 远程帧扩展格式

3.错误帧

任何节点检测到总线错误就发出错误帧。

4.过载帧

过载帧用在相邻数据帧或者远程帧之间提供附加的延时。

5.帧间隔

>>>>

LLC子层

  • 本地过滤
  • 过载通知
  • 错误恢复管理

LLC层有2种服务:

  1. 数据帧传输
  2. 远程帧传输

LLC层帧结构:

1.数据帧

图8 数据帧结构

2.远程帧

图9 远程帧结构

MAC层对帧优先级进行了仲裁发送给LLC层,LLC层这时候只需把帧继续向网络层传输,所以帧的结构也发生了变化。

以上均是笔者自己的理解,如有错误欢迎指正。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 进击的程序喵 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档