GB/T 41588.1-2022 全文(道路车辆 CAN 第 1 部分:数据链路层和物理信令)

组织:年份:可获取性:状态: 已验证优先级: ☆☆☆

GB/T 41588.1-2022 全文(道路车辆 CAN 第 1 部分:数据链路层和物理信令)

标准信息:GB/T 41588.1-2022《道路车辆 控制器局域网(CAN)第 1 部分:数据链路层和物理信令》,国家标准化管理委员会 2022 年发布,采标 ISO 11898-1。 全文定位:完整正文站内查阅,章节结构与表格已保留(自动提取整理)。

← 返回标准查阅 ICS 43. 020 CCST 35 中 华 人 民 共 和 国 国 家 标 准 GB/T 41588. 1—2022/ISO 11898-1:2015 道路车辆 控制器局域网(CAN) 第 1 部分 :数据链路层和物理信令 Road vehicles—Controllerarea network (CAN) — Part1:Data link layerandphysicalsignalling (ISO 11898-1:2015,IDT) 2022-07-11发布 2023-02-01实施 国家市场监督管理总局 国家标准化管理委员会 发 布 GB/T 41588. 1—2022/ISO 11898-1:2015 GB/T 41588. 1—2022/ISO 11898-1:2015 前 言 本文件按照 GB/T 1. 1—2020《标准化工作导则 第 1部分 :标准化文件的结构和起草规则》的规定 起草 。 本文件是 GB/T 41588《道路车辆 控制器局域网(CAN)》的第 1 部分 。GB/T 41588 已经发布了 以下部分 : — 第 1部分 :数据链路层和物理信令 ; — 第 2部分 :高速媒介访问单元 ; — 第 3部分 :低速容错 、媒介相关接 口 ; — 第 4部分 : 时间触发通信 。 本文件等同采用 ISO 11898-1:2015《道路车辆 控制器局域网(CAN) 第 1 部分 :数据链路层和 物理信令》。 本文件做了下列编辑性修改 : — 根据 GB/T 1. 1要求 ,将 ISO 11898-1:2015 中第 2 章 “一致性 ”调至第 12章 ; — 第 2 章规范引用文件中增加“ISO/IEC 8802-2”。 请注意本文件的某些内容可能涉及专利 。本文件的发布机构不承担识别专利的责任 。 本文件由中华人民共和国工业和信息化部提出 。 本文件由全国汽车标准化技术委员会(SAC/TC114) 归 口 。 本文件起草单位 :浙江吉利控股集团有限公司 、中国汽车技术研究中心有限公司 、中国第一汽车集 团有限公司 、长城汽车股份有限公司 、惠州市德赛西威汽车电子股份有限公司 、兴科迪科技(泰州) 有限 公司 、一汽-大众汽车有限公司 、东风汽车集团股份有限公司 、上汽通用五菱汽车股份有限公司 、东软集 团(大连) 有限公司 、泛亚汽车技术中心有限公司 、中汽研汽车检验中心(天津) 有限公司 、中汽研(天津) 汽车工程研究院有限公司 。 本文件起草人 :胡峥楠 、甄海川 、伍永会 、单渤凯 、朱彤 、季国田 、李长龙 、刘彬 、伍宇志 、史晓密 、吕亮 、 范志容 、覃华强 、丁杰 、孙旺 、刘乐 、韩光省 、檀庭跃 、车长发 、杜八南 、文清浩 、王立崇 。 引 言 控制器局域网(CAN) ,是一种串行通信协议 ,具有实时性强 、高可靠性 、低成本等特点 ,支持分布式 实时控制和多路复用 ,广泛用于道路车辆和其他控制领域 ,是国际上应用最广泛的现场总线之一 。本文 件旨在规范高速 CAN模块数据链路层帧格式相关参数及错误处理等信息 。 GB/T 41588《道路车辆 控制器局域网(CAN)》包含以下四个部分 : — 第 1部分 :数据链路层和物理信令 。规定了一些用于建立 CAN 数据链路层模块间的数字信 息交互的特性 、传统 CAN 和可变数据速率 CAN 帧格式 。 — 第 2部分 :高速媒介访问单元 。规定了 CAN 控制器的高速物理介质连接( HS-PMA) 应用于 道路汽车的分布式实时控制和多路复用的串行通信协议 。 — 第 3部分 :低速容错 、媒介相关接 口 。规定了基于 CAN 的道路车辆电子控制单元之间的数字 信息的交互特性 ,低速 CAN应用层的容错行为以及基于 ISO/OSI层模型的媒介相关接口和 物理媒介连接物理层 。 — 第 4部分 : 时间触发通信 。规定了时间触发通信 ,其包含于控制器局域网(CAN) 协议 :用于道 路车辆的 ,支持分布式实时控制和多路复用的串行通信协议 。 图 1展示 OSI模型与 CAN数据链路层及物理子层的对应关系 。 图 1 OSI模型与 CAN数据链路层及物理子层的对应关系 道路车辆 控制器局域网(CAN) 第 1 部分 :数据链路层和物理信令

1 范围

本文件规定了一些用于建立 CAN数据链路层模块间的数字信息交互的特性 。控制器局域网是 一 种串行通信协议 ,支持分布式实时控制和多路复用 ,用于道路车辆和其他控制应用 。 本文件规定了传统 CAN 和可变数据速率 CAN 帧格式 。传统 CAN 帧格式比特率可达 1 Mbit/s, 每帧有效负载可达 8字节 ,可变数据速率帧格式比特率高于 1 Mbit/s,每帧有效负载超过 8字节 。 本文件根据 ISO/IEC 7498-1开放系统互连(OSI) 的 ISO 参考模型 ,从分层的角度描述了 CAN 的 一般架构 ,CAN数据链路层根据 ISO/IEC 8802-2和 ISO/IEC 8802-3规定 。 本文件包含以下方面的详细规范(见图 2) : — 逻辑链路控制子层 ; — 媒体访问控制子层 ; — 物理编码子层 。 有三种实现选项 ,如下 : — 仅支持传统 CAN 帧格式 ,不兼容可变数据速率帧格式 ; — 支持传统 CAN 帧格式 ,且兼容可变数据速率帧格式 ; — 支持传统 CAN 帧格式 ,且支持可变数据速率帧格式 。 在新的设计中 ,宜实现最后一种方案 。 注 : 只有在不使用可变数据速率帧格式的情况下 ,第一个选项的实现才能与第三个选项的实现通信 。否则 ,将产生 错误帧 。在使用第一个选项的 CAN 网络中 使 用 可 变 数 据 速 率 帧 格 式 也 是 有 可 能 的 , 但 不 属 于 本 文 件 规 定 的 范围 。

2 规范性引用文件

下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款 。其中 , 注 日期的引用文 件 ,仅该日期对应的版本适用于本文件 ;不注日期的引用文件 ,其最新版本(包括所有的修改单) 适用于 本文件 。 ISO/IEC 7498-1 信息处理系统 开放系统互连 第 1部分 :基本参考模式(Information technol- ogy— Open systems interconnection—Basic reference model: The basic model) 注 : GB/T 9387. 1—1998 信息技术 开放系统互连 基本参考模型 第 1部分 :基本模型(ISO/IEC 7498-1:1994, IDT) ISO/IEC 8802-2 信息技术 系统间远程通信和信息交换 局域网和城域网 特定要求 第 2部 分 :逻 辑 链 路 控 制 (Information technology—Telecommunications and information exchange between systems—Localand metropolitan area networks—Specific requirements—Part2:Logicallink control) 注 : GB/T 15629. 2—2008 信息技术 系统间远程通信和信 息 交 换 局 域 网 和 城 域 网 特 定 要 求 第 2 部 分 :逻 辑链路控制 (ISO/IEC 8802-2:1998,IDT) ISO/IEC 8802-3 信息技术 系统间远程通信和信息交换 局域网和城域网 特定需求 第 3部 分 : 以太网标准(Information technology—Telecommunicationsand information exchangebetweensys- tems—Localand metropolitan area networks—Specific requirements—Part3: Standard forEthernet) 注 : GB/T 15629. 3—2014 信息技术 系统间远程通信和信 息 交 换 局 域 网 和 城 域 网 特 定 要 求 第 3 部 分 :带 碰撞检测的载波侦听多址访问(CSMA/CD) 的访问方法和物理层规范(ISO/IEC 8802-3:2000,MOD)

3 术语和定义

下列术语和定义适用于本文件 。 3. 1 仲裁段 arbitration phase 使用标称位时间的段 。 3.2 位填充 bitstuffing 当使用 NRZ位表示时 ,为定期重新同步提供总线状态改变的一种帧编码方法 。 注 : 每当发送逻辑在数据中发现一定数量(填充宽度) 连 续 相 同 的 位 值 , 它 会 在 输 出 位 流 中 自 动 填 充 一 个 值 相 反 的 位 , 即填充位 。接收方将数据帧和远程帧中的填充位去掉 , 即执行相反的进程 。 3.3 总线 bus 所有节点都是被动连接并允许双向传输的通信网络的拓扑 。 3.4 总线比较器 buscomparator 将来自通信媒介的物理信号转换成逻辑信息或者数据信号的电路 。 3.5 总线驱动 busdriver 将信息或者数据信号转换成可以在通信媒介上传输的物理信号的电路 。 3.6 总线状态 busstate 两种互补的逻辑状态中的一种 :显性或隐性 。 注 : 显性位相当于逻辑 0, 隐性位相当于逻辑 1。如 果 同 时 传 输 显 性 和 隐 性 位 , 最 终 总 线 状 态 为 显 性 。 当 没 有 传 输 时 ,总线为空闲 。处于空闲时间时 ,总线为隐性状态 。 3.7 传统标准帧格式 classicalbase frame format 使用 11位 ID,传输时只用 1种位速率 ,一帧最多包含 8个数据字节的数据帧或者远程帧格式 。 3. 8 传统扩展帧格式 classicalextended frame format 使用 29位 ID,传输时只用 1种位速率 ,一帧最多包含 8个数据字节的数据帧或者远程帧格式 。 3.9 传统帧 classicalframe 指使用传统标准帧格式 、或者传统扩展帧格式的数据帧或者远程帧 。 3. 10 基于内容的仲裁 content-based arbitration 当多个节点同时访问总线时 ,解决总线冲突的 CSMA 仲裁进程 。 3. 11 数据位速率 data bitrate 数据段单位时间内的位数量 ,与位编码/解码无关 。 3. 12 数据位时间 data bittime 数据段的一个位占用的时间长度 。 3. 13 数据帧 data frame 包含用户数据的帧 。 3. 14 数据段 data phase 使用数据位时间的阶段 。 3. 15 边沿 edge 两个连续时间份额间的总线状态的差异 。 3. 16 错误帧 error frame 指示检测到错误情形的帧 。 3. 17 支持 FD FD enabled 可以发送和接收 FD 帧和传统帧 。 3. 18 FD标准帧格式 FD base frame format 使用 11位 ID,传输时使用可变的位速率 ,一帧最多包含 64个数据字节的数据帧格式 。 3. 19 FD 扩展帧格式 FD extended frame format 使用 29位 ID,传输时使用可变的位速率 ,一帧最多包含 64个数据字节的数据帧格式 。 3.20 FD 帧 FD frame 使用 FD标准帧格式或 FD扩展帧格式的数据帧 。 3.21 不兼容 FD FD intolerant 只能发送和接收传统帧 ,干扰 FD 帧 。 3.22 兼容 FD FD tolerant 不能发送或接收 FD 帧 ,但不干扰 FD 帧 。 3.23 帧 frame 定义了在媒介中依次传送的位或者位场的范围和含义的数据链路层协议数据单元 。 3.24 句柄 handle 一个或多个 LLC帧(LPDU) 的硬件对象标签 。 3.25 更高层协议 higher-layerprotocol 按照 OSI模型定义的数据链路层的上层协议 。 [来源 :ISO/IEC7498-1] 3.26 标识符 identifier 不指明帧的目的地 ,而是反映特定帧的优先级 ,并表明所传输数据的含义 。 3.27 空闲 idle 当一个帧完成后处于隐性状态的一种网络状态 。 3.28 空闲情形 idlecondition 检测到连续 11个隐性位的情形 。 3.29 整合 integrating 当节点在总线关闭恢复中启动协议操作后 ,或者遇到协议外事件之后 ,等待空闲情形的节点状态 。 3.30 最小时间份额 minimum timequantum 在特定实现里可以配置的最小时间量 。 3.31 多播 multicast 帧可以同时被多个节点接收的寻址方式 。 注 : 广播是一种特殊的多播 ,广播的帧可以同时传送给所有节点 。 3.32 多主 multimaster 网络中有多个节点 ,每个节点都可能暂时控制其他节点的行为 。 3.33 节点 node 连接到通信网络 ,根据通信协议定义能够通过网络进行通信的装置 。 注 : CAN节点是指在 CAN 网络中进行通信的节点 。 3.34 节点时钟 nodeclock CAN 实现中 ,协调位时间相关状态机的时基 。 3.35 标称位速率 nominalbitrate 仲裁段单位时间内的位数量 ,与位编码/解码无关 。 3.36 标称位时间 nominalbittime 仲裁段的一个位占用的时间长度 。 3.37 不归零编码 Non-Return-to-Zero;NRZ 表示二进制信号的一种方法 , 即在同一个位时间内 ,信号电平未发生改变 ,其中具有相同逻辑值的 位流不提供边沿 。 3.38 过载帧 overload frame 指示有过载情形的帧 。 3.39 优先级 priority 帧的属性 ,决定了它在仲裁过程中的排名 。 注 : 高优先级增加了帧赢得仲裁的可能性 。 3.40 协议 protocol 包括帧管理的定义 、帧传送和 PL,用于在节点间交换信息的正式约定或者规则的集合 。 3.41 协议外事件 protocolexception event 正式约定或者规则集合的例外情况 ,可以用来兼容未来新的帧格式 。 3.42 接收方 receiver 当总线空闲时 ,不是发送方或者整合状态的任意节点 。 3.43 远程帧 remote frame 请求发送指定数据帧的帧 。 3.44 填充位计数 stuffbitcount 帧中 CRC场之前的填充位的数量 ,其数量不包含固定填充位 。 3.45 时间触发通信 time-triggered communication 可以在定义的时间间隙发送帧的选项 ,也可以提供网络范围的时钟同步 ,并禁止帧的 自动重发 ,从 而可以避免专用数据帧和远程帧与其他节点发送的数据帧和远程帧冲突 。 3.46 收发器 transceiver 由总线比较器和总线驱动组成 ,将 CAN节点连接到 CAN 网络的电路 。 3.47 发送方 transmitter 数据帧或者远程帧的源节点 ,直到总线再次空闲或者该节点失去仲裁 ,否则一直保持发送 。

4 符号和缩略语

下列符号和缩略语适用于本文件 。 ACK:应答(acknowledgement) AUI:连接单元接 口 (attachmentunitinterface) BCH :BCH 码(bose-chaudhuri-hocquenghem) BRS:位速率转换(bitrate switch) CAN:控制器局域网络(controller area network) CBFF:传统标准帧格式(classicalbase frame format) CEFF:传统扩展帧格式(classical extended frame format) CRC:循环冗余校验(cyclic redundancy check) CSMA:载波侦听多路访问(carrier sense multiple access) DF:数据帧(data frame) DLC:数据长度编码(data length code) EF:错误帧(error frame) EOF: 帧结束(end offrame) ESI:错误状态指示(error state indicator) FBFF:可变数据速率标准帧格式(FD base frame format) FCE:故障界定实体(faultconfinemententity) FD:可变数据速率(flexible data rate) FDF:FD格式指示(FD formatindicator) FEFF:FD扩展帧格式(FD extended frame format) HLP:更高层协议(higher-layer protocols) IDE:标识符扩展(identifier extension) IPT:信息处理时间(information processing time) LAN:局域网络(localarea network) LLC:逻辑链路控制(logical link control) LME:层管理实体(layer managemententity) LPDU :LLC协议数据单元(LLC protocol data unit) LSDU :LLC服务数据单元(LLC service data unit) MAC:媒介访问控制(medium access control) MAU :媒介连接单元(medium attachmentunit) MDI:媒介专用接 口 (medium dependentinterface) MPDU :MAC协议数据单元(MAC protocol data unit) NRZ:不归零编码(non-return-to-zero) OF:过载帧(overload frame) OSI:开放系统互连(open systems interconnection) OVLD:过载(overload) PCI:协议控制信息(protocol controlinformation) PCS:物理编码子层(physical coding sub-layer) PDU :协议数据单元(protocal data unit) PL:物理层(physical layer) PMA:物理媒介连接(physical medium attachment) r0:CEFF 中的保留位(reserved bitinCEFF) res:FD 帧中的保留位(reserved bitin FD frame) RF:远程帧(remote frame) RRS:远程请求替代(remote requestsubstitution) RTR:远程传输请求(remote transmission request) SAP:服务访问点(service access point) SDU :服务数据单元(service data unit) SJW : 同步跳转宽度(synchronization jump width) SOF: 帧起始(startofframe) SP:采样点(sample point) SRR:替代远程请求(substitute remote request) SSP:第二采样点(secondary sample point) TDC:发送延迟补偿(transmitter delay compensation)

5 CAN基本概念

  1. 1 CAN特性 CAN有如下特性 : — 基于优先级的多主总线访问 ; — 基于内容的非破坏性仲裁 ; — 所有帧都是广播 ; — 帧多播传输 , 由接收方过滤 ; — 远程数据请求 ; — 配置灵活 ; — 网络范围的数据一致性 ; — 错误检测和错误标识 ; — 失去仲裁的 、或者未被应答的 、或传输过程中被错误干扰的帧自动重发 ; — 区分临时错误和永久故障节点 ,且自动关闭失效节点 。

5.2 帧

发送到总线上的信息 ,有固定格式的帧 ,数据长度可能不同 ,但是最大长度有限制 。 当总线空闲时 , 任何已连接的节点都允许启动 DF或者 RF 的发送 。 当总线上没有帧发送时 , 总线为空闲 。此外 ,任何 已连接的节点都可能通过特定帧指示错误或者过载情形(EF和 OF) 。

5.3 总线访问方法

如果两个或以上的节点同时开始发送 DF或者 RF, 总线访问冲突通过对其 ID标识符进行基于内 容的仲裁来解决 。该仲裁机制保证了不会丢失信息或者造成时间的丢失 。DF或者 RF为高优先级的 发送方获得总线访问权 。DF和 RF拥有同样 ID 时 ,DF赢得总线仲裁 。

5.4 信息路由

节点不使用任何网络配置信息(如节点地址) ,接收方接收信息与否 ,取决于其内部的帧接收过滤进 程 。该进程决定了接收到的信息相关与否 。对于接收方而言 ,不需要知道发送方的信息 ,反之亦然 。

5.5 网络灵活性

如果新加入的节点不是任何 DF 的发送方 ,且新加入的节点不需要当前网络任何另外的数据 ,则该 节点可以加入 CAN 网络 ,而无需其他节点进行任何软件或者硬件的更改 。

5.6 数据一致性

在 CAN 网络中 ,一个帧要么 被 所 有 节 点 作 为 有 效 帧 接 收 , 要 么 没 有 一 个 节 点 将 其 作 为 有 效 帧 接 收 。这种数据一致性是通过广播和错误处理实现的 CAN 网络特性 。

5.7 远程数据请求

通过发 送 RF, 节 点 请 求 数 据 可 以 请 求 另 一 个 节 点 发 送 相 应 的 DF。 RF 和 相 应 DF 有 相 同 的 标 识符 。 注 1: 拥有被请求 ID报文的节点 ,决定发送新的数据 ,还是发送缓存中的数据 。 注 2: 拥有被请求 ID报文的节点 ,决定如何回应 DLC不匹配的 RF。 5. 8 错误检测 对于错误检测 ,有以下方法 : — 监测(发送方比较发送出去的位电平和总线上实际检测到的位电平) ; — 传统帧的 15位 CRC、数据场最大为 16字节的 FD 帧的 17位 CRC、数据场范围为 20~ 64字节 的 FD 帧的 21位 CRC; —FD 帧的填充位数量检查 ; — 填充宽度为 5 的可变位填充(FD帧的 CRC场除外) ; — 帧格式检查 ; —ACK 检查 。

5.9 错误标识和恢复时间

被干扰的帧可以被任意发送节点和任意正常操作的接收节点(主动错误) 标记 。这些帧会被丢弃 , 并根据已实现的恢复进程进行重发(见 7. 3. 4) 。如果没有其他错误出现的话 ,从检测到错误开始 , 到可 以开始发送下一帧的恢复时间 ,一般是 17~ 23个标称位时间(对于被动错误的节点 ,最高 31个标称位 时间) 。 5. 10 应答 所有的接收方都会检查接收到的 DF和 RF 的一致性 ,对于一致的帧进行应答 ,对不一致的帧用 EF 进行标识 。发送方节点将未被应答的 DF或者 RF视为已损坏的帧 。 5. 11 自动重发 失去仲裁 、或者未被应答 、或者发送过程中被错误干扰的帧会自动重发 ,直到其发送成功完成 ,或者 其发送不再被请求(见 7. 3. 4 和 9. 9. 6) 。 可选的 , 可以禁止自动重发 , 或者将 自动重发限制在一定次数 (见 9. 9. 6) 。 5. 12 故障界定 CAN节点可以区分为短时干扰或者永久故障 。失效发送节点被关闭 。 这意味着节点在逻辑上从 总线上断开 , 因此它既不能发送也不能接收任何帧(见 11. 1. 4. 4) 。 5. 13 主动错误 主动错误节点参与总线通信 ,且当检测到错误时发送主动错误标志 。 主动错误标志由 6 个连续的 显性位组成 ,不遵循 DF和 RF 的位填充规则和固定格式(见 11. 1. 4. 2) 。 5. 14 被动错误 被动错误节点不发送主动错误标志 。它参与总线通信 , 当检测到错误时 ,发送被动错误标志 。被动 错误标志由 6个连续的隐性位组成 。 发送后 , 到下一次发送前 , 被动错误节点要等待一段额外的时间 (见 9. 4. 6. 4 和 11. 1. 4. 2 的抑制发送) 。 5. 15 总线关闭 当节点被 FCE请求从总线中断开 ,则节点处于总线关闭状态 。该状态下 ,节点不能发送和接收帧 , 也不能发送任何显性位 。

6 CAN 的层级架构

  1. 1 参考 OSI模型 根据 OSI参考模型(见 ISO/IEC 7498-1) ,本文件的 CAN架构分为两层(见图 2) : —DLL; —PL。 图 2 CAN 架构层级 根据 ISO/IEC 8802-2和 ISO/IEC 8802-3,DLL被进一步划分为 : —LLC; —MAC。 PL被进一步划分为 : —PCS; —PMA; —MDI。 MAC子层操作由 FCE监控 。故障界定是一种自检机制 ,将短时干扰和永久故障区分开(见 11. 1) 。 可选的 ,PL可被某个实体监控 ,该实体检测和管理物理媒介故障(例如 ,总线短路或断路 ,见 11. 2) 。

6.2 协议定义

两个同级协议实体 ,通过交换帧或者 PDU来相互通信 。 一个第 N 层的 PDU(PDUN ) 由 第 N 层 的 协 议 特 定 控 制 信 息(PCIN ) 和 N 层 的 用 户 数 据 组 成 。 PDUN 应通过 SAPN- 1 传递到 N - 1 层实体 。PDUN 作为 SDUN- 1 传递给 N - 1 层 ,该服务用 于 传 送 PDUN 。SDU是接口数据 ,其标识保存在 N 层实体间 , 即它表示服务传递的逻辑数据单元 。CAN 协议 的 DLL不应将一个 SDU 映射到多个 PDU ,或者将多个 SDU 映射到单个 PDU , 即一个 PDUN 直接由 相关的 SDUN 和层特定的控制信息 PCIN 组成 。 图 3展示了数据链路子层的交互 。 图 3 协议层交互

6.3 服务格式定义

6.3. 1 服务原语格式描述 服务原语写成以下形式 : service.type( [parameter1, …] ) 其中 : service 指服务的名称 ,例如 L_Data是 LLC子层提供的数据传输服务 ; type 指服务原语的类型(见 6. 3. 2) ; [parameter1, …] 是传递给服务原语的值列表 。 括号 “[ ] ”意味着参数列表可能为空 。

6.3.2 服务原语类型

服务原语有三大类 。 a) Service.Request 该请求原语应从 N 层用户(服务用户) 传递给 N 层(服务提供方) ,用于请求服务 。 b) Service.Indication 该指示原语由 N 层向 N 层的用户指示一个与 N 层用户有关的内部 N 层(或者子层) 事件 。 该事件可以逻辑上与远程服务请求相关 ,或者由 N 层(或者子层) 内部事件引起 。 c) Service.Confirm 该确认原语由 N 层(或子层) 传递给 N 用户 ,反馈一个或多个相关前面服务请求的结果 。该 原语可以指示服务失败 ,或者某种程度的遵从 。它无需反映远程同级接口的动作 。

6.4 LLC接口

LLC子层应向 LLC用户提供 2种无连接的传输服务 : — 无应答数据传输服务 ; — 无应答远程数据请求服务 。 来自或发送给用户的接口服务数据见 7. 2. 2。LLC用户和 LLC子层间传送的消息见表 1 和表 2。 表 1 LLC用户发送给 LLC子层的信息

信息描述
Reset_Request请求将节点置位初始状态

表 2 LLC子层发送给 LLC用户的信息

信息描述
Reset_Response对 Reset_Request的响应
Node_Status指示节点当前状态 , 即节点是否处于总线关闭状态

发送或者来自监控器 FCE 的 LLC接口信息见 11. 1. 3。

7 LLC子层描述

  1. 1 概述 根据 ISO/IEC 8802-2,LLC子层描述了 DLL 的上层部分 ,它与独立于媒介访问方法类型的协议事 件相关联 。

7.2 LLC子层的服务

7.2. 1 无连接模式传输服务的类型 LLC子层提供 2种无连接模式的传输服务 。 a) 无应答数据传送服务 通过该服务 ,LLC用户 间 可 以 不 用 建 立 数 据 链 接 从 而 交 换 LSDU。 其 数 据 传 送 可 以 是 点 对 点 、多播或者广播形式 。 b) 无应答远程数据请求服务 通过该服务 ,LLC用户间可以不用建立数据链接 ,而请求远程节点传送 LSDU。 远程节点可以通过以下两种方式服务这种数据请求 。 — 被请求的数据在远程节点中已准备好 。这种情况下 ,数据应处于远程节点的缓存中 ,一旦接收 到对该数据的远程请求 ,立刻被远程节点发送出去 。 — 远程节点接收到远程数据请求后 ,将被请求的数据发送出去 。 根据上述两种不同的 LLC服务 ,发送节点和接收节点间的通信 ,可能用到以下 6种类型的帧 : — 传统标准帧格式的 LLC数据帧 ; — 传统扩展帧格式的 LLC数据帧 ; —FD标准帧格式的 LLC数据帧 ; —FD扩展帧格式的 LLC数据帧 ; — 传统标准帧格式的 LLC远程帧 ; — 传统扩展帧格式的 LLC远程帧 。 LLC数据帧是将数据从发送方传递至接收方 。 LLC远程帧是从某个远程节点请求数据帧(其 ID 与远程帧相同) 。两种情形下 ,LLC子层都应向 LLC用户通知其传送是否成功 ,或者向 LLC用户通知 接收到了数据帧或者远程帧 。 注 : 传统帧和 FD 帧的差异见附录 A。

7.2.2 服务原语定义

7.2.2. 1 概述 此条描述了 LLC服务的服务原语和其相关参数 ,LLC服务原语的完整列表见表 3。 表 3 LLC服务概览

服务服务原语描述
无应答数据传送服务L_Data.Request请求数据传送
无应答数据传送服务L_Data.indication指示数据到来
无应答数据传送服务L_Data.Confirm数据传送确认
无应答数据传送服务L_Data.AbortRequest(可选)请求放弃数据传送
无应答远程数据请求服务L_Remote.Request请求远程数据
无应答远程数据请求服务L_Remote.Indication指示远程数据请求的到来
无应答远程数据请求服务L_Remote.Confirm远程数据请求确认
无应答远程数据请求服务L_Remote.AbortRequest(可选)请求放弃远程数据请求

不同 LLC服务原语的参数见表 4。 表 4 LLC服务参数列表

参数描述
Identifier标识帧的内容
Format帧格式(CBFF、CEFF、FBFF、FEFF,指定可选的 ESI和 BRS位)
DLC数据长度
Data用户想要发送的数据
Transfer_Status确认参数
Handle(可选)标识用于处理的的硬件元素
7.2.2.2 L_Data.Request

功能 该服务原语用于 LLC用户向 LLC子层请求将某个 LSDU发送给一个或者多个远程 LLC实体 。 语义 该服务原语参数如下 : L_Data.Request( Identifier Format DLC Data Handle ) 如果相关 LLC数据帧的数据长度为 0,则参数“Data”可忽略 。 可选的 ,用于传送的硬件元素(信息 储存单元) 由 Handle标识 。 影响 LLC子层接收到该服务原语后 ,通过使用 MAC子层提供的数据传送服务 ,启动 LLC数据帧的传 送(见表 6) 。如果在 此 期 间 没 有 错 误 帧 出 现 , 那 么 任 何 L_ Data. Request应 在 不 迟 于 第 二 个 SOF前 处理 。

7.2.2.3 L_Data.indication

功能 该服务原语用于 LLC子层向 LLC用户指示某个 LSDU 的到来 。 语义 该服务原语参数如下 : L_Data. indication ( Identifier Format DLC Data ) 如果相关 LLC数据帧的数据长度为 0,则参数“Data”可忽略 。 影响 未定义 。

7.2.2.4 L_Data.Confirm

功能 该服务原语用于本地 LLC子层向 LLC用户反馈前一个 L_Data. Request的结果 。该服务原语是 一个本地确认 , 即它不能说明远程 LLC实体向其 LLC用户发送了相应的 indication原语 。 语义 该服务原语参数如下 : L_Data. Confirm ( Identifier Transfer_Status Handle ) 参数“Transfer_Status”用于以下指示处理状态的完成 : — 由前一个 L_Data.Request引起的进程(如果没有可选的 Handle) ; — Handle指定的可选引用硬件元素的处理状态 。 如果 LLC支持和提供可选服务 L_Data. AbortRequest的话 ,Transfer_Status的状态中可以有 A- borted。 影响 未定义 。

7.2.2.5 L_Data.AbortRequest(可选)

功能 该服务原语用于 LLC用户向 LLC子层发送请求 ,放弃之前请求的某个 LSDU 的传送 。 语义 该服务原语参数如下 : L_Data.AbortRequest( Handle ) 要放弃的用于传送的硬件元素(信息存储单元) 由 Handle标识 。 影响 接收到该请求后 ,LLC子层会放弃传送指定的信息存储单元中的 LLC数据帧 。 已经传递给 MAC 子层正在处理的传送 ,只能在满足以下条件时被放弃 : — 传送时 MAC子层出现了错误 ,或者 —MAC子层仲裁失败 。 以上都会使得 LSDU等待下一次的传送 。 这意味着一个放弃请求会在 LLC层中悬置 ,直到以上情形之一发生 ,或者直到传送成功 。 因为 Handle指定的被请求硬件元素的优先级 别 不 同 , LLC子 层 不 会 立 刻 放 弃 已 经 传 递 给 MAC 子层的传送请求 。如果在此期间没有错误帧出现 ,那么任何 L_Data. AbortRequest应在优先于第二个 SOF前处理 。反之 ,如果有错误帧出现 ,那么也应在被请求后 ,优先于第三个 SOF处理 。

7.2.2.6 L_Remote.Request

功能 该服务原语用于 LLC用户向 LLC子层请求由一个远程 LLC实体发生某个 LSDU。 语义 该服务原语参数如下 : L_Remote.Request( Identifier Format DLC Handle ) DLC 的值即被请求的 DF 的数据场长度 。 由 Handle指定用于传送的硬件元素(信息存储单元) 。 影响 接收到该请求后 ,LLC子层通过 MAC子层提供的远程数据传输服务 ,启动指定可选信息存储单元 中的 LSDU 的传送(见表 6) 。

7.2.2.7 L_Remote.Indication

功能 该服务原语用于 LLC子层向 LLC用户指示 ,传送某个 LSDU请求的到来 。 语义 该服务原语参数如下 : L_Remote. Indication ( Identifier Format DLC ) 要传送的 LSDU ,其中的 ID 由参数“Identifier”指定 ,其数据场长度由“DLC”指定 。 影响 未定义 。 7.2.2. 8 L_Remote.Confirm 功能 该服务原语用于 LLC子层向 LLC用户传达先前 L_Remote. Request的结果 。该服务是一个本地 确认 , 即它并不能说明远程 LLC实体向其 LLC用户传递了相应的指示 。 语义 该服务原语参数如下 : L_Remote. Confirm ( Identifier Transfer_Status Handle ) 参数“Transfer_Status”用于指示以下进程的状态 : — 由前一个 L_Remote.Request引起的进程(如果没有可选的 Handle) ,或者 — Handle指定的可选引用硬件元素的处理状态 。 Transfer_Status应用于指示前一个 L_Remote.Request的完成情况 。 Transfer_Status:[Complete,Not_Complete,Aborted] 当一个传输请求被悬置 ,或者仍在处理中 ,或者一个可选的放弃请求被悬置 ,则其传输状态为“Not _Complete”。 如果支持和提供可选服务 L_Remote.AbortRequest,则传输状态中的 Aborted有效 。 影响 未定义 。

7.2.2.9 L_Remote.AbortRequest(可选)

功能 该服务原语用于 LLC用户向 LLC子层发送请求 ,放弃之前的向远程用户请求 LSDU 的传送请求 。 语义 该服务原语参数如下 : L_Remote.AbortRequest( Handle ) 要放弃的用于传送的硬件元素(信息存储单元) 由 Handle标识 。 影响 接收到该请求后 ,LLC子层会放弃传送指定的信息存储单元中的 LLC远程帧 。 已经传递给 MAC 子层正在处理的传送 ,只能在满足以下条件时被放弃 : — 传送时 MAC子层出现了错误 ,或者 —MAC子层仲裁失败 。 以上都会使得 LSDU等待下一次的传送 。 这意味着一个放弃请求会在 LLC层中悬置 ,直到以上情形之一发生 ,或者直到传送成功 。 因为 Handle所指定的被请求硬件元素的优先级别不同 ,LLC子层不能立刻放弃已经传递给 MAC 子层的传送请求 。

7.3 LLC子层的功能

7.3. 1 概述 LLC子层提供以下功能 : — 帧接收过滤 ; — 过载通知 ; — 恢复管理 。

7.3.2 帧接收过滤

LLC 中每一个帧的处理都应是一个独立的操作 , 而与之前的帧处理无关 。 帧的内容由其 ID 标识 符命名 。每一个接收方应根据其帧接收过滤来决定帧是否于己相关 。

7.3.3 过载通知

如果接收器内部要求延迟下一个 LLC DF或者 LLC RF,其 LLC子层应发起发送 MAC OF 的需 求 。如果 CAN 实现中存在引起 MAC OF发送的情况 ,则该情况应在 CAN 实现中书面列明 。 最多可以发送 2 次 MAC OF以延迟下一个 DF或者 RF。

7.3.4 恢复管理

LLC子层应为以下几种情形的帧提供自动重发 :仲裁失败 、未被应答 、或者发送时被错误干扰 。使 用可选功能 LLC AbortRequests可以放弃自动重发 。在帧成功发送完成或者放弃(可选功能) 前 ,不应 向 LLC用户报告帧发送服务的确认状态或者报告已放弃(可选) 该帧的发送 。如果某个帧不再需要发 送 ,则应禁止其自动重发功能 。可以禁止所有帧的自动重发功能 。

7.4 LLC帧结构

7.4. 1 概述 LLC帧是同级的 LLC实体间的数据交换(LPDU) 。LLC DF和 RF 的结构及帧格式应按下述章节 定义 。对于 LLC帧 ,其可选的 Handle是 LLC为了更上层通信使用所保留的一个标签 。 因此 ,其表现 对于 MAC层和 CAN 总线而言是不可见的 。在后续章节中 ,也不再考虑 LLC帧的 Handle。

7.4.2 LLC DF定义

7.4.2. 1 概述 LLC帧由四个位场组成(见图 4) : — 标识符场 ; — 格式场 ; —DLC场 ; —LLC数据场 。 图 4 LLC DF

7.4.2.2 标识符场

该场由两部分组成 ,标准 ID 标识符和 ID 扩展标识符 。其中 ,标准标识符长度为 11 bit(ID-28至 ID-18) 。扩展 ID标识符长度为 18bit(ID-17至 ID-0) 。CBFF和 FBFF格式的帧没有扩展 ID标识符 。

7.4.2.3 格式场

该场域用于区分帧格式 ,如 CBFF、CEFF、FBFF和 FEFF。其中 ,FBFF和 FEFF 中含有 ESI位和 BRS位(见表 4) 。

7.4.2.4 DLC场

DLC表明了该帧数据场中的字节长度 ,见表 5。DLC长度为 4 位 。对于传统帧 ,DLC允许值范围 为 0~ 8,其中 ,DLC值为 0~ 7 时表示相应数据场长度为 0~ 7字节 ,其他所有数值都表示数据场长度为 8字节 。对于 FD,DLC值为 0~ 8 时 ,表示相应数据场长度为 0~ 8字节 ,其他值所表示的数据场长度见 表 5。 表 5 DLC值编码

帧类型数据长度编码数据长度编码数据长度编码数据长度编码数据字节数量
帧类型DLC3DLC2DLC1DLC0数据字节数量
传统帧和 FD 帧00000
传统帧和 FD 帧00011
传统帧和 FD 帧00102
传统帧和 FD 帧00113
传统帧和 FD 帧01004
传统帧和 FD 帧01015
传统帧和 FD 帧01106
传统帧和 FD 帧01117
传统帧和 FD 帧10008
传统帧10 或 10 或 10 或 18
FD 帧100112
FD 帧101016
FD 帧101120
FD 帧110024
FD 帧110132
FD 帧111048
FD 帧111164
7.4.2.5 数据场

数据场包含了要传输的数据 。对于传统帧 ,其长度范 围 为 0~ 8 字 节 , 对 于 FD 帧 , 其 长 度 范 围 为 0~ 64字节 。

7.4.3 LLC RF定义

LLC RF应由三个场组成(见图 5) : — 标识符场 ; — 格式场 ; —DLC场 。 图 5 LLC RF LLC RF标识符场和 DLC场的格式与 LLC DF 的标识符场(见 7. 4. 2. 2) 和 DLC场(见 7. 4. 2. 4) 格式 一致 。LLC RF没有数据场 ,与 DLC值无关 。 LLC RF 的格式场仅用于区分 CBFF和 CEFF两种帧 。 FBFF和 FEFF 中没有 LLC RF帧 。 只能发送网络范围内已定义 DLC 的 RF,其 DLC与相应 DF 的 DLC一致(见 9. 9. 9) 。

7.5 受限的 LLC帧

LLC帧不要求实现所有范围的标识符或者 DLC。 如果某个 LLC子层限制只使用某个范围的标识符(例如只使用 11位标识符) ,那么其 LLC DF和 LLC RF只能使用范围内的标识符(例如标识符的 IDE设为逻辑 0,则忽略其扩展标识符) 。 如果 LLC子层允许使用的数据场长度小于标准的最大值 ,则该 LLC子层的 DF都只能使用该限 制范围内的数据场长度 。如果其 DLC指示的数据字节数超出该限制范围 ,则无论是接收的还是发送的 LLC DF,数据场中超出限制范围的数据字节应被 CCHEX (“填充 ”) 字节取代 。或者 CAN 实现可以支持 配置成 , 当帧的 DLC指示的数据字节长度超出限制范围时 ,CAN节点不会发送该帧 。 注 : 接收到的报文的填充不需要在 LLC层实现 。

8 LLC和 MAC 间的接口

  1. 1 服务 MAC子层为本地 LLC子层提供以下服务 : — 对 LLC帧的 MAC应答 ; — 发送 MAC OF。 发给 LLC子层 、或者来自 LLC子层的接口服务数据应按 7. 3定义 。

8.2 时间和时间触发

8.2. 1 描述 CAN 可以设计成支持网络范围的时钟同步 ,基于此 , 可以额外支持时间触发通信 。 时钟同步选项 描述了网络中节点时钟校准的前提条件 。为了让网络中的节点时钟同步 ,需要一个共同的参考点 。应 采用 SOF位 、或者任意报文的 EOF最后一位的采样点作为参考点 。节点时钟同步便于在更高层协议 建立网络范围内的时基 。如果实现的话 ,时间触发通信选项可以使得帧在定义的时间间隙发送 。 用于建立全网时基的硬件应包含在 LLC和 MAC 中 。

8.2.2 时基

任何支持时间和时间触发选项的节点应提供时基 。 时基是一个至少长 16位的循环计数器 ,通过内 部或外部产生的滴答计时发生器来产生时钟刻度 。

8.2.3 时间参考点

任何接收或者发送的报文都应调用所捕获的时基 , 时基取自各自报文的 SOF或者 EOF最后一位 的采样点 。在成功接收报文后 ,抓取值应被提供给 CPU ,至少保持一个报文 ,且在接收到下一个报文前 仍可读 。

8.2.4 事件产生

从上述的时基中 ,应至少能产生一个可编程的事件触发 。该触发应能被 CPU 在 0 至(216 -1) 个时 间刻度范围内 自 由编程 。

8.3 禁止自动重发

可以禁止自动重发(见 5. 11) 。

8.4 报文的时间戳

可选的 ,支持 CAN FD 的实现或者不支持 CAN FD 的实现 ,可以为接收和发送的数据帧提供报文 时间戳 。 时间戳长度为 8位 、16位或者 32位 。 时基的时钟源应由节点内部产生 ,或者应由 LLC用户提供 。 时基计数器应递增 ,且超限后归 0。 时基计数器对 LLC用户在任意时间可读 。 时基的值应在每一个数据帧的参考点获取 。对于传统 帧 ,参考点是各自帧 SOF 的 采 样 点 , 或 者 是 帧 被 认 为 是 有 效 时 的 时 间 点(根 据 9. 7) 。 对 于 FD 帧 , 当 FDF为隐性 ,且随后的 res位为显性 ,则参考点是 SOF 的采样点 , 或者 res位的采样点 , 或者是帧被认 为是有效时的时间点(根据 9. 7) 。 在 EOF后 ,获取的时间戳的值应对 LLC用户可读 。

9 MAC子层

  1. 1 概述 MAC子层描述了 OSI DLL 的 低 层 部 分 。 它 为 LLC 子 层 和 PL 层 提 供 服 务 接 口 , 有 以 下 功 能 组成 : — 发送/接收数据的封装/解封 ; — 错误检测和标识 ; — 发送/接收媒介访问管理 。

9.2 MAC子层服务

9.2. 1 服务描述 MAC子层 提 供 的 服 务 应 允 许 本 地 LLC 子 层 实 体 和 同 级 LLC 子 层 实 体 间 交 换 MSDU , 其 服 务 如下 。 a) 带应答的数据传送 该服务可以让 LLC实体间无需建立数据链路连接就能交换 MSDU。其数据传送可以是点对 点 、多播或者广播式的 。 b) 带应答的远程数据请求 该服务允许 LLC实体向另一个远程节点请求发送 LSDU ,两者无需建立数据链路连接 。远程 LLC实体应用其 MAC层 “带应答的数据传送 ”服务发送被请求的数据 。 由远程节点的 MAC 子层产生服务的 ACK。ACK不应包含远程节点用户的任何数据 。 c) OF传送 该服务允许 LLC实体请求发送 OF。 OF是特殊固定格式的 LPDU ,可用于延迟下一个 DF或 者 RF。

9.2.2 服务原语定义

9.2.2. 1 概述 MAC子层向 LLC子层提供的服务原语见表 6。 表 6 MAC子层服务原语

服务服务原语
带应答的数据传送服务MA_Data.Request
带应答的数据传送服务MA_Data.indication
带应答的数据传送服务MA_Data.Confirm
带应答的远程数据请求服务MA_Remote.Request
带应答的远程数据请求服务MA_Remote.Indication
带应答的远程数据请求服务MA_Remote.Confirm
OF传送MA_OVLD. Request
OF传送MA_OVLD. Indication
OF传送MA_OVLD. Confirm
9.2.2.2 MA_Data.Request

功能 该服务原语用于 LLC子层向 MAC子层请求发送 MSDU 至一个或多个远程 MAC实体 。 语义 该服务原语参数如下 : MA_Data.Request( Identifier Format DLC Data ) 如果相关 MAC数据帧的数据长度为 0,则参数“Data”可忽略 。 影响 收到该请 求 后 , MAC 子 层 会 为 来 自 LLC 子 层 的 MSDU 增 加 MAC 特 定 控 制 信 息[SOF, SRR, IDE,RTR(或 RRS) ,FDF,res(或 r0) ,BRS, ESI, CRC, 全隐性的 ACK 场 , EOF] ,形成 MAC 的 PDU。 见 9. 4. 2. 3 和 9. 4. 2. 4. 该 MPDU将按位传送给 PL层 ,并进一步传送给同级的 MAC子层实体 。

9.2.2.3 MA_Data.Indication

功能 该服务原语用于 MAC子层向 LLC子层指示 MSDU 的到来 。 语义 该服务原语参数如下 : MA_Data.Indication ( Identifier Format DLC Data ) 如果相关 MAC数据帧的数据长度为 0,则参数 “Data”可忽略 。仅当 MSDU 正确接收后 ,方可向 LLC子层发送该服务 。 影响 未定义 。

9.2.2.4 MA_Data.Confirm

功能 该服务原语用于本地 MAC子层向 LLC子层传达前一个 MA_Data. Request服务的处理结果 。该 服务是一个远程确认 ,它说明了远程 MAC实体已向相应的用户发送了相关指示 。 语义 该服务原语参数如下 : MA_Data.Confirm ( Identifier Transmission_Status ) Transmission_Status用于指示前一个 MA_Data.Request是否成功 。 Transmission_Status:[Success,No_Success] 发送失败可能是发送时发生了错误或者仲裁失败 。 影响 未定义 。

9.2.2.5 MA_Remote.Request

功能 该服务原语用于本地 LLC子层向 MAC子层发送请求 ,请求某个远程 MAC实体发送指定的 MS- DU。 语义 该服务原语参数如下 : MA_Remote.Request( Identifier Format DLC ) 其中 ,标识符指名了所请求的 MSDU。DLC 的值等于被请求的 MSDU数据的长度 。 影响 接到该请 求 后 , MAC 子 层 会 为 来 自 LLC 子 层 的 MSDU 增 加 MAC 特 定 控 制 信 息[SOF, SRR, IDE,RTR(或 RRS) ,FDF,res(或 r0) ,BRS, ESI, CRC, 全隐性的 ACK 场 , EOF] ,形成 MAC 的 PDU。 见 9. 4. 2. 3 和 9. 4. 2. 4. 该 MPDU将按位传送给 PL层 ,并进一步传送给同级的 MAC子层实体 。

9.2.2.6 MA_Remote.Indication

功能 该服务原语用于 MAC子层向 LLC子层告知 ,被请求的 MSDU 的到来 。 语义 该服务原语参数如下 : MA_Remote.Indication ( Identifier Format DLC ) 仅当 MSDU正确接收后 ,方可向 LLC子层发送该服务 。 影响 未定义 。

9.2.2.7 MA_Remote.Confirm

功能 该服务原语用于本地 MAC子层向 LLC子层传达前一个 MA_Remote. Request服务的处理结果 。 该服务是一个远程确认 ,它说明了远程 MAC实体已向相应的用户发送了相关指示 。 语义 该服务原语参数如下 : MA_Remote.Confirm ( Identifier Transmission_Status ) Transmission_Status用于指示前一个 MA_Remote.Request是否成功 。 Transmission_Status:[Success,No_Success] 发送失败可能是发送时发生了错误或者仲裁失败 。 影响 未定义 。 9.2.2. 8 MA_OVLD. Request 功能 该服务原语用于 LLC子层向 MAC子层请求发送 MAC OVLD 帧 。该帧有固定格式 ,且完 全 由 MAC实体构建 。 语义 该服务原语参数如下 MA_OVLD. Request( ) 影响 接到该请求后 ,MAC子层生成一个 OF。该 OF应被传递给更低层级 ,从而传递给同级 MAC子层 实体 。

9.2.2.9 MA_OVLD. Indication

功能 该服务原语用于 MAC子层向 LLC子层指示 OF的到来(见 9. 4. 5) 。 语义 该服务原语参数如下 MA_OVLD. Indication ( ) 影响 未定义 。 9.2.2. 10 A_OVLD. Confirm 功能 该服务原语用于本地 MAC子层向 LLC子层告知 , 已发送了一个 OF。该服务是一个本地确认 ,它 不能说明同级的远程实体已正确接收了 OF。 语义 该服务原语参数如下 MA_OVLD. Confirm ( Transmission_Status ) Transmission_Status用于指示前一个 MA_OVLD. Request是否成功 。 Transmission_Status:[Success,No_Success] 影响 未定义 。

9.3 MAC子层架构的功能模型

9.3. 1 作用 MAC子层的功能参考 ISO/IEC 8802-3 中的功能模型定义 。该模型中 , MAC子层被划分为 2 个 完全独立操作的部分 ,发送部分和接收部分 ,见下述内容和图 6。 图 6 MAC功能

9.3.2 帧发送

帧的发送应完全按照以下要求 。 a) 发送数据封装 —LLC帧和接口控制信息的接收 ; —CRC序列的计算 ,包括 FD 帧的填充位计数 ; —MAC帧的构建 。在 LLC帧(有限定范围的 LLC子层可能不会请求发送 ID 或者数据场 超出限定范围的 MAC帧) 基础上添加以 下 内 容 : SOF、SRR 位(根 据 帧 格 式 定 义 使 用) 、 IDE位 、RTR(或 RRS位) 、FDF位 、res位 、BRS位(根据帧格式定义使用) 、ESI位(根据 帧格式定义使用) 、CRC、ACK 和 EOF。 b) 发送媒介访问管理 — 检测到总线空闲时 ,初始化发送进程(遵循帧间空间的要求) ; —MAC帧的序列化 ; — 位填充 ; — 仲裁以及当仲裁失败时切换到接收模式 ; — 错误检测(监测 、格式检查) ; —ACK 检查 ; — 超载情形探测 ; — 创建 OF帧并启动发送 ; — 创建 EF帧并启动发送 ; — 向 PL传递序列化的位流 。

9.3.3 帧接收

帧接收应遵循以下要求 。 a) 接收媒介访问管理 — 从 PL层接收序列化的位流 ; — 帧结构的去序列化和重组 ; — 去填充 ; — 错误检测(CRC、填充位计数检查 、格式检查 、填充规则检查) ; — 发送 ACK; — 创建 EF帧并启动发送 ; — 超载情形探测 ; — 创建对应 OF帧并启动发送 。 b) 接收数据解封 — 去掉接收帧的 MAC特定信息 ; — 向 LLC子层传递 LLC 帧 和 接 口 控 制 信 息(对 于 有 限 定 范 围 的 LLC 子 层 , 仅 范 围 内的 LLC帧会被传递) 。

9.4 MAC帧结构

9.4. 1 描述 网络上节点间发送和接收的数据 ,可划分为四种不同的帧类型 : — 搭载数据的 DF, 由发送方到所有接收方 ; — 某节点发送的 RF,请求远程节点发送与 DF标识符的数据帧 ; — 当检测到总线错误时 ,任意节点(发送方或接收方) 发送的 EF; — OF用于在当前 DF或 RF后延迟下一个 DF或 RF 的发送 。 数据帧和远程帧都应 参 与 仲 裁 以 获 得 总 线 访 问 权 限 , 并 且 前 后 帧 之 间 的 间 隔 应 符 合 帧 间 空 间 的 要求 。 CAN上有四种数据帧 : — 传统标准格式的 DF; — 传统扩展格式的 DF; —FD标准格式的 DF; —FD扩展格式的 DF。 CAN 上有 2种远程帧 : — 传统标准格式的 RF; — 传统扩展格式的 RF。

9.4.2 MAC DF定义

9.4.2. 1 描述 当发送时 ,一个 LLC数据帧(见图 4) 被转换成一个 MAC数据帧 , 而对于接收而言 ,一个 MAC数 据帧被转换成一个 LLC数据帧 。MAC数据帧由 7个不同的位场组成 ,见图 7所示 。 —SOF; — 仲裁场(包含标识符场和部分格式场) ; — 控制场(包含 DLC场和部分格式场) ; — 数据场(包含 LLC 的数据场) ; —CRC场 ; —ACK场 ; —EOF。 图 7 MAC DF

9.4.2.2 SOF

SOF 由一个单独的显性位组成 ,它标志了数据帧和远程帧的开始 。 只有当总线空闲时 ,节点才能发送 SOF。 当节点在其抑制发送期间或在其帧间间隔的第 3 位发现 一个显性位时 ,应将其作为 SOF。 如果节点在其帧间间隔的第 3位发现一个显性位 ,且该节点有处于悬挂状态的发送任务 ,并且该节 点为主动错误状态 、或者是前一个帧的接收方 ,则该节点可在该显性位的下一位开始发送其报文 ,无需 再发一个 SOF位 ,也无需切换至接收状态 。 所有的节点都应在第一个节点发送的 SOF的边沿进行同步 。

9.4.2.3 仲裁场

仲裁场由标识符场(由 LLC子层传递而来) 、RTR位(仅用于 CBFF和 CEFF) 或者 RRS位(仅用于 FBFF和 FEFF) 组成 。 其中 RTR位或者 RRS位 ,在 MAC数据帧中为显性 。 仲裁场的结构 ,根据控制场的 IDE位和 FDF位不同 ,分为 4种格式 。 —CBFF(IDE标志为显性) ,其仲裁场由 11位标准标识符(ID28-ID18) 和 RTR位组成 ; —CEFF(IDE标志为隐性) ,其 仲 裁 场 由 以 下 部 分 组 成 : 11位 标 准 标 识 符(ID28-ID18) 、SRR 和 IDE位(均为隐性) 、扩展标识符(ID17-ID0) 、RTR位 ; —FBFF(IDE标志为显性) , 其仲裁场由以下部分组成 : 11位标准标识符(ID28-ID18) 、RRS位 (显性) ; —FEFF(IDE标志为隐性) , 其 仲 裁 场 由 以 下 部 分 组 成 : 11位 标 准 标 识 符(ID28-ID18) 、SRR 和 IDE位(均为隐性) 、扩展标识符(ID17-ID0) 、RRS位(显性) 。 SRR位(仅用于 CEFF和 FEFF) 该位位于 CEFF和 FEFF 的 ID18之后 ,相当于 CBFF的 RTR或者 FBFF 的 RRS位的位置 。该位 为隐性 ,但是接收方应能接收隐性和显性的 SRR。 RTR位(仅用于 CBFF和 CEFF) 在 MAC DF 中该位为显性 。 RRS位(仅用于 FD 帧) 该位在 FD 帧中 ,位置 和 传 统 帧 的 RTR 位 一 样 。 该 位 为 显 性 , 但 是 接 收 方 应 能 接 收 隐 性 和 显 性 的 RRS。 注 : 接收方能接受显性和隐性的 SRR、RRS,意味着两种状态的都不会被视为格式错误 。 IDE位 IDE位用于区分 CBFF和 CEFF,或区分 FBFF和 FEFF, 即 ,IDE是否属于 : —CEFF和 FEFF 的仲裁场 ; —CBFF和 FBFF 的控制场 。 CEFF和 FEFF 的 IDE位应按隐性发送 ,而 CBFF和 FBFF 的 IDE位应按显性发送 。 IDE在不同帧的位置如下 : —CBFF 中 ,位于标准标识符和 RTR位之后 ; —CEFF 中 ,位于标准标识符和 SRR位之后 ; —FBFF 中 ,位于标准标识符和 RRS位之后 ; —FEFF 中 ,位于标准标识符和 SRR位之后 。 仲裁事件在 IDE位即开始发生 ,如果标准标识符相同 ,则 CBFF和 CEFF, 或者 FBFF和 FEFF之 间在 IDE位会发生冲突 ,仲裁的结果是 CBFF优先于 CEFF,或者 FBFF优先于 FEFF。

9.4.2.4 控制场

控制场长度如下 ,其中最后 4位为 DLC,DLC 由 LLC子层而来(见 7. 4. 2. 4) : —CBFF和 CEFF 中 ,长度为 6位 ; —FEFF 中 ,其长度为 8位 ; —FBFF 中 ,其长度为 9位 。 CBFF 该格式中 ,前 2 位为 IDE 和 FDF位 , 两者均为显性 。该帧格式向下兼容旧版本文 件 相 应 部 分 的 内容 。 CEFF 该格式中 ,前 2位为 FDF位和 r0位 , 两者均为显性 。该 帧 格 式 向 下 兼 容 旧 版 本 文 件 相 应 部 分 的 内容 。 FBFF 该格式中 ,前 5位为 IDE(显性) 、FDF(隐性) 、预留的 res位(显性) 、BRS和 ESI位 。 FEFF 该格式中 ,前 4位为 FDF(隐性) 、res(显性) 、BRS和 ESI位 。 FDF位 该位用于区分传统帧和 FD 帧 。在 FD 帧中为隐性 ,传统帧中为显性 。在 11位标识符的帧中 ,FDF 位于 IDE之后 。在 29位标识符的帧中 ,FDF位于控制场的第一个位 。一个 FD兼容接收方 ,如果检测 到 FD 帧的隐性 FDF位 ,而不是传统帧的显性 FDF位时 ,应检测到一个协议外事件(见 9. 9. 5) 。 FDF位相当于旧版本文件中的 r0位(11位标识符的帧) 和 r1位(29位标识符的帧) 。 不兼容 FD 帧的 CAN节点无法正确解码 FD 帧 。 仲裁过程不会超过 FDF位 。一个 ID标识符可以用于传统帧 ,也可以用于 FD 帧 ,但是在同一个实 际应用中 ,不能被同时赋予传统帧和 FD 帧 。但是并不禁止节点切换传统帧和 FD 帧发送 。 r0 位 在 CEFF 中 ,FDF位位于 r0之后 ,为协议未来扩展预留 。r0应以显性传输 ,但是接收方应能接受 该位隐性和显性状态 。 注 : 接收方收到为隐性状态的 r0位 ,不能将此隐性状态当作一个格式错误 。 res位 FD 帧里 ,res位处于 FDF之后 ,该位为协议扩展预留位 , 以显性发送 。一个支持 FD 的接收方 , 当 该位实际接收时为隐性 , 而不是预期的显性时 ,应检测到协议外事件(见 9. 9. 5) 。这个是可选的实现 。 如果实现该选项 ,协议外事件检测可以被禁止 。如果禁止协议外事件检测 ,FD CAN 节点检测到 FDF 后的 res位为隐性 ,会认为这是一个格式错误(见 9. 11) 。 BRS位 该位指示 FD 帧的传输速率是否切换 。如果该位为隐性 ,那么 FD 帧的数据段的传输速率将会从 仲裁段的标称位速率切换到 预 配 置 数 据 位 速 率 。 不 要 求 单 一 网 络 中 的 所 有 FD 帧 的 BRS为 一 个 值 。 不要求节点对特定 LLC帧设置特定的 BRS值 。传统帧没有 BRS位 。 ESI位 该标志位在主动错误节点中为显性 ,被动错误节点中为隐性 。传统帧没有 ESI位 。 可选的 ,在 LLC用户的控制下 ,主动错误 CAN节点可以发送隐性的 ESI位 。

9.4.2.5 数据场

MAC帧中该部分与 LLC帧中一致(见 7. 4. 2. 5) 。

9.4.2.6 CRC场

CRC场由 CRC序列和隐性 CRC界定符组成 。对于 FD 帧 ,CRC场还多一个填充计数 。 填充计数 FD 帧中 ,填充计数位于 CRC场的最前端 。它包含 3 位格雷码表示的 8 模数 , 和一位奇偶校验位 , 见表 7。 表 7 填充计数编码

填充计数编码编码编码编码编码编码编码编码
模 8填充位计数01234567
带奇偶校验位的格雷码000 0001 1011 0010 1110 0111 1101 0100 1

帧的发送和接收方 ,都要计算除固定填充位之外的填充位数量 。发送方应在 CRC场起始处 ,CRC 序列前 , 以填充计数编码的形式发送其位填充数量 。接收方应检查接收到的填充计数是否与 自 己计算 的位填充数量一致 。 CRC序列 帧检查序列应采用 CRC序列(BCH-code) 。 一个 CAN节点应能为不同格式的帧使用不同的 CRC生成多项式 。第一种多项式为 CRC_ 15,用 于传统帧 。第二种多项式为 CRC_ 17,用于数据长度不大于 16字节的 FD 帧 。第三种多项式为 CRC_ 21,用于数据长度大于 16字节的 FD 帧 。每个多项式的汉明距离为 6。 在帧开始部分 ,所有 3种 CRC序列应在所有节点 ,包括发送方中正确算出 。 仲裁成功的节点根据 FDF值和 DLC值选择发送哪种 CRC序列 。接收方应使用被选中的 CRC多项式去检验 CRC错误 。 CRC序列的长度(nCRC是生成多项式的阶) ,对 CRC_ 15为 15位 ,对 CRC_ 17为 17位 ,对 CRC_ 21 为 21位 。

| CRC_15 | C59916 = | (x15 +x14 +x10 +x8 +x7 +x4 +x3 +1) (x+1) × (x7 +x3 +1) × (x7 +x3 +x2 +x1 +1) | |---|---|---| | CRC_17 | 3685B16 = | (x17 +x16 +x14 +x13 +x11 +x6 +x4 +x3 +x1 +1) (x+1) × (x16 +x13 +x10 +x9 +x8 +x7 +x6 +x3 +1) | | CRC_21 | 30289916 = | (x21 +x20 +x13 +x11 +x7 +x4 +x3 +1) (x+1) × (x10 +x3 +1) × (x10 +x3 +x2 +x1 +1) |

CRC_INIT_VECTOR对于 CRC_15为(0, … ,0) ,对于 CRC_ 17和 CRC_ 21为(1,0, … ,0) ,其中 , 单独的这个“1”处于最高位 。 用于计算 CRC的位流包含 SOF、仲裁场 、控制场 、数据场(如果有) ,并在其后扩充 nCRC个 0。传统 帧中 ,CRC计算不考虑填充位 。FD 帧中 ,除前述相关部分 ,CRC计算还要考虑填充计数和非固定填充 位 ,不考虑固定填充位 。 为了计算 CRC,被除 的 多 项 式 根 据 相 关 位 流 的 长 度 决 定 。 用 生 成 多 项 式 去 除 以 多 项 式(模 2 除 法) 。 除法运算的余数即要在总线上发送的 CRC序列 。为了实现这个功能 ,可以使用一个 nCRC位的变化 寄存器 CRC_RG(nCRC -1:0) 。每个 CRC序列在一个单独的变化寄存器块中计算 。 如果 NXTBIT 用 于指示位流的下一位 ,相关位流包含从 SOF到数据场的位 ,则 CRC序列按如下计算 : CRC_RG (nCRC -1:0)= CRC_INIT_VECTOR; //初始化变化寄存器 R__NRRGCNXGTX((T;:T)=E_ C(R-(C:)-;1) ; //向左进一位 CRC_RG (nCRC -1:0)= CRC_RG (nCRC -1:0) EXOR (CRC polynomial) ; UNTIL (NXTBIT = [END of bitstream] orSthere isan error condition) . CRC界定符 CRC界定符位于 CRC序列之后 。在传统帧中 ,CRC界定符是单个隐性位 。在 FD 帧中 ,CRC界定 符可能包含 1 或者 2个隐性位 。发送方应只发送一个隐性位作为 CRC界定符 ,但是在 ACK 间隙的隐 性到显性的起始边沿之前 ,发送方应能接受 2个隐性位 。接收方在第一个 CRC界定符之后开始发送应 答位 。 注 : 当 CAN 实现到达 CRC界定符(第一个位) 的采样点时 ,其 FD帧的位速率从数据段切换成仲裁段 。

9.4.2.7 ACK场

ACK场应包含 ACK 间隙和 ACK界定符 。在 ACK场中 ,发送节点应发送隐性位 。所有的接收方 检测接收到的 DF或者 RF 的一致性 ,如果帧是一致的 ,则发送应答 ;反之 ,则发送 EF(见 9. 12) 。一个没 有被应答的 DF或者 RF应被视为已损坏 ,且应被发送节点用 EF标识 。 ACK 间隙 所有接收 到 匹 配 的 CRC 序 列 的 节 点(对 于 FD 帧 , 填 充 计 数 也 应 匹 配) , 应 在 ACK 间 隙 处 发 送 ACK, 即发送一个显性位覆盖原隐性位 。FD 帧中 ,所有节点应能接受重叠的 ACK 间隙处长达 2 位的 显性位 ,将其视为有效的 ACK, 以补偿接收方之间的相位偏移 。传统帧中 ,一个 ACK 间隙之后的显性 位将被视为格式错误 。 ACK界定符 ACK界定符是 ACK 场的最后一位 , 为隐性 。 在顺序上 , ACK 间隙被隐性位包围 (CRC界 定 符 、 ACK界定符) 。 9.4.2. 8 EOF EOF是连续 7位的隐性位 ,用于标识 DF和 RF 的结束 。

9.4.3 MAC RF定义

9.4.3. 1 描述 一个节点如果作为某些特定数据的接收方 , 可能引起其源节点发送 RF 以请求传送各个数据 , RF 定义见图 8。 图 8 MAC RF

9.4.3.2 MAC DF和 MAC RF相同的场

MAC RF 的 SOF、CRC场 、ACK场和 EOF应和其对应的 MAC DF(见图 7) 一致 ,RF没有数据场 。

9.4.3.3 仲裁场

仲裁场由 ID标识符场和 RTR 位 组 成 , 其 中 标 识 符 场 由 LLC子 层 传 递 而 来 。 在 CBFF 和 CEFF 中 ,MAC RF 的 RTR值为隐性 。FBFF和 FEFF没有 RF帧 。

9.4.3.4 控制场

在 CBFF和 CEFF 中 ,MAC RF 的控制场应和 MAC DF(见 7. 4. 2. 4) 的控制场相同 。 冲突解决(见 9. 9. 9) 要求 RF 的 DLC值要与被请求的 DF 的 DLC值相同 。

9.4.4 EF定义

9.4.4. 1 描述 错误帧(EF) 包含两个不同的场 ,第一个场由不同节点发出的错误标志重叠而来 ,第二个场是错误 界定符 。

9.4.4.2 错误标志

有两种错误标志 :主动错误标志 、被动错误标志 ,其中 : — 主动错误标志由 6个连续的显性位组成 ; — 被动错误标志由 6个连续的隐性位组成 ,除非被其他节点的显性位覆盖 。 一个主动错误节点检测到错误情形发生时 ,应发送主动错误标志 。错误标志的形式不遵守位填充 的规则 ,或者破坏了固定格式的位场 。 同样的 ,所有其他节点也应检测到错误情形 ,并发送错误标志 。 所以总线上实际可能检测到的显性位序列 ,是由各个节点发送的错误标识重叠而来的 。该序列的长度 可能从最小 6位到最长 12位变化 。 当发送方发起的被动错误标志处于帧中需要位填充的部分时 ,会引起接收方发生错误(有两个例 外) , 因为接收方会认为检测到填充错误 。第一个例外 ,是被动错误标志位于仲裁场 ,且另一个节点继续 发送 。第二个例外 ,是被动错误标志少于 CRC序列结束前 6位开始 ,且 CRC序列剩下的位刚好都是隐 性位 。 由接收方发出的被动错误标志不能影响总线上的任何活动 。 因此 ,被动错误接收方在检测到错误 情形发生时 ,应总是 等 待 随 后 的 6 个 等 值 位 的 出 现 。 当 这 6 个 等 值 位 被 检 测 到 , 被 动 错 误 标 志 才 算 完成 。

9.4.4.3 错误界定符

错误界定符应由 8个隐性位组成 。发送错误标志后 ,每个节点应发送隐性位并监测总线 ,直到检测 到一个隐性位 。然后 ,它会开始发送余下的 7个隐性位 。

9.4.5 OF定义

9.4.5. 1 类型 以下 OF帧有相同的格式 。 —LLC 请求的 OF LLC子层请求该 OF,表明内部有过载情形发生(见 9. 13) 。 — 对应 OF 该帧应由 MAC子层在特定错误情形发生时发送(见 9. 13) 。 OF包含 2个位场 ,过载标志和过载界定符 。过载标志与主动错误标志一致 。 过载界定符与错误 界定符一致 。

9.4.5.2 过载标志

过载标志由 6个显性位组成 。它破坏了间歇场的固定形式(见 9. 4. 6) 。 随后 ,所有其他节点也检测 到一个过载情形 ,并开始发送过载标志 。

9.4.5.3 过载界定符

过载界定符由 8个隐性位组成 。发送一个过载标志以后 ,每个节点应检测总线 ,直到检测到一个隐 性位 。此时 ,每个节点应完成过载标志的发送 ,并开始同时发送余下的 7 个隐性位 , 以完成 8 位过载界 定符 。

9.4.6 帧间空间的定义

9.4.6. 1 描述 无论上一帧的类型(DF、RF、EF、OF) 是什么 ,DF和 RF应与上一帧之间隔开一段时间 ,这段时间 称为帧间空间 。与之相比 ,EF和 OF之前不应有帧间空间 ,并且多个 OF也不应被帧间空间隔开 。 帧间空间应包含间歇场和总线空闲时间 。前一帧作为发送方的被动错误节点 , 帧间空间应也包含 节点抑制发送时间(见图 9 和图 10) 。 图 9 前一帧的接收节点或者非错误-被动节点的帧间空间 图 10 前一帧的发送节点或者错误-被动节点的帧间空间

9.4.6.2 间歇场

间歇场由 3个隐性位组成 。在此期间 ,节点不能发送 DF或者 RF。 只允许标志过载情形 。 在间歇场第 3位检测到的显性位 ,应被视为 SOF(见 9. 4. 2. 2) 。

9.4.6.3 总线空闲

总线空闲时长可以为任意长度 。满足以下情形时 ,应认为总线空闲 : — 对于接收方和主动错误发送方 , 当间歇场的第 3位为隐性时 ; — 对于被动错误发送方 , 当 抑 制 发 送 时 间 的 第 8 位 为 隐 性 时 , 或 者 当 脱 离 了 总 线 整 合 状 态(见 9. 9. 4) 。 总线空闲时 ,任意节点可以访问总线以发送数据 。在其他帧传送期间处于挂起传送的帧 ,应在间歇 场后的第一位开始发送 。 在总线空闲时间内 ,总线上如检测到一个显性位 ,应被视为 SOF。

9.4.6.4 抑制发送

被动错误节点 ,如果是上一个帧的发送方 ,应在间歇场后再抑制 8位的时间间隔 ,才能传送下一帧 。 如果另一个节点在该节点的抑制发送时间内开始发送 ,则该节点应切换为 DF或者 RF帧的接收方 。

9.5 帧编码

帧的位流应按照 NRZ方法编码 。这意味着在一个位时间内所产生的位电平为常量 。 为了限制用于同步的边沿间的最大距离 ,帧的 SOF、仲裁场 、控制场 、数据场和 CRC序列应采用位 填充的方法编码 。任意时刻 , 当一个发送方在发送的位流中检测到 5个连续相同值的位出现时(包括填 充位) ,应在该位流(见图 11) 中 自动插入一个相反的位(填充位) 。接收方应识别出 5 个相同值的序列 , 并去掉填充位 。 位填充如图 11所示 。 图 11 位填充 在 FD 帧的 CRC场 ,填充位在固定位置插入 ,称之为固定填充位 。 即使前一个场的最后几个位不 是连续 5个相同值的序列 ,在填充计数的第一个位之前应有一个固定填充位 。如果前一个场的最后几 位是连续 5个相同值的序列 ,则其后 、填充计数之前应只有一个固定填充位 ,而不是两个连续的填充位 。 其他固定填充位应在 CRC场中每隔 4位插入一个 ,且每一个固定填充位的值都是前一个的反码 。接收 方应能在位流中去掉固定填充位 ,便于 CRC检测 。如果一个固定填充位和其前一个固定填充位的值相 同 ,则视为格式错误 。FD 帧中 CRC场固定填充位的数量 , 与采用传统帧位填充方法得到的最大填充 位数量相等 。 DF或者 RF剩下的位场(CRC界定符 、ACK场 、EOF) 为固定形式 ,无需位填充 。 EF和 OF也是固定形式 ,无需位填充 。

9.6 帧应答

所有的接收方应检测接收到的 DF和 RF 的一致性 ,并应答一致的 DF和 RF。应答与帧的标识符 无关 。

9.7 帧的有效性

帧被认为是有效的时间点 ,对于所有接收方应是相同的 ,但是对发送方是不同的 。 接收方 如果直到 EOF的最后一位也没有发生错误的话 ,接收方认为帧有效 。 EOF最后一位的值不影响 帧的有效性 , 即使是显性 ,也无需认为是格式错误 。一个接收方检测到 EOF最后一位为显性时 ,用 OF 回应(见 9. 13) 。 发送方 如果直到 EOF也没有发生错误 ,则发送方认为帧有效 。如果帧损坏 ,应按照 9. 9. 6启动恢复进程 。 注 : 如果发送方在 EOF的最后一位采样到显性位(一 个 全 局 或 者 本 地 发 送 方) ,那 么 该 帧 对 接 收 方 有 效 ,对 发 送 方 无效 。发送方发出一个 EF,并且重新发送该帧 , 因 此 该 帧 会 被 接 收 2 次 。 接 收 方 将 该 显 性 位 视 为 过 载 而 发 出 OF,且将下一个帧视为独立的帧 。 9. 8 位发送顺序 DF和 RF应从 SOF的显性位开始按位场来传送 。 在一个场中 , MSB应先传 。 在数据场中(任意 大小) ,字节从 0 到 n(n+1是如表 5定义的数据字节的数量) 的顺序传送 。对每一个字节 ,位按 7 到 0 的顺序传送 。 在图 12到图 17中 ,底部加粗的线表示该位为显性位 ,顶部加粗的线表示该位为隐性位 。 图中不包 含填充位 。 标引序号说明 : a 如果 DLC= 0 或者 RTR= 隐性 ,则没有数据场 。 图 12 CBFF的位发送顺序 ,最大 8 字 标引序号说明 : a 如果 DLC= 0,则没有数据场 。 图 13 FBFF的位发送顺序 ,最大 16字节 图 14 FBFF的位发送顺序 ,2064字节 标引序号说明 : a 如果 DLC= 0 或者 RTR= 隐性 ,则没有数据场 。 图 15 CEFF的位发送顺序 ,最大 8 字节 标引序号说明 : a 如果 DLC= 0,则没有数据场 。 图 16 FEFF的位发送顺序 ,最大 16字节 图 17 FEFF的位发送顺序 ,2064字节

9.9 媒介访问方法

9.9. 1 概述 此条款描述了 CAN媒介访问方法相关的功能和特性 。

9.9.2 多主

在传送过程中 ,DF或者 RF 的发送节点即总线主节点 。

9.9.3 总线访问

一个主动错误节点 ,只要总线空闲即可访问总线(见 9. 4. 6. 3) 。一个被动错误节点 ,如果是当前帧 或者前一个帧的接收方 ,只要总线空闲即可访问 。一个被动错误节点 ,如果是当前帧或者前一个帧的发 送方 , 当完成了其抑制发送时间后 ,且同时没有其他节点已经开始发送的情况下 , 可以开始访问总线 。 当多个节点同时开始传送 ,其中优先级最高的节点应成为总线主节点 。这种解决总线访问冲突的机制 应是基于内容的仲裁 。

9.9.4 总线整合状态

CAN节点在以下情况时进入总线整合状态 :启动协议操作后 、在总线关闭恢复期间 、或者在检测到 协议外状态之后(仅对 CAN FD节点或者 CAN FD兼容节点) 。 当检测到空闲情形(见 3. 28) ,CAN 节 点应离开总线整合状态 。 应设置一个位计数器 , 当进入总线整合状态 ,或者总线在采样点处检测到显性时 ,位计数器被重置 。 当总线在采样点处检测为隐性时 ,位计数器应加 1。 当位计数器的值达到 11时 ,意味着检测到空闲情 形 。对于总线关闭恢复情形的检测(见 11. 1. 4. 4) , 应 设 置 第 二 个 计 数 器 , 每 检 测 到 一 次 总 线 空 闲 情 形 时 ,该计数器加 1。 处于总线关闭状态的节点在检测到空闲状态之后 ,如果还没有满足总线关闭恢复情形 ,应重新进入 总线整合状态 。 对于 FD兼容节点或者 CAN FD节点 ,位计数器应有第三个重置情形 。 当检测到引起同步的边沿 时 ,位计数器应重置 。 当同步发生时 ,应重新开始对连续 11个隐性位的情形进行检测 。 可选的边沿过 滤见 10. 3. 2. 3。 注 : 当 CAN FD或者 FD兼容节点处于整合状态 ,会对比标称位时间要短的显性脉冲做出反应 , 以确保 FD 帧 数 据 段的位不被误认为是空闲情形 。

9.9.5 协议外事件

CAN FD节点和 FD兼容节点会检测如 9. 4. 2. 4定义的协议外事件 。对于协议外事件 ,错误计数器 不应改变 ,应使能硬同步 ,节点应发送隐性位并进入总线整合状态(见 9. 9. 4) 。

9.9.6 MAC帧的传送

根据 9. 9. 3, 当被允许访问总线时 ,节点可以开始发送 MACDF和 MAC RF帧 。MAC EF应按9. 12 定义的发送 。MAC OF应按 9. 13定义的发送 。 以下情形的 MAC DF和 MAC RF应自动重发 :失去仲裁的 、未被应答的 、或者传送过程中被错误 干扰的 。重发的 MAC DF或者 MAC RF应和其他任意 MAC DF或者 MAC RF等同处理 ,例如 ,它们 也需要参与仲裁流程以获得总线访问 。 当某个帧不再请求发送时 ,该帧的自动重发应被禁止 。可选的 , CAN节点可以有这种配置 , 限制重发的次数 。可以禁止所有帧的自动重发 。

9.9.7 基于内容的仲裁

在仲裁中 ,每一个发送方应对比总线上正在传输的位电平 。如果该电平与自己发出的相同 ,则该节 点可以继续发送 。如果发出的是隐性电平而检测到的是显性电平 ,该节点失去仲裁退出访问 ,并不再发 送任何位 。如果发送的是显性位 ,而监测到的是隐性 ,则节点应检测到一个位错误 。 基于内容的仲裁过程 ,从标识符第一位开始 ,直到标准帧的 IDE位结束 , 或者对于扩展帧 , 仲裁过 程到 RTR位或者 FD 帧的 RRS位结束 。 9.9. 8 帧的优先级 两个有着不同标识符的帧 ,标识符值越小的拥有更高的优先级 。 如果 DF和 RF帧有相同的标识符 ,则 DF帧应获得更高优先级 。这点可以通过 RTR 位的设定值 判断得出 。

9.9.9 冲突解决

只有当总线空闲的时候才可以传送数据 。 当两个或两个以上的帧同时开始传送的时候 ,这种情况 我们称之为冲突 。CAN 的逐位仲裁方法解决了所有有不同标识符的 DF和 RF帧间 ,或者不同类型帧 间的冲突 。如果冲突帧不相同 ,未解决的冲突引起 EF。 9.9. 10 帧格式的禁止 可选的 ,实现中可以有这样的配置接 口 ,允许禁止传统 CAN 帧格式或者 FD 帧格式 。如果一个帧 格式被禁止 ,该格式的帧应被当作无效帧处理 ,并会引起错误帧 。 一个支持 FD 的实现不应设置成 FD 兼容模式 。 传统帧与 FD 帧间的兼容性见表 A. 1。 9. 10 MAC数据的一致性 需要传输的信息由 LLC用户准备好 ,经由节点的控制器主机接口和数据链路层的 LLC子层传送 到 MAC子层 ,MAC子层进行信息的封装 。信息可以在共享内存中储存 。共享内存中要传输的信息的 数据一致性 ,应由以下至少一个方法来保证 。 — 在传送开始前 ,MAC子层应在临时缓存中存储要传送的所有信息 ; — 当要传输的信息传至 MAC子层时 ,LLC子层应检测数据错误 。如果检测到数据错误 ,则传输 不应启动 。如果当检测到数据错误时 , 已开始传输 ,节点应切换成总线监听模式 ,见 9. 14,或者 进入受限操作模式 ,见 9. 15。接收节点将不会见到有效信息 。 注 : 数据错误是指 RAM 中的奇偶校验错误 ,数据未及时提供 ,或者传输正在进行时部分 数 据 被 LLC用 户 更 新 等 。 如果使用了第一种方法确保数据一致性 ,则总线监听模式和受限操作模式两种操作模式的实现是可选项 。 9. 11 错误检测 MAC子层应提供以下机制用于错误检测 : — 监控 ; — 填充规则检查 ; — 帧检查 ; —FD 帧的填充计数检查 ; — 15位 、17位或者 21位 CRC; —ACK 检查 。 有 5 种不同的错误类型 ,彼此并不互斥 。 a) 位错误 节点在总线上发送位的同时 ,也应监听总线 。如果监听到的位和已发送的位不符 ,意味着检测 到一个位错误 。 例外情形 :仲裁过程中如果发出的是隐性位 , 而检测到的是显性位 ; 或者在 ACK 间隙中发出 的是隐性而检测到的是显性 ; 或者节点发送被动错误标志而检测到一个显性位 ,不应视 为 位 错误 。 b) 填充错误 如果在位填充相关 的 帧 位 场 中 检 测 到 连 续 6 个 相 同 的 位 , 应 视 为 填 充 错 误 。 如 果 FD 帧 的 CRC场中 ,一个固定填充位的值与其预计值不符 ,应视为格式错误 ,而非填充错误 。 c) CRC错误 CRC序列由发送方计算出的 CRC值组成 。接收方应使用和发送方相同的方法计算 CRC。如 果计算出的 CRC序列与接收到的不同 ,视为 CRC错误 。在 FD 帧中 ,计算出的填充位数量和 接收到的填充计数不匹配 ,应视为 CRC错误 。 d) 格式错误 如果固定形式的位场包含一个或多个非法值 ,则视为格式错误 。 例外 :一个接收方在 EOF的最后一位检测到显性位 ,或者任意节点在错误界定符或者过载界 定符的最后一位检测到一个显性位 ,不应视为格式错误 。 e) ACK错误 发送方无论何时在 ACK 间隙处未检测到显性位 ,视为 ACK错误 。 无论以上哪种错误被检测到 ,LLC子层应得到通知 。 随后 ,MAC子层应发起错误帧的传送 。 9. 12 错误标识 无论何时 ,任意节点检测到位错误 、填充错误 、格式错误 、或者 ACK 错误 , 相应节点应在下一位开 始发送错误标志 。 当 FD 帧的数据段检测到错误 ,在发送错误标志前 ,节点应从数据位时间切换至仲裁 段的标称位时间 。使用 TDC 的发送方(见 10. 3. 3) 应按图 18切换位时间 。接收方(和不使用 TDC 的发 送方) ,应按图 19切换位时间 。 图 18和图 19的阴影部分展示了如图 22所示的位时间部分 。 在 SSP处检测到错误后 ,在 SP和 IPT 之后 ,位定时切换回标称位速率 ,但是处于 IPT 的位 ,如果 已经在相位缓冲段 2 中进行了计数 ,则在下一个位开始之前和错误标志开始发送之前 ,应让其通过 。 图 18 FD 帧的发送方 ,在数据段的 SSP检测到位错误 图 19 接收方在 FD 帧的数据段检测到错误 接收方接收传统帧并检测到 CRC错误 ,应在 ACK界定符后发送 EF。接收方接收 FD 帧并检测到 CRC错误 ,应在 CRC界定符后 3个位时间之后发送 EF,如图 20所示的传统帧和图 21所示的 FD 帧 。 在 CRC界定符和 EF帧起始之间的显性位不应视为错误 。 图 20 传统帧中出现了 CRC错误 图 21 FD 帧中出现了 CRC错误 9. 13 过载标识 以下情形会导致 OF的发送 : a) LLC 请 求 的 OF(由 LLC 子 层 发 起) : 接 收 方 的 内 部 情 形 , 需 要 延 迟 下 一 个 MAC DF 或 者 MAC RF; b) 对应 OF(由 MAC子层发起) :接收方在间歇场前 2位检测到一个显性位 ,或者在 EOF最后一 位检测到显性位 ;任意节点在错误界定符或者过载界定符最后一位检测到显性位 。 LLC请求的 OF应只能在相应间歇场的第一位开始发送 ,但是在情形 b) 中对应 OF应在显性位的 后一位开始传送 。允许情形 a) 描述的 LLC请求的 OF,但并不要求实现 。 最多允许产生 2个 LLC OF帧 , 以延迟下一个 MAC DF或者 MAC RF。 9. 14 总线监听 可选的 ,CAN 实现可以提供总线监听模式 。此时它们应能够接收有效的 DF和 RF,但只能在总线 上发送隐性位 ,不应启动传送 。如果 MAC子层被要求发送一个显性位(ACK位 ,过载标志 , 主动错误 标志) ,该位应内部流转 ,使得 MAC子层监测到该显性位 ,而 CAN 网络可能仍然处于隐性状态 。 9. 15 受限操作 可选的 ,CAN 实现可以提供受限的操作模式 。它们可以接收 DF和 RF,并对有效帧发送 ACK,但 是不能发送 EF或者 OF。如果发生错误或者过载情形 ,它也不能发送显性位 ,而将其视为协议外事件 , 并进入总线整合状态(见 9. 9. 4) 。 当 CAN节点处于受限操作模式 ,其错数计数器不应发生改变 。如果 处于受限操作模式的 CAN节点是网络中的潜在时间主节点 ,它应能发送时间相关信息以启动网络 ,不 应发送其他帧 。

10 PL定义

  1. 1 概述和功能模型 PL实现将 CAN节点连接到总线上 。节点数量受总线的电气负载和 CAN数据链路层协议限定 。 PL按照 ISO/IEC 8802-3定义其模型 ,分为 3层 。 a) PCS由以下功能组成 :位编码/解码 ,时间和同步 ,总线故障检测 。定义见后面的分条款 。 b) PMA子层由总线发送/接收的功能电路组成 。该层不包含在本文件中 。 c) PMD子层由物理媒介和 PMA子层的机械电子接口组成 。该层不包含在本文件中 。

10.2 PL服务

10.2. 1 描述 PL服务允许本地 MAC子层和同级 MAC子层实体间交换位信息 。 PL应向 MAC子层提供以下服务原语 : —PCS_Data.Request; —PCS_Data.Indicate。 对于支持 CAN FD 的实现中 ,还有另外 2种可选的服务原语 : —PCS_Status.Transmitter; —PCS_Status.Receiver。

10.2.2 PCS_Data.Request

该服务原语用于 MAC子层向 PL层请求发送一个显性或隐性位 。参数如下 : PCS_Data.Request( Output_Unit ) 参数“Output_Unit”值为显性或者隐性中的一个 。

10.2.3 PCS_Data.Indicate

该服务原语用于 PL 向 MAC子层通知一个显性或者隐性位的到来 。参数如下 : PCS_Data.Indicate( Input_Unit ) 参数“Input_Unit”值为显性或隐性中的一个 , 以表示一个单独的位 。

10.2.4 PCS_Status.Transmitter

该服务原语用于 MAC子层向 PL层通知 ,MAC子层向 PL层发送 FD 帧的数据段 。参数如下 : PCS_Status.Transmitter( FD_Transmit ) 参数“FD_Transmitter”取值如下 : 当 MAC子层发送的是 FD 帧的数据段时 ,该参数值为有效 ; 当 MAC子层发送的不是 FD 帧的数据段时 ,该参数值为无效 。

10.2.5 PCS_Status.Receiver

该服务原语用于 MAC子层向 PL层通知 ,MAC子层接收到 FD 帧的数据段 。参数如下 : PCS_Status.Receiver( FD_Receive ) 参数“FD_Receiver”取 值 如 下 : 当 MAC 子 层 接 收 的 是 FD 帧 的 数 据 段 时 , 该 参 数 值 为 有 效 ; 当 MAC子层接收的不是 FD 帧的数据段时 ,该参数值为无效 。

10.3 PCS定义

10.3. 1 位编码/解码 10.3. 1. 1 位时间 总线管理功能在位时间帧里执行 ,如 CAN节点同步行为 、网络发送延迟补偿和采样点位置都应由 CAN 实现的可编程位定时逻辑来指定 。 支持 CAN FD 的实现应支持两种位速率 :标称位速率和数据位速率 。不支持 FD 的实现中 ,只有传 统 CAN 的标称位速率 。第二种位速率的定义 , 即数据位时间的数据位速率 ,需要单独的寄存器组 。数 据位时间应小于或者等于标称位时间 。 数据位时间应只能在 FD 帧的数据段使用 。如果 BRS为隐性的话 ,数据段开始于 BRS的采样点 , 结束于 CRC界定符的第一个采样点 ,或者结束于当发现了导致 EF发送的错误情形 。 数据段之外的都是仲裁段 。所有的传统帧 、EF、OF, 空闲时间和 BRS位为显性的 FD 帧的所有部 分 ,都是仲裁段 。 仲裁段中使用标称位时间 。 如果 BRS位为隐性 ,则在 BRS的采样点处 ,位速率由标称位速率切换到数据位速率 。 在 CRC界 定符的第一个采样点处 ,或者检测到错误情形时 ,位速率由数据位速率切换到标称位速率 。 当位速率由 于检测到错误情形而切换时 ,应在采样点后少于或等于 2个时间份额切换 ,见图 18和图 19。 注 : 因为位速率在 BRS位和 CRC界定符的采样点切换 ,两个位的长度是处于中间级的 。这两个位 的 长 度 之 和 ,等 于一个标称位时间和一个数据位时间的长度之和 ,见图 22。 时间份额 时间份额是取自节点时钟周期的一个固定的时间长度单元 。应至少存在一个可编程的预分频 ,其 值为整数 ,范围至少从 1~ 32。最小的时间份额长度是一个节点时钟的周期长度 。对于位时间不同段 来说 ,时间份额应有如下不同长度 : — 对于标称位时间 ,一个时间份额(N)= m(N) ×最小时间份额 ; 有两种可选的实现方式 ,两者选其一 : — 两个不同的预分频 ,标称位时间的为 m(N) ,数据位时间的为 m(D) ,或者 ; — ,,单)(。额(N) 和(D) 的长度不同 。如果是相同的预分频 ,则单个时间 份额(N) 的长度=单个时间份额(D) 长度 。单个位时间的长度 ,取决于位的单个时间份额长度和时间 组合 。 不支持 FD 的实现只能使用基于单个时间份额(N) 的标称位时间 。 位速率和位时间 位速率在理想情况下 ,发送器未进行重同步时 ,每秒传输的位数量 。位速率和位时间的关系如下 : 标称位时间 = 标称速率 数据位时间 = 数据速率 两种位时间都应由不重叠的位时间段组成 。如图 22所示 。 图 22 标称位时间和数据位时间的分段 同步段 位时间的该段为同步段 ,用于总线上不同 CAN节点的同步 。在该段应能检测到一个边沿 。 传播段 该段用于补偿网络上的物理延迟时间 。该延迟时间包含总线上的信号传播时间和 CAN 节点内部 延迟 ,见图 23。 相位缓冲段 1 和相位缓冲段 2 相位缓冲段 1 和 2用于补偿边沿相位错误 。该段可因重同步而变长或者变短 。 采样点 该点为读取总线电平的时间点 ,并将该值视为相应的位值 。它位于相位缓冲段 1 的末尾 。 IPT IPT是指用于计算随后的位电平所需的时间份额数目 。计算开始于采样点 ,且应小于或等于相位 缓冲段 2(见 10. 3. 2. 1查看其他限制) 。 同步跳转宽度(SJW) 由于重同步 ,相位缓冲段 1 可能变长 ,相位缓冲段 2 可能变短 。 由 SJW 限制相位缓冲段总体变长 或变短的总量上限 。 内部延迟时间 CAN节点的内部延迟时间 tnode,是在发送和接收过程中产生的所有非同步延迟的总和 ,它和 CAN 实现的位时间逻辑单元有关 。见图 23。 图 23相关解释 : —CAN节点的输出和输入延迟的总和只与标称位时间的配置有关 。公式(1) 为 CAN 节点的重 要特性参数 : tnode =toutput +tinput …………………………( 1 ) — 通过用于 CAN 同步的发送位定时逻辑 ,节点 A应能知道位 n 在采样点处的正确的总线电平 。 tnode 的容错值取决于要求的位速率 、总线长度(任意 2 节点间的最大距离) 、以及如图所示仲裁 情形下可能的位定时 。 图 23 CAN 节点 A 和节点 B在仲裁段的延迟时间和位时间段之间的关系 10.3. 1.2 位时间参数的配置 位时间的配置应使用以 下 几 个 时 间 段 : 同 步 段 、传 播 段 、相 位 缓 冲 段 1、相 位 缓 冲 段 2、以 及 SJW 。 所有段均为整数倍的时间份额 ,时间份额取决于最小时间份额长度和预分频 m 的值 。对于支持 CAN FD 的实现 ,有两套配置值 ,分别对应一个位时间段 。见图 22。 对于支持和不支持 CAN FD 的实现 ,其位时间段的配置范围应是不同的 。其中 , 除同步段在两者 中均为 1个时间份额外 ,实现上可以允许其他位时间段超过表 8定义的配置范围变化 。 表 8 时间段的最小配置范围

参数不支持 FD支持 FD支持 FD支持 FD
参数不支持 FD预分频不同预分频相同预分频相同/不同
参数标称位时间标称位时间标称位时间数据位时间
预分频 m1~ 321~ 321~ 321~ 32
同步段1×时间份额(N)1×时间份额(N)1×时间份额(N)1×时间份额(D)
传播段1~ 8个时间份额(N)1~ 48个时间份额(N)1~ 96个时间份额(N)0~ 8个时间份额(D)
相位缓冲段 11~ 8个时间份额(N)1~ 16个时间份额(N)1~ 32个时间份额(N)1~ 8个时间份额(D)

表 8 时间段的最小配置范围 (续)

参数不支持 FD支持 FD支持 FD支持 FD
参数不支持 FD预分频不同预分频相同预分频相同/不同
参数标称位时间标称位时间标称位时间数据位时间
相位缓冲段 22~ 8个时间份额(N)2~ 16个时间份额(N)2~ 32个时间份额(N)2~ 8个时间份额(D)
SJW1~ 4个时间份额(N)1~ 16个时间份额(N)1~ 32个时间份额(N)1~ 8个时间份额(D)

配置位时间段 ,需满足以下条件 : —IPT应小于或等于 2个时间份额 ; — 对于数据位时间 ,相位缓冲段 2应大于或等于最大 IPT 时间 ; — 对于标称位时间 ,相位缓冲段 2应大于或等于以下两者中的最大值 :SJW 和 IPT 时间 ; — 对于标称位时间和数据位时间 ,SJW 应小于或等于以下两者中的最小值 : 相位缓冲段 1 和相 位缓冲段 2。 为了同步 ,相对其已编程的值 ,相位缓冲段 1 可能会变长 , 同时相位缓冲段 2 可能会变短 。在两个 位定时配置里 ,采样点的位置可能会不同 。在数据位速率里 ,传播段长度可能为 0。 (()) ,,(()) ;,间()份),, 在 CAN 实现中 ,传播段和相位缓冲段 1无需分开编程 ;对传播段和相位缓冲段 1 的总和编程会更 有效率 。不支持 FD 的实现 ,一个标称位时间的时间份额总数应至少在 8~ 25范围内可编程 。对于支 持 FD 的实现 ,一个数据位时间的时间份额总数应至少在 5~ 25范围内可编程 ,一个标称位时间的时间 份额总数应至少在 8~ 80范围内可编程 。 如果在标称位时间和数据位时间里 ,使用了相同的单个时间份额长度 ,并且在一个网络中所有的 CAN节点的标称位时间的采样点位置相同 ,则对使用 FD 帧的网络来说 ,意味着实现了最适合的时间 容差 。 为了给标称位时间和 FD实现里的数据位时间提供网络范围内特定的时间份额长度 ,不同 CAN 节 点的节点时钟振荡频率应适当调整 。协议实现可接受的振荡容差(见 10. 3. 2. 5) , 和导致错误同步的潜 在可能 , 由相位缓冲段 1、相位缓冲段 2、以及 SJW 决定 。 如果 CAN 实现的位时间配置不可编程 ,它的固定位时间配置应满足本章节定义的位时间段配置 的限制 。

10.3.2 同步

10.3.2. 1 描述 状态机应以一个时间份额为时间步长 ,进行 CAN 实现的操作与 CAN 总线信号的同步 。 每一个时 间份额里都应分析总线状态是隐性或显性 。位的采样点处检测到的总线状态 ,应视为该位的位值 。两 个连续时间份额的总线状态差异即边沿 。一个与未被干扰的帧同步的接收节点 ,仅在位的同步段检测 边沿 。在同步段外检测到的边沿 ,可能会使得 CAN节点与该边沿同步 。 注 : 将物理信号转换成数据信号的总线比较器 ,可以独立于节点时钟运行 。在可以被视为定时状态机之前 ,将数据 信号同步到节点时钟所需的时间 ,属于 CAN节点输入延迟时间的一部分(见图 23) 。 同步有两种形式 :硬同步和重同步 ,它们应遵循以下规则 。 a) 一个位时间内(两个采样点之间) 仅允许同步一次 。在检测到边沿后 , 同步应被禁止 ,直到下 一 次采样点处检测到的总线状态为隐性 。 b) 仅当总线状态在前一个采样点处为隐性(前一个读取总线状态) 时 , 一个边沿才能引起同步 。 如果发送方使用了发送延迟补偿(见 10. 3. 3) ,则 CRC界定符采样点之后第一个检测到的隐性 到显性的边沿应引起同步 。这种情形下 ,CAN 实现可以选择与该边沿同步 ,该边沿为 CRC界 定符采样点之后的第一个隐性到显性边沿 ,并与 CRC界定符的采样点间隔至少是发送延迟加 上一个时间份额 。一个正相位错误(见 10. 3. 2. 2) 的边沿 , 不应引起正在发送显性位的节点发 生同步 。 c) 硬同步应在以下场景进行 , 帧间空间(间歇场的第一位除外) 的边沿 , 节点处于总线整合状态 时 , 以及 FD 帧中 FDF位和其后的显性 res位间的边沿 。 d) 其他所有符合 a) 和 b) 的隐性到显性边沿应用于重同步 。 以下情形除外 : 节点正在发 送 FD 帧 ,在其发送该帧的数据段时 ,不应同步 。 时钟信息应来自于一个位值到其他位值的改变 。 由于位填充的特性 ,使得连续相同位值的最大数 量固定 ,从而为 CAN节点与一个帧的位流重同步提供可能性 。

10.3.2.2 边沿的相位错误

边沿的相位错误(e) 由同步段相关的边沿位置决定 , 以时间份额来计数 。其定义如下 : — 如果边沿处于同步段 ,则 e=0; — 如果边沿处于当前位的采样点和下一个位的同步段之间 ,则 e<0。

10.3.2.3 硬同步

在硬同步之后 ,位时间应被每一个完成了同步段的位定时逻辑单元重启 。 因此 ,硬同步将强制导致 硬同步的边沿位于重启的位时间的同步段 。硬同步的功能不应受 SJW 限制 。 可选的 ,在总线整合状态 ,CAN 实现可以有边沿过滤功能 ,见 9. 9. 4。如果配置使能该功能 ,需要显 性总线状态的连续两个标称时间份额来检测引起同步的边沿 。 同步应在第二个显性总线状态的时间份 额之后进行 。 如果执行边沿过滤功能 ,小于 2个标称时间份额长度的显性总线状态应被忽略 。

10.3.2.4 位的重同步

重同步会导致位时间的延长或缩短 , 以便于修正采样点的位置 ,该采样点位置与被检测到的边沿位 置有关 。 当引起重同步的边沿相位错误的长度小于或等于已编程的 SJW 值时 ,重同步的影响应和硬同 步一样 。 当引起重同步的边沿 ,其相位错误长度大于 SJW 值时 , — 并且如果相位错误 e是正的 ,相位缓冲段 1延长的值与 SJW 相同 ; — 并且如果相位错误 e是负的 ,相位缓冲段 2缩短的值与 SJW 相同 。 如果相位缓冲段 2缩短到比 IPT 时 间 短 , 则 随 后 的 位 电 平 的 计 算 可 以 在 相 位 缓 冲 段 2 的 末 尾 后 结束 。 注 : 由于仅当总线状态在采样点为隐性时才使能同步 ,且 2个采样点之间只允许有一个同步 , 只有隐性到显性的边 沿才和同步相关 。第一个边沿将会用于同步 ,其后 , 同 步 将 在 第 一 个 检 测 到 的 边 沿 处 被 禁 止 , 即 使 该 边 沿 未 引 起同步 ,例如 , 同步段里检测到该边沿 。

10.3.2.5 振荡器频率的容差范围

节点的时钟振荡器频率 fosc相对于标称振荡频率 fnom 的偏差 , 由[(1-df) ×fnom ≤fosc≤(1+df) ×fnom ] 给出 。容差 df取决于时间份额的长度 、位时间段 、以及 SJW 。任意两个节点间的时钟震荡最 大差值应为 2×df×fnom 。 fosc 的最大容差 df应满足以下条件 : SJW(N) …………………………( 3 ) …………………………( 5 )

2 × [6× bittime(D) -Phase_Seg 2(D) × + 7 × bittime(N) ]

Γ m (D) 7 SJW(D) - max 0, - 1 L m (N) 」 …………( 7 ) 式中 : (N) — 仲裁段的值 ; (D) — 数据段的值 。 传统帧应符合公式(3) 和公式(4) ;FD帧应符合公式(3) ~公式(7) 。 SJW 可能不会比两个相位缓冲段中较小的那个大 ,且传播时间段限制了可以用于相位缓冲段的位 时间 。

10.3.3 发送延迟补偿

CAN 节点是通过电路连接到 CAN 网络 ,收发器不可避免的会在协议控制器输出信号和相同信号 输入到协议控制器的时间点之间引起时延 。如果没有发送延迟补偿 ,FD 帧的数据段的位速率会受限 , 因为发送方如果在所发送位的采样点之前未接收到该位值 ,发送方会认为发生了位错误 。 支持 FD 的实现 ,应支持发送延迟补偿 。 因为根据 ISO 11898的其他部分的定义 ,数据段的位时间 长度 , 比信息从 PCS到 PMA(见 10. 4. 2. 1) ,再从 PMA 到 PCS(见 10. 4. 3. 1) 的传播时间要短 。该机制只 能用于发送方在 FD 帧的数据段 ,且 BRS为隐性位 。应可以对该机制是否使用进行编程 。 当使用了该 机制 ,数据时间份额的预分频 m (D) 的值应为 1 或者 2,实现上应能补偿发送延迟至少 2个数据位时间 。 注 : PCS到 PMA输出信息相当于收发器的总线驱动器的输入 pin脚 RXD,PMA到 PCS输入信息相当于收发器的 总线比较器输出 pin脚 TxD。 发送延迟补偿机制定义了第二采样点 SSP。如果使用该机制 ,发送方应忽略在采样点检测到的位 错误 。接收到的位值应与延迟的发送位值在 SSP进行比较 。如果在 SSP检测到一个位错误 ,发送方应 在随后的采样点对该位错误进行处理 。对于数 据 段 的 末 尾 处 的 位 , 如 果 它 们 的 SSP 处 于 随 后 的 仲 裁 段 ,则其位错误检测应被禁止 。 SSP 的位置应定义为离位时间起始处一段距离的点 。SSP位置的配置范围为 0~ 63个最小时间份 额 。SSP位置或设置为一个固定的值 ,或设置为与测得的实际发送延迟有关的值 。发送延迟的测量应 在每一个发送帧的 FDF位和 res位的隐性到显性的边沿进行 。SSP位置测得值会应用在相同帧的数 据段 。 当发送方在开始发送显性 res位时 ,应启动一个计数器 。该计数器应每次增加一个最小时间份 额 ,直到接收输入检测到显性信号 ,计数器停止计数 。计数器的值即测得的发送延迟时间 。 当 SSP位 置与实际发送延迟有关时 ,其值为测得的发送延迟时间值和配置的 SSP偏离值的总和 。 图 24中的位流[A,B, … ,K]示例显示了发送延迟和 SSP位置的关系 。此示例中 ,发送延迟将近有 2个位时间长度 。 因此 ,SSP处于起始位到发送延迟 3个位时间的范围内 ,在此处输入信号可能比较稳 定 。在此 种 情 况 下 , 接 收 位 流 中 的 位 应 和 延 迟 了 2 个 数 据 位 时 间 的 发 送 位 流 的 位 相 比 较 , 例 如 , 在 SSPA ,接收到的位 AR 与延迟了的 A2 比较 ,依次类推 。 图 24 SSP的位置 可选的 ,如果 SSP位置值是一个奇数 ,且数据时间份额的预分频为 2,则 SSP位置可以通过 SSP位 置除 2,并向下取整得到 。 注 : 图 25显示了发送延迟补偿的数据段尾端 。SSP序列结束于发送方在第一个 CRC界定符的采样点处 ,此时数据 段结束 。实际接收位值在采样点处忽略 ,SSP序 列 停 止 。在 该 例 中 , CRC界 定 符 前 最 后 一 位 CRC序 列 位 被 干 扰(接收到的 ER 是隐性 ,而发送的是显性) 。发送方接收在显性 ACK前有 2个隐性的 CRC界定符 。如果被干 扰的 E位不是局部受限 ,ACK会被一个 EF取代 。 图 25 发送延迟补偿段的尾端 CAN 实现可以选择超出数据段限制 ,继续其 SSP序列 ,如图 26所示在发送节点检测本地错误 。 图 26 可选的 SSP序列

10.4 AUI定义

10.4. 1 概述 连接单元接 口 是 PCS 和 PMA 之 间 的 接 口 。 其 中 , PCS 在 本 文 件 的 本 部 分 中 定 义 , PMA 在 ISO 11898的其他部分或者其他的标准中定义(如 ISO 11992-1) 。

10.4.2 PCS到 PMA 的信息

10.4.2. 1 输出信息 当 PCS收到 MAC子层的 Output_Unit时 ,PCS应向 PMA 发送一个输出信息 。该输出信息使得 PMA发送一个显性或者隐性位 。

10.4.2.2 Bus_off信息

当从监控器(见 11. 1) 收到一个 bus_off_request时 ,PCS应向 PMA子层发送一个 bus_off信息 。

10.4.2.3 Bus_off_release信息

当从监控器(见 11. 1) 收到一个 Bus_off_ release请求时 ,PCS应向 PMA 子层发送 Bus_ off_ release 信息 。

10.4.2.4 FD_Transmit信息

当从 MAC子层收到一个 FD_Transmit时 ,PCS应向 PMA子层发送一个 FD_Transmit信息 。该 信息对支持 CAN FD 的实现时为可选项 。

10.4.2.5 FD_Receive信息

当从 MAC子层收到一个 FD_Receive时 ,PCS应向 PMA 子层发送一个 FD_ Receive信息 。该信 息对支持 CAN FD 的实现时为可选项 。

10.4.3 PMA 到 PCS的输入信息

当从媒介收到一个位时 ,PMA 子层应向 PCS发送一个输入信息 。该输入信号向 PCS通知一个显 性或者隐性位的到来 。

11 FCE监控器描述

  1. 1 故障界定
    1. 1 目的 故障界定的目的是为了即使网络存在失效节点 ,也要保证网络传输的高可靠性 。 因此 ,故障界定策 略应证明可靠性 : a) 区分临时性错误和永久性故障 ; b) 隔离并关闭故障节点 。
  2. 1.2 策略 所有节点都有一个发送错误计数器和一个接收错误计数器 。发送错误计数器应记录帧发送时错误 的发生次数 ,而接收错误计数器用于记录帧接收时错误的发生次数 。 当帧正确发送或接收时 ,计数器应自减 。 当帧错误发送或接收时 ,计数器增加的值应大于它们没有 错误时减少的值 。计数器增加/减少的比例取决于总线上无效帧/有效帧的可接受比例 。任意时刻 ,错 误计数器的值反映了之前错误的相关频率 。 根据预定义的计数器的值 ,应修改节点在错误方面的行为 。 比如 ,从禁止发送错误标志 ,到取消帧 , 再到将经常发送无效帧的节点关闭 。
  3. 1.3 故障界定接口定义
  4. 1.3. 1 描述 故障界定接口如图 27所示 。 图 27 故障界定接口
  5. 1.3.2 LLC子层/FCE接口 FCE和 LLC子层之间交互的信息见表 9 和表 10。 表 9 LLC到 FCE信息
信息描述
Normal_mode_request将 FCE重置为初始状态(当 FCE进入初始状态 ,TEC和 REC值置 0)

表 10 FCE到 LLC信息

信息描述
Normal_mode_response对 Normal_mode_request的响应
Bus_off表示节点处于总线关闭状态
  1. 1.3.3 MAC子层/FCE接口 FCE和 MAC子层之间交互的信息见表 11和表 12。 表 11 MAC到 FCE信息
信息描述
Transmit/receive表明节点当前传输模式
Error表明 MAC子层检测到了一个错误(位错误 ,填充错误 ,CRC错误 ,格 式 错 误 ,ACK 错误)
Primary_error说明 MAC子层在发送错误标 志 之 后 检 测 到 一 个 显 性 位(表 明 MAC子 层 检 测 到 一个自身错误 ,而不是由其他节点的错误帧引起的错误)
Error/overload_flag表明 MAC子层正在发送错误标志或过载标志
Counters_unchanged表明 FCE计数器不变(特定情况 ,见 11. 1. 4. 2 的规则 c)
Error_delimeter_too_late表明 MAC子层对错误界定符的等待时间过长 。该信号在每次发送错误标志后检 测到 8个连续的显性位序列后设置
Successful_transfer表明发送/接收成功完成
Error_passive_response表明节点已被置为被动错误状态
Error_active_response表明节点已被置为主动错误状态

表 12 FCE到 MAC信息

信息描述
Error_passive_request请求将节点置为被动错误状态
Error_active_request请求将节点置为主动错误状态
  1. 1.3.4 PL/FCE接口 FCE和 PL子层之间交互的信息见表 13和表 14。 表 13 PL 到 FCE信息
信息描述
Bus_off_request请求将节点从总线断开
Bus_off_release_request请求将节点置为正常发送/接收节点

表 14 FCE到 PL信息

信息描述
Bus_off_response对 Bus_off_request的响应
Bus_off_release_response对 Bus_off_release_response的响应
  1. 1.4 故障界定规则
  2. 1.4. 1 描述 一个节点应处于下述三个错误状态中的其中一个 ,具体是哪种错误状态取决于节点的错误计数值 (见 5. 13和 5. 15) : — 主动错误状态(Error-active) ; — 被动错误状态(Error-passive) ; — 总线关闭状态(Bus-off) 。
  3. 1.4.2 错误计数 错误计数器应根据下述规则修改其值(对一个帧可能用到多个规则) 。 a) 当接收方检测到一个错误 ,接收错误计数器加 1, 以下情形除外 :发送主动错误标志或者过载 标志时 ,检测到位错误 。 b) 当接收方在发送一个错误标志后 ,在第一位检测到一个显性位 ,接收错误计数器加 8。 c) 当发送方发送一个错误标志时 ,发送错误计数器加 8。 例外 1: 如果发送方是被动错误节点 , 由于未检测到一个显性的 ACK,导致 ACK 错误 ,且发送被动错 误标志时未检测到显性位 。 例外 2: 如果发送方在仲裁时由于填充错误发送了错误标志 ,填充位应是隐性位 ,实际发送的是隐性但 是检测到的是显性 。 对于以上 2个例外 ,发送错误计数器值不变 。 d) 如果发送方在发送主动错误标志或过载标志时 ,检测到一个位错误 ,发送错误计数器加 8。 e) 如果接收方在发送主动错误标志或过载标志时 ,检测到一个位错误 ,接收错误计数器加 8。 f) 任意节点应能允许发送主动错误标志 、被动错误标志 、或者过载标志后 ,最多 7个连续显性位 。 检测到 14个连续的显性位(主动错误标志或者过载标志的情况) ,或者在被动错误标志后检测 到 8个连续的显性位 , 以及在每个序列后有 8个额外的连续的显性位 ,则每个发送方的发送错 误计数器加 8,每个接收方的接收错误计数器加 8。 g) 成功发送一个帧后(收到 ACK,并且直到 EOF结束也没有错误发生) , 除非已经是 0,否则发 送错误计数器减 1。 h) 成功接收一个帧(直到 ACK 间隙也没有错误发生 ,且成功发送 ACK) ,如果接收错误计数器当 前是 1~ 127,则接收错误计数器减 1. 如果接收错误计数器是 0,则保持 0 不变 ;如果大于 127, 则它应被设为 119~ 127之间的一个值 。
  4. 1.4.3 被动错误和主动错误状态的切换 如果节点的发送错误计数器或者接收错误计数器值大于 127(此情形接收错误计数器采用的是 7 位) ,则监控器向 MAC子层申请将相应节点切换至被动错误状态 。 对于引起节点跳转至被动错误的错误情形 ,节点发送主动错误标志 。 当发送错误计数器和接收错误计数器都小于或等于 127时 ,被动错误节点跳转至主动错误状态(见 图 28) 。 当节点的接收错误计数器超过被动错误的上限 127时 ,该错误计数器的后续增长被计数器位数限 制 。在成功接收到下一个帧后(变为主动错误) , 接收错误计数器应被设为小于被动错误限制的值[见
      1. 2 h)] 。
  5. 1.4.4 总线关闭管理 如果节点的发送错误计数器大于 255(计数器为 8位) ,那么监控器应向 PL请求将节点设为总线关 闭状态 。 处于总线关闭的节点不能对总线有任何影响 。 它既不可以发送任何帧 ,也不能对 DF或者 RF进 行应答 。节点是否可以接收 DF,取决于其实现 。 如果收到重启请求 ,处于总线关闭的节点应加入 CAN 通信(见 9. 9. 4) 。在监测到总线出现 128次 总线空闲状态后(见 3. 28) ,节点状态切换成主动错误 ,且所有错误计数器置 0(见图 28) 。 图 28 节点状态转换图
  6. 1.5 网络启动 如果在网络启动期间 ,只有一个节点在线 。如果该节点发送了一些帧 ,它将不会得到应答 。这种情 况下 ,节点会检测到错误 ,并会重复该帧 。根据 11. 1. 4. 2c) 中例外 1 的情形 ,它将进入被动错误 , 而不会 进入到总线关闭 。 一个被关闭的节点 ,再次启动后 : — 在发送之前 ,应于已存在的可用节点进行同步 , 以便加入总线通信(见 3. 29) 。 当检测到 11个 隐性位时实现同步 ,11个隐性位等同于 :ACK 界定符 +EOF+间歇场或者错误/过载界定符 +间歇场 。 — 如果此时没有其他节点可以进行同步 ,则继续等待 ,无需进入总线关闭 。

11.2 总线故障管理

在常规运行时 ,可能会发生一些影响总线运行的总线故障 。这些故障和导致的网络行为应与所使 用的 PMA一致 。

12 一致性

数据链路层一致性测试计划不在本文件的范围内 。对于符合本文件的实现 ,逻辑链路控制子层和 介质访问控制子层应符合本文件给出的所有规范和值 。如果实施了可选规范和值 ,它们也应符合 。 附 录 A (资料性) 补充信息 A. 1 传统帧和 FD 帧的差异 传统帧和 FD 帧之间的兼容性见表 A. 1,有三种可选的实现以支持帧格式 : a) 只支持传统 CAN 帧格式 ,不兼容可变数据速率帧格式(传统 CAN) ; b) 支持传统 CAN 帧格式 ,兼容可变数据速率帧格式(兼容 CAN FD) ; c) 支持传统 CAN 帧格式和可变数据速率帧格式(支持 CAN FD) 。 对于新的设计 ,宜使用选项 c) 。 实现选项 a) 和 b) 的区别在于协议外事件 。对于兼容 FD 的实现 , 当检测到隐性 FDF位时 ,协议外 事件会使其进入总线整合状态 。描述见 9. 9. 5。 实现选项 a) 和 c) 的区别在于帧格式 、CRC机制 、应答和发送延迟补偿 。参考以下条款 :

1 范围

增加了 CAN FD

3 术语和定义

  1. 1 仲裁段
  2. 11数据位速率
  3. 12数据位时间
  4. 14数据段
  5. 17支持 FD
  6. 18FD标准帧格式
  7. 19FD扩展帧格式
  8. 20FD 帧
  9. 21不兼容 FD
  10. 22FD Tolerant兼容 FD
  11. 41协议外事件

4 符号和缩写

BRS:位速率切换(bitrate switch) ESI:错误状态指示(error state indicator) FD:可变数据速率(flexible data rate) FDF:FD格式指示(FD formatindicator) FBFF:FD标准帧格式(FD base frame format) FEFF:FD扩展帧格式(FD extended frame format) res:FD 帧的保留位(reserved bitin FD frames) RRS:远程请求替代(remote requestsubstitution) SSP:第二采样点(secondary sample point) TDC:发送延迟补偿(transmitter delay compensation) 5. 8 错误检测 数据场最 大 为 16 字 节 的 FD 帧 使 用 17 位 CRC;数 据 场 范 围 为 20~ 64 字 节 的 FD 帧 使 用 21 位 CRC。 FD 帧 CRC场的固定位填充和填充计数 。 7. 2. 1 无连接模式传输服务的类型 原有的 4种帧类型增加到了 6种 ,增加的是 : FD标准帧格式的 LLC数据帧 , 以及 FD扩展帧格式的 LLC数据帧 。 7. 4. 2. 3 格式场 为支持 CAN-FD功能增加了以下信息 : FBFFFD标准帧格式 , 以及 FEFFFD扩展帧格式 。 7. 4. 2. 4 DLC场 扩展了 DLC, 以支持 CAN-FD功能 。 7. 4. 2. 5 数据场 扩展了数据场 , 以支持 CAN-FD功能 。 9. 4 MAC帧结构 为支持 CAN-FD功能 ,增加了以下内容 : FD标准帧格式的 MAC 数据帧 ,FD扩展帧格式的 MAC数据帧 。 9. 4. 2. 3 仲裁场 9. 4. 2. 4 控制场 9. 4. 2. 6 CRC场 9. 4. 2. 7 ACK场 9. 8 位发送顺序 图 13、图 14、图 16和图 17描述了 FD 帧 。 9. 9. 5 协议外事件 9. 12错误标识 离开 FD 帧数据段时的错误标识 。 10. 3. 1. 2 位时间参数配置 数据位时间的配置值 。 10. 3. 2. 5 振荡器频率的容差范围 FD 帧的 3个方程式 。 10. 3. 3 发送延迟补偿 仅用于 FD 帧 。 表 A. 1 实现间的兼容性

功能实现类型实现类型实现类型实现类型
传统 CAN
或其他 支 持 和 配 置 在 禁 止 可 变 数据速率帧格式时兼容 CAN FD支 持 CAN FD支持 CAN FD
当支 持 和 配 置 禁 止 传 统 帧 格 式 时(见 9. 9. 10)
传统帧的接 收和发送支持支持支持不接收 ,不 发 送 。 当 出 现 传 统 帧 时 , 除非当 节 点 处 于 被 动 错 误 状 态或者不 能 发 送 , 否 则 将 会 发 送 错误帧
FD 帧的接收
和发送不接收 , 不 发 送 。 当 出 现 FD 帧 时 , 除非当节 点 处 于 被 动 错 误 状 态或者不能 发 送 , 否 则 将 会 发 送 错误帧不 接 收 , 不 发 送 , 当出现 FD 帧时不 会发送错误帧支持支持

A.2 可选型要求的实现特性 本文件中的可选型要求实现特性见表 A. 2。 表 A.2 可选特性

序号可选特性描述条款
1FD 帧格式第 1 章
2帧格式的禁止9. 9. 10
3受限的 LLC帧7. 5
4不发送包含填充字节的帧7. 5
5LLC放弃接 口7. 2. 2, 7. 3. 4
6ESI和 BRS位值7. 2. 2, 9. 4. 2. 4
7提供 MAC数据一致性的方法9. 10
8时间和时间触发7. 3. 4, 8. 2, 9. 15
9时间戳8. 4
10总线监听模式9. 10, 9. 14
11句柄3. 24, 7. 2. 2, 7. 4. 1
12受限操作9. 10, 9. 15
13标称位和数据位的预分频10. 3. 1. 1, 10. 3. 1. 2
14禁止自动重发3. 43, 7. 3. 4, 8. 3. 1, 9. 9. 6
15重发的最大次数9. 9. 6
16检测到隐性 res位时禁止协议外事件9. 4. 2. 4
17PCS_Status10. 2. 1, 10. 2. 4, 10. 2. 5
18总线整合状态时的边沿过滤9. 9. 4, 10. 3. 2. 3
19放置 SSP 的时间解决方案10. 3. 3
20PCS的 FD_T/R信息10. 4. 2. 4, 10. 4. 2. 5

A.3 实现提示 本文件定义了在 CAN 网络上的 CAN通信 。它并未定义 CAN 协议实现和主控制器之间的接 口 。 从而可以允许将 CAN实现集成到简单的传感器或者执行器节点 ,或者集成到 μC或者单独的 IC 中 。 如果实现允许从软件上更改节点配置 ,那么需要将配置数据(例如位时间配置 、操作模式) 锁住 , 以 避免在 CAN通信正在进行时的更改 。 参 考 文 献 [1] GB/T 21437. 3 道路车辆 由传导和耦合引起的电骚扰 第 3 部分 : 除电源线外的导线通 过容性和感性耦合的电瞬态发射 [2] ISO 11992-1 Road vehicles—Interchange of digital information on electrical connections between towing and towed vehicles—Part1: Physicaland data-link layers . 中 华 人 民 共 和 国 国 家 标 准 道路车辆 控制器局域网(CAN) 第 1 部分 :数据链路层和物理信令 GB/T 41588. 1—2022/ISO 11898-1:2015 * 中 国 标 准 出 版 社 出 版 发 行 北京市朝阳区和平里西街甲 2 号(100029) 北京市西城区三里河北街 16号(100045) 网址:www. spc. org. cn 服务热线 :400-168-0010 2022年 7 月第一版 * 书号 : 155066 · 1-70283 版权专有 侵权必究


版权与来源说明:本页全文提取自已授权收录的标准文件(来源:标准官方发布版本)。全文仅供学习与研究使用,请遵守标准版权条款;商业使用请通过官方渠道(ISO / 国家标准全文公开系统)获取正式版本。 内容说明:正文由原始文件自动提取并整理排版(保留章节结构与表格),个别格式/字符可能与原版有差异,关键参数请以官方正式版本为准。