汽车电子autosar系列50篇(一)-博世Can 规范系列通读
1 介绍
控制器局域网 (CAN) 是一种串行通信协议,可有效支持具有非常高安全级别的分布式实时控制。
它的应用领域从高速网络到低成本的多路布线。在汽车电子设备中,发动机控制单元、传感器、防滑系统等使用比特率高达 1 Mbit/s 的 CAN 连接。同时,在车身电子设备(例如灯组、电动车窗等)中内置以替换原本需要的线束具有成本效益。
本规范的目的是实现任意两个 CAN 实现之间的兼容性。然而,兼容性具有不同的方面,例如电气特性和要传输的数据的解释。为了实现设计透明度和实现灵活性,CAN 已根据 ISO/OSI 参考模型细分为不同的层:
-
数据链路层
-逻辑链路控制 (LLC) 子层
-媒体访问控制 (MAC) 子层
-
物理层
请注意,在以前版本的 CAN 规范中,数据链路层的 LLC 和 MAC 子层的服务和功能已在表示为“对象层”和“传输层”的层中进行了描述。LLC子层的范围是
-
提供数据传输和远程数据请求服务,
-
决定实际上接受 LLC 子层收到的哪些消息,
-
提供恢复管理和过载通知的方法。
定义对象处理有很大的自由度。MAC 子层的范围主要是传输协议,即控制成帧、执行仲裁、错误检查、错误信令和故障限制。在 MAC 子层内,决定总线是否空闲以开始新的传输或接收是否刚刚开始。位时序的一些一般特征也被视为 MAC 子层的一部分。MAC 子层的本质是没有修改的自由。
物理层的范围是关于所有电气特性的不同节点之间的实际比特传输。在一个网络中,物理层当然,必须对所有节点都相同。然而,选择物理层可能有很大的自由度。
本规范的范围是定义 数据链路层的 MAC 子层和一小部分LLC 子层,并描述 CAN 协议对周围层的影响。
2 基本概念
CAN具有以下特性
-
消息的优先级
-
保证延迟时间
-
配置灵活性
-
具有时间同步的多播接收
-
全系统数据一致性
-
多主
-
错误检测和信令
-
一旦总线再次空闲,就会自动重新传输损坏的消息
-
节点的临时错误和永久故障与缺陷节点的自主关闭之间的区别
根据 OSI 参考模型的 CAN 分层架构
-
物理层定义了信号的实际传输方式,因此处理了位定时、位编码和同步的描述。在本规范中,未定义物理层的驱动器/接收器特性以允许针对其应用优化传输介质和信号级实现。
-
MAC 子层代表 CAN 协议的内核。它呈现从 LLC 子层接收到的消息并接受要传输到 LLC 子层的消息。MAC 子层负责消息成帧、仲裁、确认、错误检测和信令。MAC 子层由称为故障限制的管理实体进行监督,该管理实体是用于区分短期干扰和永久性故障的自检机制。
-
LLC 子层与消息过滤、过载通知和恢复管理有关。
本规范的范围是定义数据链路层和 CAN 协议对周围层的影响。
消息
总线上的信息以不同但长度有限的固定格式消息发送(参见第 3 节:消息传输)。当总线空闲时,任何连接的单元都可以开始传输新消息。
信息路由
在 CAN 系统中,CAN 节点不使用任何有关系统配置的信息(例如站地址)。这有几个重要的后果。
-
系统灵活性:无需对任何节点和应用层的软件或硬件进行任何更改,即可将节点添加到 CAN 网络中。
-
消息路由:消息的内容由标识符命名。IDENTIFIER 不指示消息的目的地,而是描述数据的含义,因此网络中的所有节点都能够通过消息过滤来决定它们是否对数据进行操作。
-
多播:作为消息过滤概念的结果,任何数量的节点都可以接收并同时对同一消息采取行动。
-
数据一致性:在 CAN 网络中,可以保证所有节点或没有节点同时接受消息。因此,系统的数据一致性是通过多播和错误处理的概念来实现的。
比特率
CAN 的速度在不同的系统中可能会有所不同。然而,在给定的系统中,比特率是统一且固定的。
优先级
IDENTIFIER 定义总线访问期间的静态消息优先级。
远程数据请求
通过发送远程帧,需要数据的节点可以请求另一个节点发送相应的数据帧。DATA FRAME 和相应的 REMOTE FRAME 由相同的 IDENTIFIER 命名。
多主
当总线空闲时,任何单元都可以开始传输消息。具有更高优先级的消息要传输的单元获得总线访问权。
仲裁
每当总线空闲时,任何单元都可以开始传输消息。如果 2 个或更多单元同时开始传输消息,则总线访问冲突将通过使用 IDENTIFIER 的按位仲裁解决。仲裁机制保证信息和时间都不会丢失。如果同时启动具有相同标识符的数据帧和远程帧,则数据帧优先于远程帧。在仲裁期间,每个发送器将发送的位电平与总线上监控的电平进行比较。如果这些电平相等,则该单元可以继续发送。当一个“隐性”电平被发送并且一个“显性”电平被监控时(见总线值),该单元失去仲裁并且必须退出而不发送更多位。
安全
为了实现数据传输的最大安全性,在每个 CAN 节点中都实施了强大的错误检测、信令和自检措施。
-
错误检测
为了检测错误,已采取以下措施:
-- 监控(发送器将要传输的位电平与总线上检测到的位电平进行比较)
-- 循环冗余校验
-- 位填充
-- 消息帧检查
-
错误检测性能
-- 错误检测机制具有以下特性:
-- 检测到所有全局错误。
-- 检测到发射机的所有本地错误。
-- 最多可检测到 5 个消息中随机分布的错误。
-- 检测到消息中长度小于 15 的突发错误。
-- 检测到消息中任何奇数的错误。
未检测到的损坏消息的总残差概率:小于
消息错误率 * 4.7 * 10 -11。
错误信号和恢复时间
任何检测到错误的节点都会标记损坏的消息。此类消息将被中止并将自动重新传输。如果没有进一步的错误,从检测到错误到下一条消息开始的恢复时间最多为 31 位时间。
故障限制
CAN 节点能够区分短暂干扰和永久性故障。有缺陷的节点被关闭。
连接
CAN 串行通信链路是一种可以连接多个单元的总线。这个数字没有理论上的限制。实际上,单元的总数将受到总线线路上的延迟时间和/或电力负载的限制。
单通道
总线由一个承载比特的通道组成。从该数据可以导出重新同步信息。该通道的实现方式在本规范中没有固定。例如单线(加地线)、两根差分线、光纤等。
总线值
总线可以具有两个互补的逻辑值之一:“显性”或“隐性”。在“显性”和“隐性”位同时传输期间,产生的总线值将是“显性”。例如,在总线的线与实现的情况下,“显性”电平将由逻辑“0”表示,“隐性”电平由逻辑“1”表示。本规范中未给出代表逻辑电平的物理状态(例如电压、光)。
确认
所有接收者检查接收到的消息的一致性,并确认一致的消息并标记不一致的消息。
睡眠模式/唤醒
为了降低系统的功耗,可以将 CAN 设备设置为睡眠模式
没有任何内部活动和断开的总线驱动程序。睡眠模式在任何总线活动或系统内部条件唤醒后结束。唤醒时,内部活动重新启动,尽管 MAC 子层将等待系统的振荡器稳定,然后等待直到它与总线活动同步(通过检查 11 个连续的“隐性”位),在总线驱动程序再次设置为“on-bus”之前。
振荡器容差
根据经验,位时序要求允许陶瓷谐振器用于传输速率高达 125kbit/s 的应用中;更精确的评估请参考
3 消息传递
3.1 帧格式
有两种不同的格式,它们的 IDENTIFIER 字段的长度不同:具有 11 位 IDENTIFIER 数量的帧表示标准帧。相反,包含 29 位 IDENTIFIER 的帧表示为Extended Frames。
3.2 帧类型
消息传输由四种不同的帧类型显示和控制:
-
数据帧将数据从发送器传送到接收器。
-
REMOTE FRAME 由总线单元发送,请求发送具有相同标识符的数据帧。任何单元在检测到总线错误时都会发送一个错误帧。
-
过载帧用于在前面和后面的数据或远程帧之间提供额外的延迟。
数据帧和远程帧可用于标准帧格式和扩展帧格式;它们通过 INTERFRAME SPACE 与前面的帧分开。
3.2.1 数据帧
数据帧由七个不同的位域组成:
帧起始、仲裁场、控制场、数据场、CRC
场,确认场,帧结束。数据字段的长度可以为零。
帧开始(标准格式和扩展格式)
帧开始 (SOF) 标志着数据帧和远程帧的开始。它由单个“显性”位组成。
只有当总线空闲时,站点才被允许开始传输(参见“帧间间隔”)。所有站都必须先同步到由站开始传输的帧开始(参见“硬同步”)引起的前沿。
仲裁领域
仲裁场的格式对于标准格式和扩展格式帧有所不同。
-
在标准格式中,仲裁场由 11 位 IDENTIFIER 和 RTR-BIT 组成。IDENTIFIER 位表示为 ID-28 ... ID-18。
-
在扩展格式中,仲裁场由 29 位标识符、SRR 位、IDE 位和 RTR 位组成。IDENTIFIER 位表示为 ID-28... ID-0。
为了区分标准格式和扩展格式,以前 CAN 规范版本 1.0-1.2 中的保留位 r1 现在表示为 IDE 位。
标识符
-
标识符 -标准格式
IDENTIFIER 的长度为 11 位,对应于扩展格式中的基本 ID。这些位按照从 ID-28 到 ID-18 的顺序传输。最低有效位是 ID-18。7 个最高有效位 (ID-28 - ID-22) 不得全部为“隐性”。
-
标识符 -扩展格式
与标准格式相比,扩展格式由 29 位组成。格式包括两个部分:
-- 具有 11 位的基本 ID和
-- 18 位扩展 ID
-
基本标识
基本 ID 由 11 位组成。它按照从 ID-28 到 ID-18 的顺序传输。它等同于标准标识符的格式。基本 ID 定义了扩展帧的基本优先级。
-
扩展 ID
扩展 ID 由 18 位组成。它以 ID-17 到 ID-0 的顺序传输。
在标准帧中,IDENTIFIER 后跟 RTR 位。RTR BIT(标准格式和扩展格式)
-
远程传输请求 BIT
在数据帧中,RTR 位必须是“主导的”。在远程帧内,RTR 位必须是“隐性的”。
在扩展帧中,首先传输基本 ID,然后是 IDE 位和 SRR 位。扩展 ID 在 SRR 位之后发送。
-
SRR BIT(扩展格式)替代远程请求 BIT
SRR 是一个隐性位。它在扩展帧中在标准帧中 RTR 位的位置传输,因此替代了标准帧中的 RTR 位。
因此,以标准帧优先于扩展帧的方式解决标准帧和扩展帧的冲突,其基本 ID(参见下面的“扩展标识符”)与标准帧的标识符相同。
-
IDE BIT(扩展格式)标识符扩展位 IDE 位属于
-- 扩展格式的仲裁字段
-- 标准格式的控制字段
标准格式中的 IDE 位是“显性”传输,而在扩展格式中,IDE 位是隐性的。
-
控制字段(标准格式和扩展格式)
控制场由六位组成。控制字段的格式对于标准格式和扩展格式是不同的。标准格式的帧包括数据长度代码、IDE 位,它以“显性”传输(参见以上),以及保留位 r0. 扩展格式中的帧包括数据长度代码和两个保留位 r1 和 r0。保留位必须以“显性”发送,但接收器接受所有组合中的“显性”和“隐性”位。
数据长度代码(标准格式和扩展格式)
数据字段中的字节数由数据长度代码指示。该数据长度代码为 4 位宽,在控制场内传输。
通过DATA LENGTH CODE缩写对数据字节数进行编码:
-
d 'dominant' -
r '隐性'
数据帧:允许的数据字节数:{0,1,. ,7,8}。
不能使用其他值。
-
数据字段(标准格式和扩展格式)
数据场由要在数据帧内传输的数据组成。它可以包含 0 到 8 个字节,每个字节包含 8 位,首先传输 MSB。
-
CRC FIELD(标准格式和扩展格式)
包含 CRC SEQUENCE 后跟一个 CRC DELIMITER。
CRC SEQUENCE(标准格式和扩展格式)
帧校验序列源自循环冗余码,最适合比特数小于 127 位的帧(BCH 码)。
为了进行 CRC 计算,将要除法的多项式定义为多项式,其系数由解填充的比特流给出,包括帧起始、仲裁场、控制场、数据场(如果
存在),对于 15 个最低系数,除以 0。该多项式除以生成多项式(系数以模 2 计算):
X 15 + X 14 + X 10 + X 8 + X 7 + X 4 + X 3 + 1。
该多项式除法的余数是通过总线传输的 CRC SEQUENCE。为了实现这个功能,可以使用一个 15 位移位寄存器 CRC_RG(14:0)。如果 NXTBIT 表示位流的下一位,由从帧开始到数据场结束的解填充位序列给出,则 CRC SEQUENCE 计算如下:
CRC_RG = 0; // 初始化移位寄存器
在 DATA FIELD 的最后一位发送/接收之后,CRC_RG 包含 CRC 序列。
CRC DELIMITER(标准格式和扩展格式)
CRC SEQUENCE 之后是 CRC DELIMITER,它由单个“隐性”位组成。
-
ACK FIELD(标准格式和扩展格式)
ACK FIELD 是两位长,包含 ACK SLOT 和 ACK DELIMITER。在 ACK FIELD 中,发送站发送两个“隐性”位。
正确接收到有效消息的接收器通过在 ACK SLOT 期间发送“显性”位(它发送“ACK”)来将此报告给发送器。
-
确认槽
通过在发送器的“隐性”位上加上“显性”位,所有接收到匹配 CRC SEQUENCE 的站都在 ACK SLOT 内报告这一点。
-
确认分隔符
ACK DELIMITER 是 ACK FIELD 的第二位,必须是一个“隐性”位。因此,ACK SLOT 被两个“隐性”位(CRC DELIMITER、ACK DELIMITER)包围。
-
帧结束(标准格式和扩展格式)
每个数据帧和远程帧都由一个由七个“隐性”位组成的标志序列定界。
- 点赞
- 收藏
- 关注作者
评论(0)