2-1第二章控制器局域网(CAN)CAN总线在BOSCH公司推出后,由于其可靠性高、性能价格比高、适应性好等优点,被广泛应用到车辆控制、工业控制、移动机械、交通控制、机器人、智能建筑、医疗系统以及嵌入式网络等领域。CAN节点的数量从二十世纪九十年代中期开始直线上升。以往较少使用CAN的北美和亚洲大汽车生产商也转向使用CAN构成汽车上的网络系统,使CAN节点数量增加的趋势更加强劲。随着市场的需求的增加,各大电子元器件厂商也不断推出新型的CAN产品。很多高档微控制器(单片机)也都支持CAN控制器接口。第一节CAN的基本知识一、控制器局域网CAN(ControllerAreaNetwork)控制器局域网(CAN)是一个支持分布式实时控制的串行通信网络,主要用于嵌入式控制器的通信系统及智能装置的开放通信系统。二十世纪八十年代,由于电子系统在汽车上的应用不断普及,车上控制单元(ECU)不断增加,BOSCH公司提出了最初用于汽车电子装置互连的控制器局域网CAN串行通信总线系统。之后,CAN被汽车行业和控制领域广泛应用,它已经成为ISO和SAE标准。CAN有CAN1.0、CAN1.2、CAN2.0A和CAN2.0B等版本。CAN2.0A以及以下版本使用标准格式信息帧(11位标识符),CAN2.0B使用扩展格式(29位标识符)。CAN2.0A及以下的版本接收到扩展格式信息时认为出现错误。CAN2.0B又分为“被动”CAN2.0B(CAN2.0BPositive)和“主动”CAN2.0B(CAN2.0BActive);“被动”CAN2.0B能够处理标准格式信息,接收时忽略扩展格式的信息帧,但并不认为是错误;“主动”CAN2.0B能够接收发送标准格式信息和扩展格式信息。CAN系统中,协议功能多数由硬件完成,这个硬件称为CAN控制器(CANController)。根据功能,CAN控制器又被2-2分为“全CAN控制器(FullCANController)”和“基本CAN控制器(BasicCANController)”。“基本CAN控制器”实现CAN信息传送控制的最基本功能,一般只具有一个发送寄存器和一个或两个接收寄存器,只能按照接收寄存器存放的标识符进行接收过滤;适合于在低速系统或信息类型较少的系统中应用。“全CAN控制器”实现完整的通信过程控制和接收过滤功能。使用“全CAN控制器”系统的速度、总线负载和信息类型都可以大大增加。CAN的应用领域包括车辆系统、交通控制系统、移动机械、工业仪器仪表、建筑自动化系统以及嵌入式网络等。现在欧洲几乎所有的轿车都使用了基于CAN的系统;欧洲以外的大汽车厂家也广泛使用CAN,其中包括通用公司和福特公司。在CAN出现后有很多控制总线或局域网以CAN为基础或为其底层协议。SAE按CAN不同的通信速率把它分为三个级别:高速CAN,主要用于车上动力传动系控制系统和底盘的控制系统;中速CAN,主要用于车身系统;低速CAN,主要用于车上媒体系统控制(并非用于媒体信息传送)及仪表板。现在很多汽车产品供货商都提供支持CAN的相关产品,包括ECU(ElectronicControlUnits)、微控制器(Micro-controller)、接口元器件都有支持CAN协议的产品,为CAN的广泛应用提供了坚实的基础。但随着车上网络系统应用范围不断扩大和应用层次的深入,也发现了CAN的一些局限性。二、CAN的基本特点CAN总线有如下特点:1)高速串行数据接口功能。CAN支持从几千到一兆bit·s-1的数据传输速率。2)使用廉价物理介质,CAN可以使用屏蔽或非屏蔽的双绞线、同轴电缆以及光纤作为网线。3)数据帧短,短数据帧有利于减小延时,提高实时性;但降低了有效数据传2-3输率。4)反应速度快,发送时不需等待令牌,对请求反应迅速。5)多站同时发送,优先数据获取总线。6)错误检测和校正能力强,保证系统的可靠性。7)无破坏基于优先权的仲裁。8)通过接受滤波的方式实现多地址帧传送。9)具有远程数据请求功能。10)具有全系统数据兼容性。11)具有丢失仲裁或出错的帧自动重发功能。12)能判别暂时错误和永久性错误节点,具有故障节点自动脱离功能。13)基于事件触发的发送方式,信息传送延时离散度高,有出现长延时的可能。三、CAN的一些基本概念CAN定义了ISO/OSI网络开放系统模型的最低两层,即数据链路层和物理层,主要是数据链路层。在不同的CAN版本中对分层的定义有一些区别。CAN1.2的分层结构如图2-1(a),数据链路层又分为传输层(TL,TransferLayer)和目标层(OL,ObjectLayer)。目标层完成下列功能:1)获取由应用层传来的发送数据。2)从传输层寻找要使用的数据。3)提供与应用层相关的硬件接口。CAN2.0的分层结构如图2-1(b),是按ISO/OSI模型对CAN结构的描述。数据链路层又分为逻辑链路控制(LLC,LogicalLinkControl)和媒体访问控制(MAC,MediumAccessControl)两个子层。LLC层完成下列功能:2-4应用层目标层信息滤波信息与状态处理传输层故障限制错误检测和信令信息检验应答仲裁格式化信息传输速率与定时物理层信号电平与位编码传输媒介图2-1(a)CAN1.2分层结构数据链路层逻辑链路层(LLC):接受过滤、超载通告、恢复管理。媒体访问层(MAC):数据打包/解包、帧编码(填充与除去填充码)、媒体访问管理、错误检测、错误信令、接收应答、串并转换。物理层位编码/解码、位定时、同步。输出驱动器/输入接收器特性。监控功能故障限制总线故障管理图2-1(b)CAN2.0分层结构2-51)为数据发送以及远程数据请求传送服务。2)判定是否接受接收到的信息。3)提供恢复管理和超载处理。CAN2.0的MAC层(与CAN1.2TL层对应)是CAN的核心,主要定义了传输协议,包括信息帧格式、仲裁方式、应答信号、错误检测、错误信令和故障限制等。MAC层的约定是固定的。LLC层(对应CAN1.2OL层)的设计有很大的自由度。物理层实现节点间的物理信号传送,主要定义网络的电器特性。CAN网络可以采用多种不同的物理层协议。BoschCAN几乎没有对物理层定义。同样是基于CAN的网络,不同的网络物理层可能有很大差别,但同一网络上的所有节点物理层必须是相同的。物理层的协议主要根据要求的数据传输率、成本和可靠性决定。下面主要说明CAN媒体访问控制层(传输层)有关的一些概念和特征:1)信息:CAN总线上的信息以一定的格式发送,当总线空闲时,任何一个网上节点都可开始发送信息。2)信息的路由:CAN网络中,节点不使用任何站点地址信息,由接收节点根据信息的特征判断是否接收这帧信息。所以,CAN网络有很多基于这个传输方式的特点。3)标识符:要传送的信息有特征标识符(Identifier,是数据帧的一个域),它给出的不是目标节点地址,而是这个信息(数据帧)的特征。信息以广播方式向网上发送,所有节点可以接收。节点接收到一帧信息后,通过标识域判定是否接受这帧信息的数据。4)数据一致性:由于通过标识域识别数据,所以网络上同时可以有任意多个节点接收应用传送的数据。配合错误处理和再同步功能,这也保证了系统数2-6据的一致性。5)信息传输率:不同的CAN系统可以有不同的数据传输率,同一网络上的节点传输速率必须是兼容的。6)优先级:由发送数据的标识域判定数据占用总线的优先权级别。启动发送后,先发送标识符,由标识符决定信息优先权,标识符小优先权高(参照9和15)。7)远程数据请求:一个节点通过想网络上发送一个远程帧请求需要的数据;能提供数据的节点接收到远程帧后发送远程帧请求的数据,返回的数据帧与远程帧拥有相同的标识域。8)仲裁:当总线空闲时任何节点可以发送信息,出现竞争时,具有最高优先权的信息获得总线的使用权。9)仲裁过程:发送时,节点不断监听总线状态,判别是否与发送的位一致,如果一致,继续发送;否则(发送“隐性”位,总线为“显性”)丢失仲裁,从下一位开始停止发送。10)错误检测与可靠性:为了保证可靠性,CAN采用了发送/监听的位错误检测、帧数据的CRC校验、位填充技术(每5位相同极性的连续位,插入一个补位)、帧格式检验等故障检测方法。这些措施使CAN具有识别全局错误、发送端的局部错误、一帧信息中5个以内的随机错误、一帧信息中15个以内的突发性错误,以及一帧中任何个奇数错误的能力,使CAN错误漏报率小于4.7·10-11。11)错误信令与恢复时间:当节点检测出错误时,错误信息被标记并向网上发送,发送过程自动中止并重发。如果没有新的错误,从检出错误到开始重发的最大延时为29个位时段。12)故障界定(Confinement):CAN节点能区分瞬时扰动引发的故障与永久2-7性故障。坏节点将被关闭。13)CAN网络节点数量:理论上CAN网络上的节点没有数量限制,实际应用中受限于总线上的信号传输延时和电气负载能力。14)同步:CAN节点间采用单串行线连接,数据和同步信号都由这个通道承担。信息发送时有起始同步信号,传输过程中接收节点进行再同步。15)总线状态:总线有“显性”和“隐性”两个状态,总线上有一个或多个节点发送“显性”位时总线处于“显性”状态。例如采用线与逻辑,“显性”状态为逻辑“0”电平,“隐性”状态为逻辑“1”电平。但CAN协议并没有具体定义这两种状态的实现规范。16)应答:所有接收节点对正确接收的信息给出应答,对不一致的信息进行标记。17)休眠态与唤醒:为了降低功耗,CAN设备可以被置于休眠状态,这时它没有任何内部活动并与总线驱动断开。休眠态的设备可以被内部或总线事件唤醒。一旦被唤醒,内部功能启动,传输层要直到与总线同步(检测到11个连续的隐性位)后才参与总线活动。18)发送端与接收端:当一个节点启动一个信息的发送过程,它称为发送端,这个状态直到总线空闲或这个节点丧失仲裁为止;当一个节点不是发送端,而且总线不是空闲状态,则为接收端。19)信息有效性:对于发送端,如果直到发送完一帧数据的终止域都没有出错,这帧数据是有效的;对于接收端,在一帧数据最后一位之前没有错误,则认为这帧数据有效。20)位流编码:一个帧中,起始域、仲裁域、控制域、数据域和CRC域的二进制位流通过位填充方式编码,每当发送端检测到连续的5个相同位时自动插2-8入一个补位。而一帧中其它的域不使用填充位。故障帧和超载帧也不使用填充位。二进制位采用非归零(NRZ)编码,所以位电平不是“显性”就是“隐性”。2-9第二节CAN总线物理层一、CAN物理层特点物理层定义了物理数据在总线上各节点间的传输过程,主要是连接介质、线路电气特性、数据传输的编码/解码、定时以及同步的实施标准。BoschCAN基本没有对物理层进行定义,但基于CAN的ISO标准对物理层进行了定义。设计一个CAN网络时,物理层有很大的选择余地,但必须保证CAN协议中媒体访问层非破坏性位仲裁的要求,即,出现竞争时有高优先权标识符的数据获取仲裁的原则;所以要求物理层必须支持CAN中隐性位和显性位的状态特征。在没有节点发显性位时总线处于隐性状态,总线空闲时处于隐性状态,在有一个或几个节点发送显性位时,则覆盖隐性状态,使总线处于显性状态。在这个基础上,物理层主要取决于传输速率的要求。从物理结构上看,一个CAN节点的构成如图2-2。在CAN网络中物理层从功能上又可以分为三层,如图2-3所示。节点微控制器CAN-LCAN控制器CAN发送/接收器控制线地址线数据线CAN-H图2-2CAN总线节点构成TXRXVref2-10CAN物理层中,PLS(PhysicalSignaling)子层的功能主要由CAN控制器芯片完成,PMA(PhysicalMediumAttachment)子层的功能主要由CAN发送器/接收器电路完成,MDI(MediumDependentInterface)子层主要定义了电缆和连接器的特性。目前,很多支持CAN的微控制器内部嵌入了CAN控制器和发送/接收电路。PMA和MDI两层有很