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层这时候只需把帧继续向网络层传输,所以帧的结构也发生了变化。

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

协议模型的最底层是_CAN通信协议栈(二) 之对ISO11898-1的理解相关推荐

  1. ssh协议是osi_TCP/IP 协议模型

    TCP/IP 与OSI 七层模型 以上为 网络OSI 七层协议模型 物理层 网络传输中最底层负责数据传输的物理硬件, 这里相当与以太网或者电话线等物理设备,可以模糊定义其为数据传输过程中的实际物理媒介 ...

  2. 【网络编程】一、如何记住OSI七层协议模型,看完还记不住的来打我。

    学过计算机网络这门课的童鞋,一定都知道OSI七层协议模型. 那么现在闭上眼,能按顺序说出来的童鞋麻烦右上角点个赞,让博主看看有多少? 哇,0个赞,不是吧. 没关系,下面跟着博主的思路,看完本篇之后,我 ...

  3. AUTOSAR从入门到精通100讲(四十八)-Lin通信协议栈分析两步走-LinTrcvLIN Driver

    LinTrcv 0.Lin通信协议栈简介: LIN通信服务是一组用于与LIN通信系统进行车辆网络通信的模块.提供统一的LIN网络接口.对应用层程序隐藏协议信息和消息属性的特性. Lin通信服务包括: ...

  4. AUTOSAR从入门到精通100讲(三十五)-Lin通信协议栈分析三部曲LinTrcv配置及代码分析

    LinTrcv 0.Lin通信协议栈简介: LIN通信服务是一组用于与LIN通信系统进行车辆网络通信的模块.提供统一的LIN网络接口.对应用层程序隐藏协议信息和消息属性的特性. Lin通信服务包括: ...

  5. OSI七层协议模型和各自的功能

    都知道OSI有七层协议,那么为什么有七层协议,这七层协议都是干什么的呢?我觉得应该在此做一个总结,来系统和易懂地来讲解各个部分. 首先,什么是协议?就像早晚班的交接,晚班的人A下班之后对接替他的人B说 ...

  6. 如何记住OSI七层协议模型,脑洞大开有木有?

    学过计算机网络的各位,一定知道OSI七层协议模型.OSI七层协议模型(或简称OSI七层模型),是一个定义得非常好的协议规范,被认为是现代开放性通信系统互连互通的标准参考模型.OSI模型有7层结构,每层 ...

  7. 通信工程专业就业之------通信协议栈开发(LTE/NR)

    通信工程专业-信息与通信工程学科的学生,就业可以选择做通信协议栈开发,在校期间大致要学习: 通信知识:信号与系统,数字信号处理,通信原理,移动通信原理,电路(数字,模拟,射频),电磁场与电磁波 编程知 ...

  8. TCP/IP篇(1)--协议模型

    TCP/IP参考模型分为四个层次:应用层.传输层.网络互连层和主机到网络层. (1)主机到网络层:实际上TCP/IP参考模型没有真正描述这一层的实现,只是要求能够提供给其上层-网络互连层一个访问接口, ...

  9. AUTOSAR实战教程 - 通信协议栈CAN_CANIF_PDUR_CANTP_COM_XCP_ECUC配置一网打尽

    通讯协议栈几乎是CP AUTOSAR中最庞杂的一块.由于其涉及的模块比较多(仅实现CAN信号的收发就需要ECUC/CAN/CANIF/CANTP/PDUR/COM/XCP这么多模块的协作!),且名词概 ...

最新文章

  1. HDU-1269 Tarjan求强连通分量,模板题
  2. 99%的人都不会的用户流失分析,到底应该怎么做?
  3. php100 swfupload,swfupload上传图片读取最大只有100*75
  4. 中国 IT 行业平均工资再次碾压金融业,意味着什么?
  5. python123词频统计之哈姆雷特_基于Yarn的Spark环境,统计哈姆雷特词频(1)-阿里云开发者社区...
  6. 强化学习: Q-learning实例python实现
  7. 产品笔试后不会知识点总结
  8. Android P GPS信号模拟
  9. 《诗经·邶风·击鼓》
  10. 拔丝芋头的Java学习日记--Day1
  11. 移除bable打包的use strict模式(vue2)
  12. C++11之decltype
  13. JS逆向:猿人学爬虫比赛第九题详细题解
  14. python 爬虫 关于requests的基础知识及常用的一些User-Agent
  15. Spring框架究竟是什么
  16. 看雪软件安全精选:二进制各种漏洞原理实战分析总结
  17. Token Bucket 令牌桶算法
  18. 陈伟霆,赵丽颖,李易峰,青云志,分析。
  19. CVE-2022-30190(follina):Microsoft诊断工具(MSDT)远程代码执行漏洞复现(超级详细)
  20. Linux开发工具vim篇

热门文章

  1. 重磅!2021泰晤士世界大学排名公布!
  2. 百度一口气亮出NLP十年积累:完整技术布局全面披露,面向业界砸下11项七夕大礼...
  3. 10个必会的 PyCharm 技巧
  4. 【每日一算法】实现strStr()
  5. 标准访问控制列表和扩展的访问控制列表有什么区别??
  6. 使用OpenCV为视频中美女加上眼线
  7. 细粒度图像分割 (FGIS)
  8. 利用OpenCV识别玻璃纤维织物劈缝缺陷
  9. 目标跟踪初探(DeepSORT)
  10. 实战:基于深度学习和几何的3D边界框估计