logo资料库

CAN BUS规范v2.0+中文版.pdf

第1页 / 共36页
第2页 / 共36页
第3页 / 共36页
第4页 / 共36页
第5页 / 共36页
第6页 / 共36页
第7页 / 共36页
第8页 / 共36页
资料共36页,剩余部分请下载后查看
CAN -bus 规范 V2.0 版本 引言 随着串行通讯进入更多应用领域,因此,在一些应用里,需要对通讯功能的报文识别位提出分配标准 化的要求。原先的地址范围由 11 个识别位定义,如果地址范围扩大,则这些应用就可以更好地由 CAN 来 实现。 因此引入了第二种报文格式(‘扩展格式’)的概念,其定义的地址范围更宽,由 29 位定义。系统设计 者将从考虑定义良好的结构命名方案中得到解放。有的用户不需要由扩展格式提供的识别符范围,可以继 续沿用常规的 11 位识别符范围(‘标准格式’),在这种情况下,可以采用市场上可用的 CAN 仪器,或使 用兼容这两种模式的新控制器类仪器。 为了区别标准格式和扩展格式,按 CAN 1.2 规范定义,使用了 CAN 报文格式的第一个保留位。因为 CAN1.2 定义的信息格式相当于标准格式,因此仍然是有效的。此外,由于扩展格式已经定义,因此网络 中会共存标准格式和扩展格式的报文。 这本 CAN 规范技术规范由两部分组成: • A部分:CAN 的报文格式说明(按 CAN1.2 规范定义)。 • B部分:标准格式和扩展格式的说明。 为了兼容 CAN2.0 ,要求 CAN 的仪器应兼容 A 部分或 B 部分。 注意: 只要没有用到扩展格式,那么,根据 A 部分或 CAN 旧版本设计的仪器可以和根据 B 部分设计的仪器 相互间进行通讯。 - 1 -
A 部分 目录 1.介绍 ............................................................................................................................... .............................. 3 2.基本概念 ............................................................................................................................... ...................... 3 3.报文传输 ............................................................................................................................... ...................... 6 3.1 帧类型 ............................................................................................................................... .................... 6 3.1.1 数据帧............................................................................................................................... ............. 6 3.1.2 远程帧............................................................................................................................... ............. 9 3.1.3 错误帧............................................................................................................................... ........... 10 3.1.4 过载帧............................................................................................................................... ........... 11 3.1.5 帧间空间............................................................................................................................... ....... 11 3.2 发送器/接收器的定义......................................................................................................................... 12 4.报文校验 ............................................................................................................................... .................... 12 5.编码 ............................................................................................................................... ............................ 13 6.错误处理 ............................................................................................................................... .................... 13 6.1 错误检测 ............................................................................................................................... .............. 13 6.2 错误标定 ............................................................................................................................... .............. 13 7.故障界定 ............................................................................................................................... .................... 13 8.位定时要求 ............................................................................................................................... ................ 15 9 增加 CAN 振荡器容差 ............................................................................................................................... 16 9.1 协议修改 ............................................................................................................................... .............. 17 - 2 -
1.介绍 控制器局域网(CAN )为串行通讯协议,能有效地支持具有很高安全等级的分布实时控制。CAN 的应 用范围很广,从高速的网络到低价位的多路接线都可以使用 CAN 。在汽车电子行业里,使用 CAN 连接发 动机控制单元、传感器、防刹车系统、等等,其传输速度可达 1 Mbit/s。同时,可以将 CAN 安装在卡车本 体的电子控制系统里,诸如车灯组、电气车窗等等,用以代替接线配线装置。 这本技术规范的目的是为了在任何两个 CAN 仪器之间建立兼容性。可是,兼容性有不同的方面,比如 电气特性和数据转换的解释。为了达到设计透明度以及实现柔韧性,CAN 被细分为以下不同的层次: • CAN 对象层(the object layer) • CAN 传输层(the transfer layer) • 物理层(the phyical layer) 对象层和传输层包括所有由 ISO/OSI 模型定义的数据链路层的服务和功能。对象层的作用范围包括: 查找被发送的报文。 确定由实际要使用的传输层接收哪一个报文。 为应用层相关硬件提供接口。 在这里,定义对象处理较为灵活。传输层的作用主要是传送规则,也就是控制帧结构、执行仲裁、错 误检测、出错标定、故障界定。总线上什么时候开始发送新报文及什么时候开始接收报文,均在传输层里 确定。位定时的一些普通功能也可以看作是传输层的一部分。理所当然,传输层的修改是受到限制的。 物理层的作用是在不同节点之间根据所有的电气属性进行位信息的实际传输。当然,同一网络内,物 理层对于所有的节点必须是相同的。尽管如此,在选择物理层方面还是很自由的。 这本技术规范的目的是定义传输层,并定义 CAN 协议于周围各层当中所发挥的作用(所具有的意义)。 2.基本概念 CAN 具有以下的属性: • 报文的优先权 • 保证延迟时间 • 设置灵活 • 时间同步的多点接收 • 系统宽数据的连贯性 • 多主机 • 错误检测和标定 • 只要总线一处于空闲,就自动将破坏的报文重新传输 • 将节点的暂时性错误和永久性错误区分开来,并且可以自动关闭错误的节点 - 3 -
CAN 节点的层结构(Layered Structure od a CAN node) - - - - - - - - - - 应用层 对象层 报文滤波 报文和状态的处理 传输层 - 故障界定 - 错误检测和标定 - 报文校验 - 应答 - 仲裁 - 报文分帧 - 传输速率和定时 物理层 - 信号电平和位表示 - 传输媒体 物理层定义实际信号的传输方法。本技术规范没有定义物理层,以便允许根据它们的应用,对发 送媒体和信号电平进行优化。 传输层是 CAN 协议的核心。它把接收到的报文提供给对象层,以及接收来自对象层的报文。传输 层负责位定时及同步、报文分帧、仲裁、应答、错误检测和标定、故障界定。 对象层的功能是报文滤波以及状态和报文的处理。 这本技术规范的目的是为了定义传输层及定义 CAN 协议在周围各层中所发挥的作用(所具有的意义)。 报文(Messages ) 总线上的信息以不同的固定报文格式发送,但长度受限(见第 3 节的报文传输)。当总线空闲时任何 连接的单元都可以开始发送新的报文。 信息路由(Information Routing) 在 CAN 系统里,节点不使用任何关于系统配置的信息(比如,站地址)。以下是几个重要的概念。 系统灵活性:不需要改变任何节点的应用层及相关的软件或硬件,就可以在 CAN 网络中直接添加 节点。 报文路由:报文的内容由识别符命名。识别符不指出报文的目的地,但解释数据的含义。因此, 网络上所有的节点可以通过报文滤波确定是否应对该数据做出反应。 多播:由于引入了报文滤波的概念,任何数目的节点都可以接收报文,并同时对此报文做出反应。 数据连贯性:在 CAN 网络内,可以确保报文同时被所有的节点接收(或同时不被接收)。因此, 系统的数据连贯性是通过多播和错误处理的原理实现的。 位速率(Bit rate): 不同的系统,CAN 的速度不同。可是,在一给定的系统里,位速率是唯一的,并且是固定的。 优先权(Priorities): 在总线访问期间,识别符定义一静态的报文优先权。 - 4 -
远程数据请求(Remote Data Request ): 通过发送远程帧,需要数据的节点可以请求另一节点发送相应的数据帧。数据帧和相应的远程帧是由 相同的识别符(IDENTIFIER )命名的。 多主机(Multimaster): 总线空闲时,任何单元都可以开始传送报文。具有较高优先权报文的单元可以获得总线访问权。 仲裁(Arbitration): 只要总线空闲,任何单元都可以开始发送报文。如果 2 个或 2 个以上的单元同时开始传送报文,那么 就会有总线访问冲突。通过使用识别符的位形式仲裁可以解决这个冲突。仲裁的机制确保信息和时间均不 会损失。当具有相同识别符的数据帧和远程帧同时初始化时,数据帧优先于远程帧。仲裁期间,每一个发 送器都对发送位的电平与被监控的总线电平进行比较。如果电平相同,则这个单元可以继续发送。如果发 送的是一“隐性”电平而监控视到一“显性”电平(见总线值),那么该单元就失去了仲裁,必须退出发送 状态。 安全性(Safety): 为了获得最安全的数据发送,CAN 的每一个节点均采取了强有力的措施以进行错误检测、错误标定及 错误自检。 错误检测(Error Detection): 为了检测错误,必须采取以下措施: - 监视(发送器对发送位的电平与被监控的总线电平进行比较) - 循环冗余检查 - 位填充 - 报文格式检查 错误检测的执行(Performance of Error Detection): 错误检测的机制要具有以下的属性: - 检测到所有的全局错误 - 检测到发送器所有的局部错误 - 可以检测到一报文里多达 5 个任意分布的错误 - 检测到一报文里长度低于 15 (位)的突发性错误 - 检测到一报文里任一奇数个的错误 对于没有被检测到的错误报文,其残余的错误可能性概率低于:报文错误率* 4.7 * 10 –11。 错误标定和恢复时间(Error Sinalling and Recovery Time): 任何检测到错误的节点会标志出已损坏的报文。此报文会失效并将自动地开始重新传送。如果不再出 现新错误的话,从检测到错误到下一报文的传送开始为止,恢复时间最多为 29 个位的时间。 故障界定(Fault Confinement): CAN 节点能够把永久故障和短暂扰动区分开来。永久故障的节点会被关闭。 连接(Connections): CAN 串行通讯链路是可以连接许多单元的总线。理论上,可连接无数多的单元。但由于实际上受延迟 时间以及/或者总线线路上电气负载的影响,连接单元的数量是有限的。 - 5 -
单通道(Single Channel): 总线是由单一进行双向位信号传送的通道组成。通过此通道可以获得数据的再同步信息。要使此通道 实现通讯,有许多的方法可以采用,如使用单芯线(加上接地)、2 条差分线、光缆等等。这本技术规范 不限制这些实现方法的使用,即未定义物理层。 总线值(Bus value): 总线可以具有两种互补的逻辑值之一:“显性”或“隐性”。 “显性”位和“隐性”位同时传送时,总 线的结果值为“显性”。比如,在执行总线的“线与”时,逻辑 0 代表“显性”等级,逻辑 1 代表“隐性” 等级。本技术规范不给出表示这些逻辑电平的物理状态(比如,电压、光)。 应答(Acknowledgment ): 所有的接收器检查报文的连贯性。对于连贯的报文,接收器应答;对于不连贯的报文,接收器作出标 志。 睡眠模式/唤醒(Sleep Mode / Wake-up ): 为了减少系统电源的功率消耗,可以将 CAN 器件设为睡眠模式以便停止内部活动及断开与总线驱动器 的连接。CAN 器件可由总线激活,或系统内部状态而被唤醒。唤醒时,虽然传输层要等待一段时间使系统 振荡器稳定,然后还要等待一段时间直到与总线活动同步(通过检查 11 个连续的“隐性”的位),但在总 线驱动器被重新设置为“总线在线”之前,内部运行已重新开始。为了唤醒系统上正处于睡眠模式的其他 节点,可以使用一特殊的唤醒报文,此报文具有专门的、最低等级的识别符。(rrr rrrd rrrr; r =‘’隐性’ d = ‘显性’) 3.报文传输 3.1 帧类型 - - - - 报文传输由以下 4 个不同的帧类型所表示和控制: 数据帧:数据帧携带数据从发送器至接收器。 远程帧:总线单元发出远程帧,请求发送具有同一识别符的数据帧。 错误帧:任何单元检测到一总线错误就发出错误帧。 过载帧:过载帧用以在先行的和后续的数据帧(或远程帧)之间提供一附加的延时。 数据帧(或远程帧)通过帧间空间与前述的各帧分开。 3.1.1 数据帧 数据帧由 7 个不同的位场组成: 帧起始、仲裁场、控制场、数据场、CRC 场、应答场、帧结尾。数据场的长度可以为 0。 帧起始 它标志数据帧和远程帧的起始,由一个单独的“显性”位组成。 只在总线空闲(参见“总线空闲”)时,才允许站开始发送(信号)。所有的站必须同步于首先开始 发送信息的站的帧起始前沿(参见“硬同步”)。 - 6 -
Interframe Space DATA FRAME Start of Frame Arbitration Field Cont rol Field Interframe Space or Overload Frame Data Field CRC F ield ACK F ield End of Frame 仲裁场 仲裁场包括识别符和远程发送请求位(RTR )。 识别符:识别符的长度为 11 位。这些位的发送顺序是从 ID-10 到 ID-0。最低位是 ID-0。最高的 7 位 (ID-10 到 ID-4)必须不能全是“隐性”。 RTR 位:该位在数据帧里必须为“显性”,而在远程帧里必须为“隐性”。 Interframe Space St art of Frame ARBI TRATION FIELD Cont rol Fie ld Identifier RT R B it 控制场 控制场由 6 个位组成,包括数据长度代码和两个将来作为扩展用的保留位。所发送的保留位必须为“显 性”。接收器接收所有由“显性”和“隐性”组合在一起的位。 数据长度代码:数据长度代码指示了数据场中字节数量。数据长度代码为 4 个位,在控制场里被发送。 Arbitration Fi eld CO NTRO L FIELD r1 r0 DLC3 DLC2 DLC1 DLC 0 reserved bits Dat a Lengt h Code - 7 - Data Fi eld or CRC Field
数据长度代码中数据字节数的编码(DATA LENGTH CODE ): 缩写: d —“显性” r —“隐性” Number of Data Bytes Data Leng th Code DLC3 DLC2 DLC1 DLC0 0 1 2 3 4 5 6 7 8 d d d d d d d d r d d d d r r r r d d d r r d d r r d d r d r d r d r d 数据帧:允许的数据字节数:{0,1,....,7,8}。其他的数值不允许使用。 数据场 数据场由数据帧中的发送数据组成。它可以为 0~8 个字节,每字节包含了 8 个位,首先发送 MSB 。 CRC 场 CRC 场包括 CRC 序列(CRC SEQUENCE ),其后是 CRC 界定符(CRC DELIMITER )。 Data or Co ntrol Fie ld CRC F IELD Ack Fie ld CRC S equence CRC Del imiter CRC 序列:由循环冗余码求得的帧检查序列最适用于位数低于 127 位〈BCH 码〉的帧。为进行 CRC 计算,被除的多项式系数由无填充位流给定,组成这些位流的成分是:帧起始、仲裁场、控制场、数据场 (假如有),而 15 个最低位的系数是 0。将此多项式被下面的多项式发生器除(其系数以 2 为模): X 15 + X 14 + X 10 + X 8 + X 7 + X 4 + X 3 + 1 这个多项式除法的余数就是发送到总线上的 CRC 序列(CRC SEQUENCE )。为了实现这个功能, 可以使用 15 位的位移寄存器 CRC_RG (14:0)。如果用 NXTBIT 标记指示位流的下一位,它由从帧的起 始到数据场末尾都由无填充的位序列给定。 CRC 序列(CRC SEQUENCE )的计算如下: ;0 = GR_CRC ;TAEPER // 初始化移位寄存器 - 8 -
分享到:
收藏