CAN总线一向以实时性强、传输间隔远、抗干扰能力强、数据确保抵达等特色而广泛应用于高可靠性的场合。但常常在调查CAN通讯波形时,咱们会发现差分电平在ACK段忽然增高,这是什么原因导致的呢?这儿结合测验实例对ACK电平偏高的原因做简略剖析。
一、ACK简介
ACK的效果:承认一帧报文是否正常接纳。
以规范数椐帧为例,从结构上看分红7段,分别为开始段、裁定段、操控段、数椐段、CRC校验段、ACK应对段、帧完毕段,如图1所示:
图1 规范数椐帧结构
ACK段长度为2个位,包括应对空隙(ACK SLOT)和应对界定符(ACK DELIMITER)。在应对场里,发送站发送两个“隐性”位。当接纳器正确地接纳到有用的报文,接纳器就会在应对空隙(ACK SLOT)期间(发送ACK信号)向发送器发送一“显性”的位以示应对。如图2 (CANScope测验的ACK段波形图)所示:
图2 ACK应对位结构
应对空隙:一切接纳到匹配CRC序列(CRC SEQUENCE)的节点会在应对空隙(ACK SLOT)期间用一“显性”的位写入发送器的“隐性”位来作出答复,因为CAN总线线与的原理,只需总线上有一个节点正确接纳到数据,则ACK SLOT就会被填入显性电平。
ACK界定符:ACK界定符是ACK场的第二个位,并且是一个有必要为“隐性”的位。因而,应对空隙(ACK SLOT)被两个“隐性”的位所围住,也便是CRC界定符(CRC DELIMITER)和ACK界定符(ACK DELIMITER)。
当一个接纳节点接纳的帧开始到CRC段之间的内容没发生过错时,它将在ACK段发送一个显性电平。 如图3所示:
图3 ACK应对进程剖析
二、CAN总线ACK电平偏高原因剖析
以运用ZLG致远电子CANScope测验某电车CAN网络为例,20多个CAN节点采样手牵手方法组网,线两头各接120欧电阻,通讯能够正常,但差分信号波形应对位电平偏高较多,如图4所示,从CANScope的波形图中能够清楚的看到ACK电平突增。
图4 CAN数椐帧波形剖析
CAN总线通讯存在反常,ACK应对有问题?——NO
剖析如下:
首要,咱们看一款CAN收发器的典型内部结构图,CANH、CANL衔接总线。
图5 CAN收发器的典型内部结构图
总线显性时(逻辑为0),收发器内部Q1、Q2导通,CANH、CANL之间发生压差;隐性时(逻辑为1),Q1、Q2截止,CANH、CANL处于无源状况,压差为0。
依照规范,在总线输出为显性时,CANH=3.5V,CANL=1.5V,差分分电平:CANH-CANL=2V,总线网络电阻为60欧,流经终端电阻的电流约为33mA(2V/60欧);
但是,CAN收发器在输出显性时,CANH电平并不是规范的3.5V,而是5V(VCC)经过一个二极管降压得到的,二极管的压降由负载电流决议。图6所示的VDH为CANH对应的二极管压降,VDL为CANL关于的二极管压降,流过的电流越大,二极管的压降就越大。可知:
CANH的电压=5V-VDH CANL的电压=0V+VDL
图6 CAN收发器等效结构
在CAN总线网络中,当一帧报文被各个节点接纳时,在ACK阶段,多个CAN节点一起呼应(都发显性),流过终端电阻的电流被各个CAN节点均分,那么均匀到每个节点的电流就减小了,如下图所示,VDH、VDL的压降也减小,相应CANH-CANL的差分电压就增大了,即ACK应对电平偏高。
图7 CAN网络等效结构
三、ACK的含义
当CAN总线上只需一个节点可收发数据时,总线上因无接纳节点在ACK SLOT时间内 发送“显性”位填充,而始终保持隐性,发送者会检测到这个隐性位而知道发送失利,此条报文需求重发。因而这个节点会一向重发数据直到发送成功或发送被撤销。
当总线上有多个CAN节点组网通讯时,因为总线电平线与的原理,只需总线上有一个节点正确接纳到数据,则ACK SLOT就会被填入显性电平(此刻以为数据帧发送成功), 那么,接纳过错的节点如何来奉告发送者此次发送不成功呢?这就要用到CAN的过错帧,当一个接纳节点收到过错数据时,它当即播送发送一个过错帧,其它的节点和发送者也都会收到这个过错帧而丢掉此次报文,发送节点从头发送,这才是ACK的含义。