现在的汽车已经不再仅仅是一种死气沉沉的交通工具了。计算机的发明,也让汽车有了一个职能的心。跟中嵌入式的计算机核心应用到汽车当中。那么如何规范这个核心的工作呢?这就需要CAN总线协议来帮忙了。现在让我们来了解一下这方面的知识吧。 1,CAN总线协议基本概念: (1),报文:总线上的信息以不同格式的报文发送,但长度有限。当总线开放时,任何连接的单元均可开始发送一个新报文。 (2), 信息路由:在CAN系统中,一个CAN节点不使用有关系统结构的任何信息,这里包含一些重要的概念:系统灵活性——节点可以在不要求所有节点及其应用层改变任何软件或硬件的情况下,被接于CAN网络。报文通信——一个报文的内容由其标示符ID命名,ID并不指出报文的目的,但描述数据的含义,以便网络中的所有节点有可能借助报文滤波决定该数据是否使它们激活。成组——由于采用了报文滤波,所有节点均可接受报文,并同时被相同的报文激活。数据相容性——在CAN网络中,可以确保报文同时被所有的节点或者没有节点接受,因此,系统的数据相容性是借助于成组和出错处理达到的。(3),位速率:CAN的数据传输率在不同的系统中是不同的,而在一个系统中是固定的速率。 (4),优先权:在总线访问期间,标示符定义了一个报文静态的优先权。 (5),远程数据请求:通过发送一个远程帧,需要数据的节点可以请求另一个节点发送相应的数据帧,该数据帧与对应的远程帧以相同的标示符ID命名。 (6),多主站:当总线开放时,任何单元均可以开始发送报文,发送具有最高优先权报文的单元会赢得总线的访问权。 (7),仲裁:当总线开放时,任何单元均可以开始发送报文,若同时有两个或者更多的单元开始发送,总线访问冲突运用逐位仲裁规则,借助标示符ID解决,这种仲裁规则可以使信息和时间均无损失,若具有相同标示符的一个数据帧和一个远程帧同时发送,数据帧优先于远程帧,仲裁期间,每个发送器都对发送位电平与总线上检测到的电平进行比较,若相同则该单元可以继续发送,当发送一个隐性电平,而在总线上检测为显性电平时,该单元退出仲裁,并不再传送后继位了。 (8),安全性:CAN总线协议为了获得尽可能高的数据传输安全性,在每个CAN节点中均设有错误检测,标定和自检的强有力措施。检测措施包括:发送自检,循环冗余校验,位填充,和报文格式检查。 (9),出错标注和恢复时间:已损坏的报文由检验出错的节点进行标注。这样的报文将失效,并自动进行重发送。如果不存在新的错误,从检出错误到下一个报文开始发送的恢复实践最多为29个位时间。 (10),故障界定:CAN节点又能力识别永久性的故障和暂时扰动,可自动关闭故障节点。 (11),连接:CAN串行通信链路是一条众多单元均可被连接的总线,理论上单元数目是无限的,实际上,单元总数受限于延迟时间和总线的电器负载。 (12),应答:所有接收器均对接收报文的相容性进行检查,回答一个相容的报文,并标注一个不相容的报文。 2,CAN的特点:属于串行通信网络 (1),通信方式灵活。多主从方式工作,网络上任何节点均可以在任何时刻主动的向其他节点发送信息,不分主从。无需站地址等节点信息。可以构成多机备份系统。 (2),CAN网络上的节点信息分成不同的优先级,可以满足不同的实时要求。 (3),CAN采取非破坏性的总线仲裁技术,多个节点同时发送信息时,优先级低的节点会主动退出发送。 (4),CAN只需通过报文滤波就可以实现点对点,1点对多点及全局广播等几种方式传送接收,无需调度。 (5),CAN的直接通信距离最远可达10KM(5Kb/s),通信速率最高可达1Mb/s(40M)。 (6),CAN上的节点数目前可达110个;报文标示符可达2032种(CAN2.0A ),而CAN2.0B报文标示符几乎不受限制。 (7),CAN通信采用短帧格式,传输时间短,抗干扰强,极好的验错效果,每帧最多8B足以满足控制要求,不会占用过长总线时间,实时性强。 (8),CAN每帧都有CRC校验及其他验错措施。 (9),接口中集成了CAN总线协议的物理层和数据链路层。 (10),CAN的通信介质可为双绞线或同轴电缆,光纤。 (11),CAN节点在错误严重情况下具有自动关闭输出功能。 3,CAN总线协议基本规则: (1),总线访问:采用载波监听多路访问,CAN控制器之恩能够在总线空闲时,就是节点侦听到网络上至少存在3个空闲位(隐性位)时开始发送,采用硬同步,所有的控制器同步都为与帧的起始的前沿。过了一定时间,并在一定条件后,重同步。 (2),仲裁:各节点向总线发电平时,也对总线上电平进行读取,并于自身发送的电平进行比较,相同则发下一位,直至全部发完。不同则说明网络上有更高优先级的信息帧正在发送,即停止发送,退出竞争。 (3),编码/解码:帧起始域,仲裁域,控制域,数据域和CRC序列均使用位填充技术进行编码,就是5个连续的同状态电平插入一位与它相补的电平,还原时每5个同状态的电平后的相补电平被删除。 (4),出错标注:当检测到位错误,填充错误,形式错误或应答错误时,检测出错条件的CAN控制器将发送一个出错标志。 (5),超载标注,一些控制器会发送一个或多个超载帧以延迟下一个数据帧或远程帧的发送。 相关组织 依据国际标准化组织/开放系统互连 (International Standardi-zation Organization/Open SystemInterconnection,ISO/OSI)参考模型,CAN的ISO/OSI参考模型的层结构如图7-6所示。概念和特征 下面对CAN协议的媒体访问控制子层的一些概念和特征做如下说明: (1)报文(Message)总线上的报文以不同报文格式发送,但长度受到限制。当总线空闲时,任何一个网络上的节点都可以发送报文。 (2)信息路由(Information Routing)在CAN中,节点不使用任何关于系统配置的报文,比如站地址,由接收节点根据报文本身特征判断是否接收这帧信息。因此系统扩展时,不用对应用层以及任何节点的软件和硬件作改变,可以直接在CAN中增加节点。 (3)标识符(Identifier) 要传送的报文有特征标识符(是数据帧和远程帧的一个域),它给出的不是目标节点地址,而是这个报文本身的特征。信息以广播方式在网络上发送,所有节点都可以接收到。节点通过标识符判定是否接收这帧信息。 (4)数据一致性应确保报文在CAN里同时被所有节点接收或同时不接收,这是配合错误处理和再同步功能实现的。 (5)位传输速率不同的CAN系统速度不同,但在一个给定的系统里,位传输速率是唯一的,并且是固定的。 (6)优先权 由发送数据的报文中的标识符决定报文占用总线的优先权。标识符越小,优先权越高。 (7)远程数据请求(Remote Data Request) 通过发送远程帧,需要数据的节点请求另一节点发送相应的数据。回应节点传送的数据帧与请求数据的远程帧由相同的标识符命名。 (8)仲裁(Arbitration) 只要总线空闲,任何节点都可以向总线发送报文。如果有两个或两个以上的节点同时发送报文,就会引起总线访问碰撞。通过使用标识符的逐位仲裁可以解决这个碰撞。仲裁的机制确保了报文和时间均不损失。当具有相同标识符的数据帧和远程帧同时发送时,数据帧优先于远程帧。在仲裁期间,每一个发送器都对发送位的电平与被监控的总线电平进行比较。如果电平相同,则这个单元可以继续发送,如果发送的是“隐性”电平而监视到的是“显性”电平,那么这个单元就失去了仲裁,必须退出发送状态。 (9)总线状态 总线有“显性”和“隐性”两个状态,“显性”对应逻辑“0”,“隐性”对应逻辑“1”。“显性”状态和“隐性”状态与为“显性”状态,所以两个节点同时分别发送“0”和“1”时,总线上呈现“0”。CAN总线采用二进制不归零(NRZ)编码方式,所以总线上不是“0”,就是“1”。但是CAN协议并没有具体定义这两种状态的具体实现方式,如图7-7所示。 (10)故障界定(Confinement) CAN节点能区分瞬时扰动引起的故障和永久性故障。故障节点会被关闭。 (11)应答接收节点对正确接收的报文给出应答,对不一致报文进行标记。 (12)CAN通讯距离最大是10公里(设速率为5Kbps),或最大通信速率为1Mbps(设通信距离为40米)。 (13)CAN总线上的节点数可达110个。通信介质可在双绞线,同轴电缆,光纤中选择。 (14)报文是短帧结构,短的传送时间使其受干扰概率低,CAN有很好的效验机制,这些都保证了CAN通信的可靠性。 2 CAN总线协议内容 CAN总线的物理层是将ECU连接至总线的驱动电路。ECU的总数将受限于总线上的电气负荷。物理层定义了物理数据在总线上各节点间的传输过程,主要是连接介质、线路电气特性、数据的编码/解码、位定时和同步的实施标准。 总线竞争的原则 BOSCH CAN基本上没有对物理层进行定义,但基于CAN的ISO标准对物理层进行了定义。设计一个CAN系统时,物理层具有很大的选择余地,但必须保证CAN协议中媒体访问层非破坏性位仲裁的要求,即出现总线竞争时,具有较高优先权的报文获取总线竞争的原则,所以要求物理层必须支持CAN总线中隐性位和显性位的状态特征。在没有发送显性位时,总线处于隐性状态,空闲时,总线处于隐性状态;当有一个或多个节点发送显性位,显性位覆盖隐性位,使总线处于显性状态。 在此基础上,物理层主要取决于传输速度的要求。从物理结构上看,CAN节点的构成如图7-8所示。在CAN中,物理层从结构上可分为三层:分别是物理层信令(Physical Layer Signaling,PLS)、物理介质附件(Physical MediaAttachment,PMA)层和介质从属接口(Media Dependent:Inter-face,MDI)层。其中PLS连同数据链路层功能由CAN控制器完成,PMA层功能由CAN收发器完成,MDI层定义了电缆和连接器的特性。目前也有支持CAN的微处理器内部集成了CAN控制器和收发器电路,如MC68HC908GZl6。PMA和MDI两层有很多不同的国际或国家或行业标准,也可自行定义,比较流行的是ISOll898定义的高速CAN发送/接收器标准。 节点数量 理论上,CAN总线上的节点数几乎不受限制,可达到2000个,实际上受电气特性的限制,最多只能接100多个节点。 CAN的数据链路层 CAN的数据链路层是其核心内容,其中逻辑链路控制(Logical Link control,LLC)完成过滤、过载通知和管理恢复等功能,媒体访问控制(Medium Aeeess control,MAC)子层完成数据打包/解包、帧编码、媒体访问管理、错误检测、错误信令、应答、串并转换等功能。这些功能都是围绕信息帧传送过程展开的。 3 CAN总线的报文传输和结构 报文类型 在CAN2.0B的版本协议中有两种不同的帧格式,不同之处为标识符域的长度不同,含有ll位标识符的帧称之为标准帧,而含有29位标识符的帧称为扩展帧。如CAN1.2版本协议所描述,两个版本的标准数据帧格式和远程帧格式分别是等效的,而扩展格式是CAN2.0B协议新增加的特性。为使控制器设计相对简单,并不要求执行完全的扩展格式,对于新型控制器而言,必须不加任何限制的支持标准格式。但无论是哪种帧格式,在报文 帧类型 传输时都有以下四种不同类型的帧: (1)数据帧(Data ) 数据帧将数据从发送器传输到接收器。 (2)远程帧(Remote ) 总线单元发出远程帧,请求发送具有同一标识符的数据帧。 (3)错误帧(Error ) 任何单元检测到总线错误就发出错误帧。 (4)过载帧(Overload ) 过载帧用在相邻数据帧或远程帧之间提供附加的延时。 数据帧或远程帧与前一个帧之间都会有一个隔离域,即帧间间隔。数据帧和远程帧可以使用标准帧及扩展帧两种格式。 现在的汽车已经不再仅仅是一种死气沉沉的交通工具了。计算机的发明,也让汽车有了一个职能的心。跟中嵌入式的计算机核心应用到汽车当中。那么如何规范这个核心的工作呢?这就需要CAN总线协议来帮忙了。现在让我们来了解一下这方面的知识吧。 1,CAN总线协议基本概念: (1),报文:总线上的信息以不同格式的报文发送,但长度有限。当总线开放时,任何连接的单元均可开始发送一个新报文。 (2),信息路由:在CAN系统中,一个CAN节点不使用有关系统结构的任何信息,这里包含一些重要的概念:系统灵活性——节点可以在不要求所有节点及其应用层改变任何软件或硬件的情况下,被接于CAN网络。报文通信——一个报文的内容由其标示符ID命名,ID并不指出报文的目的,但描述数据的含义,以便网络中的所有节点有可能借助报文滤波决定该数据是否使它们激活。成组——由于采用了报文滤波,所有节点均可接受报文,并同时被相同的报文激活。数据相容性——在CAN网络中,可以确保报文同时被所有的节点或者没有节点接受,因此,系统的数据相容性是借助于成组和出错处理达到的。 (3),位速率:CAN的数据传输率在不同的系统中是不同的,而在一个系统中是固定的速率。 (4),优先权:在总线访问期间,标示符定义了一个报文静态的优先权。 (5),远程数据请求:通过发送一个远程帧,需要数据的节点可以请求另一个节点发送相应的数据帧,该数据帧与对应的远程帧以相同的标示符ID命名。 (6),多主站:当总线开放时,任何单元均可以开始发送报文,发送具有最高优先权报文的单元会赢得总线的访问权。 (7),仲裁:当总线开放时,任何单元均可以开始发送报文,若同时有两个或者更多的单元开始发送,总线访问冲突运用逐位仲裁规则,借助标示符ID解决,这种仲裁规则可以使信息和时间均无损失,若具有相同标示符的一个数据帧和一个远程帧同时发送,数据帧优先于远程帧,仲裁期间,每个发送器都对发送位电平与总线上检测到的电平进行比较,若相同则该单元可以继续发送,当发送一个隐性电平,而在总线上检测为显性电平时,该单元退出仲裁,并不再传送后继位了。 (8),安全性:CAN总线协议为了获得尽可能高的数据传输安全性,在每个CAN节点中均设有错误检测,标定和自检的强有力措施。检测措施包括:发送自检,循环冗余校验,位填充,和报文格式检查。 (9),出错标注和恢复时间:已损坏的报文由检验出错的节点进行标注。这样的报文将失效,并自动进行重发送。如果不存在新的错误,从检出错误到下一个报文开始发送的恢复实践最多为29个位时间。 (10),故障界定:CAN节点又能力识别永久性的故障和暂时扰动,可自动关闭故障节点。 (11),连接:CAN串行通信链路是一条众多单元均可被连接的总线,理论上单元数目是无限的,实际上,单元总数受限于延迟时间和总线的电器负载。 (12),应答:所有接收器均对接收报文的相容性进行检查,回答一个相容的报文,并标注一个不相容的报文。 2,CAN的特点:属于串行通信网络 (1),通信方式灵活。多主从方式工作,网络上任何节点均可以在任何时刻主动的向其他节点发送信息,不分主从。无需站地址等节点信息。可以构成多机备份系统。 (2),CAN网络上的节点信息分成不同的优先级,可以满足不同的实时要求。 (3),CAN采取非破坏性的总线仲裁技术,多个节点同时发送信息时,优先级低的节点会主动退出发送。 (4),CAN只需通过报文滤波就可以实现点对点,1点对多点及全局广播等几种方式传送接收,无需调度。 (5),CAN的直接通信距离最远可达10KM(5Kb/s),通信速率最高可达1Mb/s(40M)。 (6),CAN上的节点数目前可达110个;报文标示符可达2032种(CAN2.0A ),而CAN2.0B报文标示符几乎不受限制。 (7),CAN通信采用短帧格式,传输时间短,抗干扰强,极好的验错效果,每帧最多8B足以满足控制要求,不会占用过长总线时间,实时性强。 (8),CAN每帧都有CRC校验及其他验错措施。 (9),接口中集成了CAN总线协议的物理层和数据链路层。 (10),CAN的通信介质可为双绞线或同轴电缆,光纤。 (11),CAN节点在错误严重情况下具有自动关闭输出功能。 3,CAN总线协议基本规则: (1),总线访问:采用载波监听多路访问,CAN控制器之恩能够在总线空闲时,就是节点侦听到网络上至少存在3个空闲位(隐性位)时开始发送,采用硬同步,所有的控制器同步都为与帧的起始的前沿。过了一定时间,并在一定条件后,重同步。 (2),仲裁:各节点向总线发电平时,也对总线上电平进行读取,并于自身发送的电平进行比较,相同则发下一位,直至全部发完。不同则说明网络上有更高优先级的信息帧正在发送,即停止发送,退出竞争。 (3),编码/解码:帧起始域,仲裁域,控制域,数据域和CRC序列均使用位填充技术进行编码,就是5个连续的同状态电平插入一位与它相补的电平,还原时每5个同状态的电平后的相补电平被删除。 (4),出错标注:当检测到位错误,填充错误,形式错误或应答错误时,检测出错条件的CAN控制器将发送一个出错标志。 (5),超载标注,一些控制器会发送一个或多个超载帧以延迟下一个数据帧或远程帧的发送。 相关组织 依据国际标准化组织/开放系统互连(International Standardi-zation Organization/Open SystemInterconnection,ISO/OSI)参考模型,CAN的ISO/OSI参考模型的层结构如图7-6所示。 概念和特征 下面对CAN协议的媒体访问控制子层的一些概念和特征做如下说明: (1)报文(Message)总线上的报文以不同报文格式发送,但长度受到限制。当总线空闲时,任何一个网络上的节点都可以发送报文。 (2)信息路由(Information Routing)在CAN中,节点不使用任何关于系统配置的报文,比如站地址,由接收节点根据报文本身特征判断是否接收这帧信息。因此系统扩展时,不用对应用层以及任何节点的软件和硬件作改变,可以直接在CAN中增加节点。 (3)标识符(Identifier) 要传送的报文有特征标识符(是数据帧和远程帧的一个域),它给出的不是目标节点地址,而是这个报文本身的特征。信息以广播方式在网络上发送,所有节点都可以接收到。节点通过标识符判定是否接收这帧信息。 (4)数据一致性应确保报文在CAN里同时被所有节点接收或同时不接收,这是配合错误处理和再同步功能实现的。 (5)位传输速率不同的CAN系统速度不同,但在一个给定的系统里,位传输速率是唯一的,并且是固定的。 (6)优先权 由发送数据的报文中的标识符决定报文占用总线的优先权。标识符越小,优先权越高。 (7)远程数据请求(Remote Data Request) 通过发送远程帧,需要数据的节点请求另一节点发送相应的数据。回应节点传送的数据帧与请求数据的远程帧由相同的标识符命名。 (8)仲裁(Arbitration) 只要总线空闲,任何节点都可以向总线发送报文。如果有两个或两个以上的节点同时发送报文,就会引起总线访问碰撞。通过使用标识符的逐位仲裁可以解决这个碰撞。仲裁的机制确保了报文和时间均不损失。当具有相同标识符的数据帧和远程帧同时发送时,数据帧优先于远程帧。在仲裁期间,每一个发送器都对发送位的电平与被监控的总线电平进行比较。如果电平相同,则这个单元可以继续发送,如果发送的是“隐性”电平而监视到的是“显性”电平,那么这个单元就失去了仲裁,必须退出发送状态。 (9)总线状态 总线有“显性”和“隐性”两个状态,“显性”对应逻辑“0”,“隐性”对应逻辑“1”。“显性”状态和“隐性”状态与为“显性”状态,所以两个节点同时分别发送“0”和“1”时,总线上呈现“0”。CAN总线采用二进制不归零(NRZ)编码方式,所以总线上不是“0”,就是“1”。但是CAN协议并没有具体定义这两种状态的具体实现方式,如图7-7所示。 (10)故障界定(Confinement) CAN节点能区分瞬时扰动引起的故障和永久性故障。故障节点会被关闭。 (11)应答接收节点对正确接收的报文给出应答,对不一致报文进行标记。 (12)CAN通讯距离最大是10公里(设速率为5Kbps),或最大通信速率为1Mbps(设通信距离为40米)。 (13)CAN总线上的节点数可达110个。通信介质可在双绞线,同轴电缆,光纤中选择。 (14)报文是短帧结构,短的传送时间使其受干扰概率低,CAN有很好的效验机制,这些都保证了CAN通信的可靠性。 2 CAN总线协议内容 CAN总线的物理层是将ECU连接至总线的驱动电路。ECU的总数将受限于总线上的电气负荷。物理层定义了物理数据在总线上各节点间的传输过程,主要是连接介质、线路电气特性、数据的编码/解码、位定时和同步的实施标准。 总线竞争的原则 BOSCH CAN基本上没有对物理层进行定义,但基于CAN的ISO标准对物理层进行了定义。设计一个CAN系统时,物理层具有很大的选择余地,但必须保证CAN协议中媒体访问层非破坏性位仲裁的要求,即出现总线竞争时,具有较高优先权的报文获取总线竞争的原则,所以要求物理层必须支持CAN总线中隐性位和显性位的状态特征。在没有发送显性位时,总线处于隐性状态,空闲时,总线处于隐性状态;当有一个或多个节点发送显性位,显性位覆盖隐性位,使总线处于显性状态。 在此基础上,物理层主要取决于传输速度的要求。从物理结构上看,CAN节点的构成如图7-8所示。在CAN中,物理层从结构上可分为三层:分别是物理层信令(Physical Layer Signaling,PLS)、物理介质附件(Physical MediaAttachment,PMA)层和介质从属接口(Media Dependent:Inter-face,MDI)层。其中PLS连同数据链路层功能由CAN控制器完成,PMA层功能由CAN收发器完成,MDI层定义了电缆和连接器的特性。目前也有支持CAN的微处理器内部集成了CAN控制器和收发器电路,如MC68HC908GZl6。PMA和MDI两层有很多不同的国际或国家或行业标准,也可自行定义,比较流行的是ISOll898定义的高速CAN发送/接收器标准。 节点数量 理论上,CAN总线上的节点数几乎不受限制,可达到2000个,实际上受电气特性的限制,最多只能接100多个节点。 CAN的数据链路层 CAN的数据链路层是其核心内容,其中逻辑链路控制(Logical Link control,LLC)完成过滤、过载通知和管理恢复等功能,媒体访问控制(Medium Aeeess control,MAC)子层完成数据打包/解包、帧编码、媒体访问管理、错误检测、错误信令、应答、串并转换等功能。这些功能都是围绕信息帧传送过程展开的。 3 CAN总线的报文传输和结构 报文类型 在CAN2.0B的版本协议中有两种不同的帧格式,不同之处为标识符域的长度不同,含有ll位标识符的帧称之为标准帧,而含有29位标识符的帧称为扩展帧。如CAN1.2版本协议所描述,两个版本的标准数据帧格式和远程帧格式分别是等效的,而扩展格式是CAN2.0B协议新增加的特性。为使控制器设计相对简单,并不要求执行完全的扩展格式,对于新型控制器而言,必须不加任何限制的支持标准格式。但无论是哪种帧格式,在报文 帧类型 传输时都有以下四种不同类型的帧: (1)数据帧(Data ) 数据帧将数据从发送器传输到接收器。 (2)远程帧(Remote ) 总线单元发出远程帧,请求发送具有同一标识符的数据帧。 (3)错误帧(Error ) 任何单元检测到总线错误就发出错误帧。 (4)过载帧(Overload ) 过载帧用在相邻数据帧或远程帧之间提供附加的延时。 数据帧或远程帧与前一个帧之间都会有一个隔离域,即帧间间隔。数据帧和远程帧可以使用标准帧及扩展帧两种格式。
|