can总线数据链路层是什么?有什么特性?
CAN实现总线分配的方法,可保证当不同的站申请总线存取时,明确地进行总线分配。这种位仲裁的方法可以解决当两个站同时发送数据时产生的碰撞问题。
好的,我们来详细解释一下CAN总线的数据链路层及其特性。
1. 什么是CAN总线的数据链路层?
在计算机网络通信的OSI七层参考模型中,数据链路层位于物理层之上,网络层之下。它的核心任务是在物理连接的两个相邻节点之间提供可靠且有效的数据帧传输服务。
对于CAN总线协议来说,其数据链路层是标准化的核心部分(由ISO 11898-1标准定义)。它是实现CAN总线高效、可靠、实时通信的关键所在。简单理解:
- 它是桥梁: 它接收来自应用层(或者更准确地说,是对象层/传输层)需要发送的信息(消息、报文),并将其组装成符合CAN规范的帧结构。
- 它是交通警察: 它负责管理总线上的数据帧传输,处理多个节点同时想发送数据时发生的冲突(仲裁),确保高优先级消息能无延迟地发送。
- 它是质量检查员: 它内置了强大的错误检测和处理机制,能够发现数据传输过程中发生的绝大多数错误,并能自动启动错误恢复过程(重传),确保传输的高度可靠性。
- 它是流控者: 它管理节点的发送行为,例如在检测到错误时限制其发送频率(错误限制)。
2. CAN总线数据链路层的主要特性
CAN数据链路层最突出的特性源于其设计目标(多主、高实时性、高可靠性、强干扰环境),主要包括:
-
多主结构 & 事件触发:
- 没有中心控制器,所有节点地位平等,都可以主动向总线发送数据。
- 采用事件触发方式通信。当一个节点的状态发生变化(如传感器测量值改变)或需要周期性更新时,它就主动发送消息。这种机制响应速度快,延迟低。
- 特性:避免了轮询机制的延迟,提高了总线利用率。
-
非破坏性逐位仲裁:
- 当多个节点同时试图发送时,冲突不可避免。
- CAN采用基于标识符ID优先级(ID值越小优先级越高)的载波侦听多路访问/逐位仲裁机制。
- 原理: 节点发送的同时也在监听总线电平。如果一个节点发送了一个隐性位(逻辑'1',电压差为0),但在总线上检测到一个显性位(逻辑'0',电压差大于阈值),它就立刻停止发送并转为接收模式,因为它知道有更高优先级的节点赢得了仲裁。
- 特性: "非破坏性" 是指最高优先级的消息总能不受影响地完整发送成功,失败的低优先级节点会自动退出发送尝试,不会有数据损坏,仲裁期间不浪费总线时间。这使得总线利用率极高,实时性保证得到保障(高优先级消息的传输延迟确定可预测)。
-
强大的错误检测与处理:
- 这是CAN总线能在严酷工业环境下可靠运行的关键。
- 检测机制:
- 位监视: 发送节点在发送一个位的同时会回读总线电平。如果发送的位(显性或隐性)与回读到的位不符,则检测到位错误。
- 位填充检查: CAN帧中在帧起始、仲裁场、控制场、数据场连续发送5个相同极性(显性或隐性)位后,必须插入一个反向位(填充位)。接收节点检查这一规则,连续收到6个相同极性位则检测到填充错误。这是重要的检错机制,确保足够多的电平跳变用于同步。
- 帧格式检查: 接收节点检查固定格式的帧字段(如CRC界定符、ACK界定符、EOF等)是否符合规范,检测到违规则报格式错误。
- CRC校验: 发送节点根据数据内容计算一个循环冗余校验码并随帧发送。接收节点重新计算CRC并与接收到的比较,不一致则检测到CRC错误。
- ACK检查: 发送节点在确认时隙(ACK Slot)内如果没有监听到至少一个其他节点发送的显性位(ACK),则表明没有节点成功接收该帧,报应答错误。
- 处理机制: 当节点检测到错误时(除了可能是瞬时干扰),它会立即发送一个显性的错误帧来主动通知总线上的所有节点。当前发送节点收到错误帧后,会丢弃当前发送的帧(数据丢失),并自动尝试重发。这种全局性通知使错误能够快速被整个系统感知和处理。
- 特性: 极其完备的多重错误检测机制,确保所有节点都看到一致的总线状态(不会一半节点认为传输成功另一半认为失败),漏检概率极低(小于未检出错误帧概率 < 4.7 × 10^{-11} / 帧),提供了极高的数据完整性保障。
-
自动重传:
- 节点检测到自身发送失败(如无ACK应答)或因错误标志中断后,会自动尝试重传。
- 特性:无需上层协议干预即可进行错误恢复,提高了可靠性和健壮性。但可能导致多个节点同时重传时再次仲裁(这对总线负载有影响,因此有了错误限制)。
-
错误界定与故障限制:
- 为防止故障节点(如持续发送错误帧、干扰总线)拖垮整个总线,数据链路层引入了错误计数。
- 每个节点维护发送错误计数器(
TEC)和接收错误计数器(REC)。根据错误类型(本地位错误还是总线级错误)和节点角色(发送方还是接收方),计数器的增减规则不同。 - 节点状态迁移:
- 错误激活: 正常状态,可以正常发送主动错误标志。
- 错误认可: TEC或REC达到较高阈值时进入。处于此状态的节点发送被动错误标志(隐性位),退出总线竞争更早。
- 总线关闭: 当TEC超过更高阈值时进入。节点彻底断开与总线的连接,停止发送和接收任何帧(进入“静默”状态),直到用户干预(如重启)或内部计时器触发返回错误认可状态。
- 特性: 实现了故障节点的自隔离,保护了总线的整体可用性,是CAN容错能力的重要体现。
-
报文过滤:
- 虽然通常认为报文过滤是高层(如CAN控制器或软件驱动)的任务,但其基础由数据链路层提供。
- 接收节点在数据链路层读取帧的标识符ID部分。
- 特性: CAN控制器的硬件寄存器能够基于这个ID进行快速匹配和过滤,只接收那些ID满足特定条件的帧(如匹配某个值或在某个范围内),将不关心的帧直接丢弃,无需CPU大量中断处理,大大减轻了主处理器的负担。这是CAN总线上节点可以“监听”但不关心所有消息却不会堵塞自身的关键。
总结
CAN总线的数据链路层是整个协议栈的心脏,负责将高层信息封装成帧、管理总线访问权限(仲裁)、确保数据传输的高度可靠性(强大的错误检测和自动重传),并保护总线免受故障节点影响(错误限制)。正是这些特性——多主、非破坏性仲裁、强大的错误检测与处理、自动重传、错误限制以及硬件过滤——共同造就了CAN总线在汽车、工业控制等对实时性和可靠性要求极高的领域的广泛应用和卓越声誉。
PCIE数据链路层架构解析
PCIe的数据链路层在事务层和物理层之间,用来负责链路管理,其主要功能是保证来自事务层的TLP在PCIe链路中的正确传输,为此数据链路层定义了一系列的DLLP报文,
2024-11-05 17:06:04
介绍车用CAN通讯的基础知识,数据链路层部分
本博文主要介绍了车用CAN通讯的基础知识,数据链路层部分,主要包括帧类型、帧起始&帧结束、仲裁段、控制段、数据段、CRC段&AC
CAN总线的系统架构
使用的CAN2517FD有所区别,仅供参考),主要体现在数据链路层这一部分。应用程序,具体表现在控制器以不同的通信方式、MCP2517FD提供的相应指令集和指令集格式对
TLP的数据链路层组成与操作
本章将着重讲述TLP的数据链路层组成与操作,上一篇更新应该为第五讲,数据链路层位于事务层和物理层之间,使用容错和重传机制保证了数据传输的完整
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 芯片的工作原理是什么?
- ssd是什么意思
- 什么是蓝牙?它的主要作用是什么?
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- dtmb信号覆盖城市查询
- 怎样挑选路由器?
- 华为芯片为什么受制于美国?
- 元宇宙概念股龙头一览
- type-c四根线接法图解
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- BLDC电机技术分析
- 复位电路的原理及作用
- dsp是什么意思?有什么作用?
- iphone13promax电池容量是多少毫安
- 苹果无线充电器怎么使用?
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 传感器常见类型有哪些?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机