CAN总线协议入门目录•CAN总线的特点•CAN总线拓扑图及其模型•CAN总线分层结构•物理特性•CAN总线报文•仲裁机制•错误类型及处理机制•总结CAN总线的特点•CAN是到目前为止唯一有国际标准的现场总线。•CAN为多主方式工作,网络上任一节点均可在任意时刻主动地向网络上其他节点发送信息,而不分主从。•在报文标识符上,CAN上的节点分成不同的优先级,可满足不同的实时要求,优先级高的数据最多可在134μs内得到传输。•CAN采用非破坏总线仲裁技术。CAN总线的特点•CAN节点只需通过对报文的标识符滤波即可实现点对点、一点对多点及全局广播几种方式传送接收数据。•CAN的直接通讯距离最远可达10km;通信速率最高可达1Mbps。•CAN上的节点数主要取决于总线驱动电路,目前可达110个。•报文采用短帧结构,传输时间短,受干扰概率低,数据出错率极低。CAN总线的特点•CAN的每帧信息都有CRC校验及其他检错措施,具有极好的检错效果。•CAN的通信介质可为双绞线、同轴电缆或光纤,选择灵活。•CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响。•CAN总线具有较高的性能价格比。CAN总线拓扑图发动机网关动力总成灯光车窗及门锁仪表板空调刹车系统CAN节点模型CAN整车模型CAN整车模型CAN总线分层结构•CAN覆盖了ISO规定的OSI基本参照模型中的传输层、数据链路层及物理层。CAN总线分层结构规定了通讯时使用的电缆、连接器等的媒体、电气信号规格等,以实现设备间的信号传送1层:物理层将物理层收到的信号组成有意义的数据,提供传输错误控制等数据传输控制流程2层:数据链路层硬件控制进行数据传送的路由选择或中继3层:网络层控制数据传输的顺序、传送错误的恢复等,保证通信的品质4层:传输层为建立会话式的通讯、控制数据正确地接收和发送5层:会话层进行数据表现形式的转换6层:表示层由实际应用程序提供可利用的服务7层:应用层软件控制各层定义的主要项目ISO/OSI基本参照模型CAN总线分层结构•数据链路层分为MAC子层和LLC子层,MAC子层是CAN协议的核心部分。数据链路层的功能是将物理层收到的信号组织成有意义的消息,并提供传送错误控制等传输控制的流程。具体地说,就是消息的帧化、仲裁、应答、错误的检测或报告。数据链路层的功能通常在CAN控制器的硬件中执行。CAN总线分层结构•物理层定义了信号实际的发送方式、位时序、位的编码方式及同步的步骤。但具体地说,信号电平、通信速度、采样点、驱动器和总线的电气特性、连接器的形态等均未定义。这些必须由用户根据系统需求自行确定。•传输层定义的是CAN总线的高层协议,具体由软件实现。CAN总线物理特性•CAN总线的电平信号•速率与传输距离的关系CAN_HCAN_LVdiffVdiff隐性显性隐性3,5V2,5V1,5VV=2VDiffDOMV=0VDiffRECCAN总线电平信号速率与传输距离1000067003300130062053027013040最大距离/m51020501001252505001000位速率/kbpsCAN总线上任意两个节点之间的最大传输距离与其位速率相关。注:这里的最大通信距离是指同一条总线上两个节点之间的距离。CAN总线报文•数据帧:将数据从发送器传输到接收器。•远程帧:请求发送具有同一标识符的数据。•错误帧:任何单元检测到总线错误就发出错误帧。•过载帧:用在相邻数据帧或远程帧之间提供附加的延时。注:数据帧和远程帧可以使用标准帧及扩展帧2种格式。0111001001(ManchesterCoding)CANisNRZwhichhasEMCadvantagescomparedwithMCCAN采用“不归零”码曼彻斯特码CAN报文编码不归零码•连续5个相同极性的位就会插入一个填充位CAN报文编码-位填充140-6415117311IdentifierFieldDataFieldCRCField1ACKfieldInter-framespaceInter-framespaceDLCControlField12•标准数据帧的仲裁域(ArbitrationField)由11位标识符(Identifier)组成•控制域(ControlField)•数据域(DataField)•CRC域(CRCField)•应答域(ACKField)•帧起始(StartofFrame),帧结尾(EndofFrame)100/1CAN报文-帧结构140-6415117311IdentifierFieldDataFieldCRCField1ACKfieldInter-framespaceInter-framespaceDLCControlField12•帧起始(SoF):标志数据帧和远程帧的起始,仅由1位显性位组成。•帧结尾(EoF):标准数据帧和远程帧的结束,由7位隐性位组成。CAN帧结构-帧起始&帧结尾140-6415117311IdentifierFieldDataFieldCRCField1ACKfieldInter-framespaceInter-framespaceDLCControlField12仲裁域(ArbitrationField)•11位标识符或者29位标识符,上图表示11位标识符——实现仲裁功能——设置冲突发生时的优先级•远程发送请求位RTR(RemoteTranmissionRequestBit),RTR在数据帧必须为显性,而在远程帧必须为隐形。•CAN控制器的过滤功能可以在这里实现。100/1CAN帧结构-仲裁域140-6415117311IdentifierFieldDataFieldCRCField1ACKfieldInter-framespaceInter-framespaceDLCControlField12控制域(ControlField)(标准格式和扩展格式)•主要功能:数据长度代码(DLC),指示数据帧的字节数目•DLC可以设置0到8的数字表示数据字节数(超过8的数字则认为是8,这种情况并不视为出错)。•两位保留位r1和r0,用于扩展格式帧。保留位必须全部以显性电平发送,但接收方可以接收显性、隐性及其任意组合的电平。100/1CAN帧结构-控制域140-6415117311IdentifierFieldDataFieldCRCField1ACKfieldInter-framespaceInter-framespaceDLCControlField12数据域(DataField)(标准格式和扩展格式)•数据域可以为0~8个字节,首先发送MSB(最高位)•一般情况下都是8个字节•每个字节可以存储任意的数•有一些CAN控制器将ID过滤扩展到该域100/1CAN帧结构-数据域140-6415117311IdentifierFieldDataFieldCRCField1ACKfieldInter-framespaceInter-framespaceDLCControlField12循环冗余码(CRC)域(标准格式和扩展格式)•对帧起始、仲裁域、控制域、数据域上的位进行校验•CRC循环冗余码最适合于短帧报文•CRC界定符为1位隐性位•CRC检验仅仅是CAN通讯的一种错误检测100/1CAN帧结构-CRC域140-6415117311IdentifierFieldDataFieldCRCField1ACKfieldInter-framespaceInter-framespaceDLCControlField12应答域(ACKField)(标准格式和扩展格式)•接收确认机制,保证至少一个接收器正确接收到数据•发送方发送1位隐性位•任何接收方接收到数据,则向发送方发送1位显性位以示应答•应答界定符是应答域的第2个位,并且必须是1个隐性位100/1CAN帧结构-应答域CAN帧结构-标准帧&扩展帧•远程帧并无数据域,其数据长度代码表示的是所请求数据帧的数据长度代码CAN报文-远程帧•错误帧用于在接收和发送消息检测到错误时向网络通知错误,该帧由错误标志和错误界定符构成•错误标志包括主动错误标志和被动错误标志两种——主动错误标志:6位显性位——被动错误标志:6位隐性位•错误界定符由8位隐性位构成CAN报文-错误帧•过载帧用于接收方通知发送方尚未准备好接收数据,过载帧由过载标志和过载界定符构成•过载标志由6位显性位构成•过载界定符由8位隐性位构成CAN报文-过载帧仲裁机制仲裁机制-结论•显性位具有“优先”意味,只要有一个单元输出显性电平,总线上即为显性电平。•隐性位具有“包容”意味,只有所有单元都输出隐性电平,总线上才为隐性电平。•显性电平比隐性电平更有“权”。•标识符越小,优先级越高。错误类型及处理机制共有5种错误类型,多种错误可能同时发生。•位错误(BitError)•填充错误(StuffError)•CRC错误(CRCError)•格式错误(FormError)•应答错误(AcknowledgmentError)位错误•单元在发送位的同时也对总线进行监视。如果所发送的位值与所监视的位值不相符合,则在此位时间里检测到一个位错误。填充错误•在应当使用位填充法进行编码的报文域中,出现了第6个连续相同的位电平时,将检测到一个填充错误。CRC错误•CRC序列包括了发送器计算的CRC结果。接收器计算CRC的方法与发送器相同。如果计算结果与接收到CRC序列的结果不相符,则检测到一个CRC错误。格式错误•如果一个固定格式的位域含有1个或多个非法位,则检测到一个格式错误。•注意:对于接收器,帧末尾最后一位期间的显性位不被当作帧错误。应答错误•只要在应答间隙期间所监视的位不为显性,发送器就会检测到一个应答错误。错误处理机制•每个总线单元都使用2种计数来进行故障界定:——发送错误计数器——接收错误计数器•这些计数器按照检测到的错误类型分别进行加1或加8操作。错误处理机制•按照发送计数器、接收计数器的计数值,总线单元的状态分为以下3种:——主动错误——被动错误——总线关闭•处于不同状态的总线单元,其计数器加减的法则不同。错误处理机制•错误状态与计数器的关系256~——总线关闭状态128~255或128~255被动错误状态0~127且0~127主动错误状态接收错误计数值(REC)发送错误计数值(TEC)单元错误状态错误处理机制错误处理机制•主动错误是可以正常参与总线通信的状态,并在检测到错误时发出“主动错误”标志。•检测到主动错误的计数器加8。错误处理机制•被动错误是易引起错误的状态。•被动错误单元虽能参与总线通信,但为不妨碍其他单元通信,接收时不能积极地发送错误通知。•被动错误单元即使检测到错误,而其他处于主动错误的单元如果没发现错误,整个总线也被认为是没有错误的。•被动错误单元检测出错误时,输出被动错误标志。•被动错误状态单元在发送结束后不能马上再次开始发送。在开始下次发送前,在间隔帧期间内必须插入“延迟传送”(8位隐性位)总结•CAN总线是车用总线系统中应用最广泛的现场总线。•学习CAN总线的重点是了解它的报文结构,以及其物理特性。•CAN总线的仲裁机制是一种非破坏性的仲裁机制,不会出现网络崩溃的情况。•了解CAN总线的错误处理机制,有便与CAN总线系统故障的诊断。