汽车CAN总线详解
发表时间:2024-07-30 17:08:26 来源:行业新闻
CAN(ControllerAreaNetwork)总线协议是由BOSCH发明的一种基于消息广播模式的串行通信总线,它起初用于实现汽车内ECU之间可靠的通信,后因其简单实用可靠等特点,而大范围的应用于工业自动化、船舶、医疗等其它领域。相比于其它网络类型,如局域网(LAN,LocalAreaNetwork)、广域网(WAN,WideAreaNetwork)和个人网(PAN,PersonalAreaNetwork)等,CAN更为适合应用于现场控制领域,因此得名。
CAN总线是一种多主控(Multi-Master)的总线系统,它不同于USB或以太网等传统总线系统是在总线控制器的协调下,实现A节点到B节点大量数据的传输,CAN网络的消息是广播式的,亦即在同一时刻网络上所有节点侦测的数据是一致的,因此更适合传输诸如控制、温度、转速等短消息。
CAN起初由BOSCH提出,后经ISO组织确认为国际标准,根据特性差异又分不同子标准。CAN国际标准只涉及到OSI(开放式通信系统参考模型)的物理层和数据链路层。上层协议是在CAN标准基础上定义的应用层,市场上有不同的应用层标准。
1983年,BOSCH开始着手开发CAN总线年,在SAE会议上,CAN总线年,Intel和Philips推出第一款CAN控制器芯片;
1991年,Bosch发布CAN2.0标准,分CAN2.0A(11位标识符)和CAN2.0B(29位标识符);
注意:ISO11898-2和ISO11898-3物理层协议不属于BOSCHCAN2.0标准。
2012年,BOSCH发布CANFD1.0标准(CANwithFlexibleData-Rate),CANFD定义了在仲裁后确使用不相同的数据帧结构,进而达到最高12Mbps数据传输速率。CANFD与CAN2.0协议兼容,可以与传统的CAN2.0设备共存于同样的网络
CAN标准分为底层标准(物理层和数据链路层)和上层标准(应用层)两大类。CAN底层标准主要是ISO11898系列的国际标准,也就是说不同厂商在CAN总线的物理层和数据链路层定义基本相同;而上层标准,涉及到例如流控制、设备寻址和大数据块传输控制等,不同应用领域或制造商会有不同的做法,没有统一的国际标准。
ISO11898-1:2015定义CAN总线的数据链路层(DLL)和电气信号标准,描述CAN总线的基本架构,定义不同CAN总线设备在数据链路层通信方式,详细说明逻辑链接控制(LLC)和介质访问控制(MAC)子层部分;
ISO11898-2:2003定义高速CAN总线(HS-CAN)物理层标准,最高数据传输速率1Mbps,应用为两线平衡式信号(CAN_H,CAN_L),HSCAN是汽车动力和工业控制网络中应用最为广泛的物理层协议;
ISO11898-3:2006定义低速CAN总线(LS-CAN,Fault-TolerantCAN)物理层标准,数据传输速率在40Kbps~125Kbps。Fault-Tolerant是指总线上一根传输信号失效时,依靠另外的单根信号也可以通信,LSCAN主要使用在于汽车车身电控单元之间通信;
ISO11898-4:2004定义CAN总线中的时间触发机制(Time-TriggeredCAN,TTCAN),定义与ISO11898-1配合的帧同步实体,实现汽车ECU之间基于时间触发的通信方式。注意,ISO11898-1是基于事件驱动(Event-Driven)的通信,它对于高负荷总线上,尤其是低优先级的消息会造成较大的延迟,而基于时间触发的ISO11898-4标准的初衷也正是为解决该问题,确保CAN总线上可靠的消息传输;
ISO11898-5:2007对ISO11898-2高速CAN总线,定义在总线闲置时的节电特性;
ISO11898-6:2013对ISO11898-2和ISO11898-5的补充,并参照ISO8802-2,定义使用可配置的帧实现选择性唤醒总线的机制;
ISO16845-1:2004定义测试符合ISO11898-1标准CAN应用的方法和条件;
ISO16845-2:2014定义包括特定功能下可以选择性唤醒总线的CAN收发器的测试实例和测试要求,也称为CAN总线的一致性测试
CAN总线底层标准与ISO/OSI模型的对应关系,如图1所示。对于媒体专用接口(MediumDependentInterface,MDI),没有统一的国际标准。CiADS-102(CiA:CANinAutomation)仅定义使用专用连接器(DB9),并对PIN定义作出一定规范。
虽然底层标准相同,不同应用领域和组织会制定不同的上层标准。有的厂商开发并推广其应用层标准,在某些领域得以广泛应用。对于汽车行业来说,几乎每家厂商都有自己的CAN上层标准。比较流行的有工业自动化领域CiA的CANopen,Rockwell的DeviceNet;嵌入式控制领域Kvaser的CANKingdom;智能设备控制Honeywell的SDS;汽车诊断ISO14229定义的UDS,和中重型汽车CAN总线示。
多主控制。在总线空闲时,所有的单元都可开始发送消息,最先访问总线的单元可获得发送权;多个单元同时开始发送时,发送高优先级ID消息的单元可获得发送权;
错误检测功能。所有节点均可检测错误,检测出错误的单元会立即通知其它所有单元;
故障限制。节点控制器能判断错误是暂时的数据错误还是持续性错误,当总线上发生持续数据错误时,控制器可将节点从总线上隔离;
理论上,CAN总线用单根信号线就可以通信,但还是配备了第二根导线,第二根导线与第一根导线信号为差分关系,可以轻松又有效抑制电磁干扰;
总线上可同时连接多个节点,可连接节点总数理论上是没有限制的,但实际可连接节点数受总线上时间延迟及电气负载的限制;未定义标准连接器,但经常用9脚DSUB
在当今汽车应用领域,车内电控单元(ElectricalControlUnit,ECU)可能多达70个,除了引擎控制单元(EngineControlUnit,ECU)外,还存在传动控制、安全气囊、ABS、巡航控制、EPS、音响系统、门窗控制和电池管理等模块,虽然某些模块是单一的子系统,但是模块之间的互连依然很重要。例如,有的子系统需要控制执行器和接收传感器反馈,CAN总线能够完全满足这些子系统数据传输的需求。汽车内子模块的总线互连架构使得软件可以更轻易地实现安全、经济和便利等新特性,相比传统汽车网络架构中模块单元直接连接更加经济。CAN总线实现汽车内互连系统由传统的点对点互连向总线式系统的进化,大幅度的降低汽车内电子系统布线所示。
背景:随着电气化和智能化,汽车上的电子单元慢慢的变多,电控单元组网需求也日渐迫切!
在VW(大众汽车)的定义(SSP269)中,根据应用场景范围将车内CAN总线分为三类:
根据数据传输速度不同CAN总线分两类:高速CAN(ISO11898-2)和低速CAN(ISO11898-3)。
高速CAN(按BOSCH说法,也叫CAN-C),数据速率在125kbps~1Mbps,应用在实时性要求高的节点,如引擎管理单元、电子传动控制、ESP和仪表盘等;低速CAN(CAN-B),数据速率在5kbps~125kbps,应用在实时性要求低的节点,主要在舒适和娱乐领域,如空调控制、座椅调节、灯光、视镜调整等,这些节点对实时性要求不高,而且分布较为分散,线缆较易受到损坏,低速CAN的传输速度即可满足规定的要求,而且单根线缆也可以工作,很好地适应了以上需求。不同速度类型的CAN总线设备不能直接连在同一路总线上,它们之间一定要通过网关隔离。
CAN总线在汽车诊断领域的应用也十分普遍,ECU直接挂载在总线上,可以很快地获取诊断所需的信息。传统的汽车诊断接口(如KWP2000)应用逐渐减少。
图2a示意了汽车内总线系统及电子设备的逻辑分布,总线系统包括CAN、LIN、FlexRay和MOST。注意,车载以太网在图中未列出,但它的应用日渐广泛。以上不一样和速度的总线,通过网关Gateway模块相互通信。
由于CAN总线仲裁的特点,即使往总线上周期性发送消息,也不能够确保节点能确定(周期)地收到消息,CAN不适合对时间很敏感的应用;
最高传输速率只有1Mbps,对于汽车无人驾驶应用的数据传输,或者视频音频传输带宽不足。为解决这方面的需求,CANFD速度有所上升,其他的还有MOST、LVDS和以太网等;
对于简单的应用,高成本的CAN总线虽然可靠性很高,但有点浪费。LIN总线相比CAN具有成本优势,更适合应用于车窗座椅空调等设备
连接在CAN总线上的设备叫做节点设备(CANNode),CAN网络的拓扑一般为线型。线束最常用为非屏蔽双绞线(UTP),线上传输为对称的电平信号(差分)。图3示为CAN总线网络示意图,节点最重要的包含Host、控制器和收发器三部分。Host常集成有CAN控制器,CAN控制器负责处理协议相关功能,以减轻Host的负担。CAN收发器将控制器连接到传输媒介。通常控制器和总线收发器通过光耦或磁耦隔离,这样即使总线上过压,损坏收发器,控制器和Host设备也能够获得保护。
高速CAN总线Mbps,支持最长距离40m。ISO11898-2规定要求在高速CAN总线的两端安装端接电阻(RL)以消除反射,而低速CAN最高速度只有125Kbps,因此ISO11898-3没有要求端接。ISO11898规定的CAN总线个节点。实际应用中要考虑到CAN总线收发器的性能,以及工作的CAN网络是高速CAN还是低速CAN。在传输距离方面,由于距离越大,信号时延也越大,为确保消息的正确采样,总线上的信号速率相应也得下降,表2列出推荐的信号速率与距离的关系。
CAN收发器包括CANH和CANL两根信号,CANH和CANL信号采用差分电平,这样做才能够取得更好的电磁兼容效果。CAN总线物理传输媒介只需要两根线。
前面的标准部分有介绍,CAN总线分高速CAN和低速CAN,收发器因之也分为高速CAN收发器(1Mbps)和低速CAN收发器(125Kbps)。低速CAN也叫FaultTolerantCAN,指的是即使总线上一根线失效,总线示例高速CAN收发器的基本电路结构。当两个晶体管都关断时,CANH和CANL上电压相同,且都为0.5*VCC;而当两个晶体管都打开时,CANH和CANL上即存在一定的压差,且压差与负载电阻值相关。ISO11898-2要求此时CANH和CANL压差在2V左右。
CAN收发器的特性包括非常低的电磁辐射和很强的抗击共模噪声的能力。另外,CAN收发器能够给大家提供高达8KV的ESD保护,在电路设计中可以在收发器附近增加共模电感以逐步降低电磁辐射(图5)。
高速CAN和低速CAN总线在物理层信号电平上定义不一样。图6和图7表示高速和低速CAN总线上信号电平与总线逻辑的对应关系。
高速CAN,定义CANH和CANL电压相同(CANH=CANL=2.5V)时为逻辑“1”,CANH和CANL电压相差2V(CANH=3.5V,CANL=1.5V)时为逻辑“0”。高速CAN收发器在共模电压范围内(-12V~12V),将CANH和CANL电压相差大于0.9V解释为显性状态(Dominant),而将CANH和CANL电压相差小于0.5V解释为为隐性状态(Recessive)。收发器内部有迟滞电路能降低干扰。
低速CAN,定义CANH和CANL电压相差5V(CANH=0V,CANL=5V)时为逻辑“1”,相差2.2V(CANH=3.6V,CANL=1.4V)时为逻辑“0”。
在CAN总线”之间显著的电压差是总线可靠通信的保证。参照上面的描述,CAN总线上两种电平状态分别为:
CAN总线的信号电平具有线)总是会掩盖隐性电平(1)。如果不同节点同时发送显性和隐性电平,总线),只有在总线上所有节点发送的都是隐性电平(1)时,总线才表现为隐性。线与特性是CAN总线仲裁的电路基础。详细仲裁过程见下文“仲裁机制”部分。
在前文有提到,业界只规定了9PinD-Sub类型的CAN总线连接器,其信号定义如图8所示。
除了上文介绍的高速CAN和低速CAN外,还有标准定义另外一种CAN物理层结构,即SingleWireCAN。单线CAN能够大大减少一根传输线,但是要求节点间有良好的共地特性(相当于第二根信号线)。单线CAN的信号抗干扰能力相对较弱,在设计中需要提高信号幅度以增加信噪比,如此又会让它自身的辐射能力增加,因此必须降低其信号传输速率以达到电磁兼容的要求。综上,单线CAN仅适合应用在低速的车身电子单元、舒适及娱乐控制领域。低速CAN总线由于信号速度不高,在一根信号线失灵的情况下,仍可工作于单线模式。
三种CAN总线列出。总线,对于端接,高速CAN端接是在总线两端,而低速CAN和单线CAN的端接都是在各节点位置。
安全敏感的应用,比如汽车动力,对通信系统的可靠性要求很高。将总线工作正常与否归结到单一节点是极其危险的,是合理的的方案是对总线接入的去中心化,亦即每个节点都有接入总线的能力。这也是CAN总线采用多主控(Multi-Master)线性拓扑结构的原因。在CAN总线上,每个节点都有往总线上发送消息的能力,而且消息的发送不必遵从任何预先设定的时序,通信是事件驱动的。只有当有新的信息传递时,CAN总线才处于忙的状态,这使得节点接入总线速度很快。CAN总线理论最高数据传输速率为1Mbps,对于异步事件反应迅速,基本上对于毫秒级的实时应用没有一点问题。
不同于别的类型的总线,CAN总线不设定节点的地址,而是通过消息的标识符(Identifier)来区别消息。CAN总线消息是广播式的,也就是说在同一时刻所有节点都检测到同样的电平信号。接受节点通过识别消息中的标识符,与该节点预设的过滤规则对比,如果满足规则就接收这条消息,发送应答,否则就忽略这条消息,关于这部分介绍见下文“条件接收”部分。这种机制虽然会增加消息帧的复杂度(增加标识符),但是节点在此情况下可以无须了解其它节点的状况,而相互间独立工作,在总线上增加节点时仅须关注消息类型,而非系统上其它节点的状况。这种以消息标识符寻址的方式,让在总线上增加节点变得更灵活。
CAN总线通信原理可简单描述为多路载波侦听+基于消息优先级的冲突检测和仲裁机制(CSMA/CD+AMP),CSMA(CarrierSenseMultipleAccess)指的所有节点必须都等到总线处于空闲状态时才能往总线上发送消息;CD+AMP(CollisionDetection+ArbitrationonMessagePriority)指的是如果多个节点往总线上发送消息时,具备最高优先级(标识符最小)的消息获得总线占有权。
CAN总线定义四种帧类型,分别为数据帧、远程帧、错误帧和过载帧。数据帧就是总线上传输用户数据的帧,其最高有效载荷是8Byte,除了有效载荷外,数据帧还包括必要的帧头帧位部分以执行CAN标准通信,比如消息标识符(Identifier)、数据长度代码、校验信息等。远程帧是用来向总线上其它节点请求数据的帧,它的帧结构与数据帧相似,只不过没有有效载荷部分;错误帧是表示通信出错的帧。数据帧和远程帧有标准格式和扩展格式两种格式。标准格式有11位的标识符,扩展格式有29位标识符。
数据帧的帧结构如图10所示,图中示例标准数据帧(Standard)和扩展数据帧(Extended)两种格式。各字段定义及长度分别为:
Identifier:标准格式11bit,扩展格式29bit包括BaseIdentifier(11bit)和ExtendedIdentifier(18bit),该区段标识数据帧的优先级,数值越小,优先级越高;
RTR:远程传输请求位,0时表示为数据帧,1表示为远程帧,也就是说RTR=1时,消息帧的DataField为空;(1bit)
IDE:标识符扩展位,0时表示为标准格式,1表示为扩展格式;(1bit)
DLC:数据长度代码,0~8表示数据长度为0~8Byte;(4bit)
CRCSequence:校验域,校验算法G(x)=x15+x14+x10+x8+x7+x4+x3+1;(15bit)
ACK:应答,确认数据是不是正常接收,所谓正常接收是指不含填充错误、格式错误、CRC错误。发送节点将此位为1,接收节点正常接收数据后将此位置为0;(1bit)
ITM:帧间空间,Intermission(ITM),又称InterframeSpace(IFS),连续3个隐性位,但它不属于数据帧。帧间空间是用于将数据帧和远程帧与前面的帧分离开来的帧。数据帧和远程帧可通过插入帧间空间将本帧与前面的任何帧(数据帧、遥控帧、错误帧、过载帧)分开。过载帧和错误帧前不能插入帧间空间。
一般地,数据是由发送单元主动向总线上发送的,但也存在接收单元主动向发送单元请求数据的情况。远程帧的作用就在于此,它是接收单元向发送单元请求发送数据的帧。远程帧与数据帧的帧结构类似,如上图X所示。远程帧与数据帧的帧结构区别有两点:
远程帧的DLC块表示请求发送单元发送的数据长度(Byte)。当总线上具有相同标识符的数据帧和远程帧同时发送时,由于数据帧的RTR位是显性的,数据帧将在仲裁中赢得总线控制权。
用于在接收和发送消息时检测出错误时,通知错误的帧。错误帧由错误标志和错误界定符构成。错误帧的帧结构如图11示。
主动错误标志(6个显性位):处于主动错误状态的单元检测出错误时输出的错误标志
被动错误标志(6个隐性位):处于被动错误状态的单元检测出错误时输出的错误标志
过载帧是用于接收单元通知发送单元它还没完成接收准备的帧。在两种情况下,节点会发送过载帧:
每个节点最多连续发送两条过载帧。过载帧由过载标志和过载界定符(8个隐性位)构成。数据帧的帧结构如图12所示。
如果多个节点同时往总线上发送消息,总线的使用权是通过消息帧标识符的逐位仲裁机制决定的,在仲裁过程中消息是不会丢失的。这里的不会丢失的意思是指仲裁完成后,获得总线控制权的消息内容没有被仲裁过程篡改,将继续在总线上发送没有传输完的消息。
在CAN总线上,标识符值越小,消息的优先级越高。标识符全零的消息,由于它将总线电平保持在显性的时间最长,因此优先级最高。
Wire-ANDBusLogic:只有节点发送的全是隐性,总线电平才表现为隐性;
ArbitrationLogic:所有发送节点在发送数据的同时,也检测总线上的电平状态。如果总线电平状态与它发送的电平状态一致,则继续发送(Next);如果发送为显性,总线电平状态为隐性,则传输发生故障(Fault);如果发送为隐性,总线电平状态为显性,则该节点退出对总线占用权的竞争(Stop);
节点A和节点C同时向总线上发送数据,在仲裁阶段,逐位对比总线上电平与自身发送的电平,在标识符的第四位(ID7),节点C检测到总线上电平与其自身发送电平不一致,它自动退出对总线的竞争,节点A则继续发送数据。
如上介绍,CAN总线C总线的仲裁都应用到线与逻辑的电路基础,不同的是I2C的仲裁只是在主机间进行,而CAN总线没有主从机的概念。另外I2C的消息本身是不分优先级的;CAN消息则是带优先级,有的消息出身高贵(标识符值越小),在仲裁中总会取胜。
为消息划分优先级比较适合于实时控制管理系统,这样做才能够确保重要的信息优先发送,相对次要的消息延迟发送,系统设计师应该根据应用的特点为不同消息确定不同的优先级(标识符),在类似DeviceNet这些规范组织的定义中,对于同样类型的消息,比如温度传感器,即使它们可能来自不同的供应商,但消息标识符是一致的。
对于车身控制CAN网络(舒适+信息娱乐),其特点是消息标识符种类多,而且消息发送没有固定频率或规律,在此类应用的CAN控制器,例如Freescale的MSCAN(MotorolaScalableControllerAreaNetwork)的设计中,控制器内部包括FIFO寄存器,它将具有相同标识符的消息按顺序保存,从而避免接收缓冲器溢出。而对于动力系统控制的CAN网络,总线上的消息特点是速度快,但是存在一定规律,此类应用的CAN控制器,例如Freescale的FlexCAN(CAN2.0B-Compliant),它包括16~64个称为“mailbox”的接收缓冲器,运行时根据特定的过滤规则,将不同标识符的消息送到各自对应的mailbox。
前面有提到消息在CAN总线上是广播式的,但并不是所有节点都会对总线上所有消息感兴趣。节点通过控制器中过滤码(FilterCode)和掩码(MaskCode),再检验总线上消息的标识符,来判断是否接收该消息(MessageFiltering)。
对于掩码,“1”表示该位与本节点相关,“0”表示该位与本节点不相关。举例如下:
节点检测消息的标识符的所有位(29位),如果标识符为00001567接收,否则舍弃。
节点检测消息的标识符的高25位,最低的4位则不care。如果标识符最高25位相同则接收,否则舍弃。
节点检测消息的标识符的高26位,最低的3位则不care。如果标识符最高26位相同则接收,否则舍弃。
应答位(ACK)用来表示节点已经收到有效的帧。任何节点如果准确无误地接收到帧,则要向总线上发送显性位,该显性位将掩盖发送节点输出的隐性位,使总线上表现为显性。如果发送节点检测应答位为隐性,那么说明没有节点收到有效帧。接收节点可能在应答位输出隐性表示它没有收到有效帧,但另外有收到有效帧的节点也可能输出显性表示它收到有效帧,这样总线上总体上表现为显性,发送节点也无从得知是否总线上所有节点都收到有效的帧。
CAN总线使用到的是非归零编码(NRZ),NRZ编码的优点是效率高,但却不易区分哪里是bit开始,哪里是bit结束。因此为确保在同步通信过程中有足够的电平跳变,规范中应用到位填充机制,即在每连续5个相同电平后插入1个反相电平,接收节点在收到消息后自动将填充位删除。在帧内除了CRC界定符、ACK域和EOF外,其余部分均应用到位填充机制。在应用到位填充的域,检测到连续6个显性位或隐性位均视为报错。检测到错误后,节点将发出主动错误标志。注意如前文述,主动错误标志为连续6个显性位,它是不符合位填充规则的,因此检测到该电平的所有节点都会报错。
位填充意味着实际传输的数据帧长度可能更长,图14示例位填充前后的数据帧的变化,紫色位是位填充增加的位,接收节点收到消息后会自动删除这些位。
完善的错误校验机制是CAN总线高可靠性的有效保证。CAN总线种在消息层面(MessageLevel),2种在比特层面(BitLevel)。如果消息出现五种错误中的任何一种,接收节点将不接收消息,并且产生错误帧通知发送节点重新发送消息,直到接收节点正确地收到消息。如果失效的节点持续不断地报错,导致总线挂死,那么在报错次数达到设定的上限时,它将被控制器从总线上移除(详见“故障限制”部分)。
消息层面的错误校验机制体现在数据帧(图10)中的CRC校验域和ACK域。CRC校验域包括传输数据的15bitChecksum值和1bit界定符。ACK域包括1bitACK位和1bit界定符。消息层面的校验还包括格式错误校验,格式错误校验会检查消息帧中必须为隐性的位,如果这些位表现为显性,那么节点将报格式错误。格式错误检查的隐性位包括SOF、EOF、ACK界定符和CRC界定符。
在比特层面,发送节点在发送消息的同时会检测总线电平,如果检测到总线的状态和它发送的状态不符,则发送节点将报错。该过程的两处例外是消息帧处于标识符仲裁阶段和消息应答阶段。
最后一种错误校验机制源于CAN总线的位填充机制。除了错误标志和EOF,如果节点检测到连续6个相同电平,它即报填充错误。主动错误标志包括连续6个显性位,总线上所有检测到主动错误标志的节点都会报错,而产生各自的错误帧,这在某种程度上预示着总线上的错误帧可能由原先的6bit到反馈叠加至12bit不等。错误帧后面紧接着8个隐性位界定符(如图10)。在总线空闲时,消息通过竞争仲裁获得总线占用权后将重新传送。
在发送消息时,发送节点会根据特定的多项式计算出由数据帧SOF位到数据域最末位的Checksum值,并将该值放在数据帧的CRC域,随着数据帧广播到总线上。接收节点在收到数据后,应用同样的多项式计算Checksum值,并与收到的Checksum值对比。如果两者一致,正常接收;如果不一致,则舍弃该消息,并发送错误帧请求发送节点重传消息。CRC校验过程如图15所示。
发送单元在ACK位中检测到隐性电平时所检测到的错误(ACK没被传送过来时所检测到的错误)。
比较输出电平和总线电平(不含填充位),当两电平不一样时所检测到的错误。
CAN总线上的每个节点控制器都会检测消息是否出错,如果节点发现消息出错,它将发送错误标志,从而打断总线上正常的数据传输。总线上其它未曾发现原始消息错误的节点,在收到错误标志后将采取必要的措施,比如舍弃当前总线上的消息。CAN节点内部有两种错误状态计数器TEC和REC。节点通过特定的规则管理这两个计数器的值,其中:
TEC增加的速度快于REC增加的速度,是因为有很大概率地是发送节点,而不是接受节点出错!基于TEC和REC数值的变化,CAN规范定义了节点的3种基本错误状态:
图17示例CAN通信过程信号波形。在1时刻,节点A向总线时刻,节点B和C收到消息,发送响应应答;在3时刻,节点B和C同时向总线上发送消息,竞争仲裁后节点C获得总线时刻继续发送未传输完毕的数据;节点A和B在5时刻响应C发送的消息;在总线时刻,B发送消息到总线时刻节点A和B响应节点B发送的消息;在8时刻,节点A向空闲总线上发送消息。
对于CAN总线一直是在使用,缺乏系统了解,搜集文章精读之后,放在这里,纳入自己的知识框架。
- 上一篇: 【48812】K讲堂 轿车车载网络LIN总线详解
- 下一篇: 汽车网络通讯电路详解知其然更要知其所以然