九游会J9这亦然报文里ACK存在的原因-九游娱乐(China)官方网站

发布日期:2024-05-24 06:11    点击次数:187

CAN总线调试经由中出现报文发送失败。好多工程师王人对此只知其一不知其二,今天咱们就以CAN报文发送失败的问题来作念一次议论。

在了解CAN报文为什么会发送失败之前咱们先望望一帧圭臬的CAN报文到底应该是若何样的。表1是一帧普遍圭臬数据帧的报文构成。

表1 圭臬数据帧报文轨范构成

图1 圭臬数据帧轨范

CAN总线是一种基于播送的通信时势,为了保证总线上的每一个普遍节点王人能正确的给与到报文,报文的发送者条件至少一个给与节点在报文发送纵容前要作出粗放,这亦然报文里ACK存在的原因。

一帧CAN报文中ACK段长度为2个位,包含粗放破绽(ACK Slot)和粗放界定符(ACK Delimter)。在粗放场里,发送器发送两个隐性位。当给与器正确地给与到有用的报文,给与器就会在粗放破绽(ACK Slot)时刻(发送ACK信号)向发送器发送一“显性”的位以示粗放。

粗放破绽:扫数给与到匹配CRC序列(CRC SEQUENCE)的站会在粗放破绽(ACK Slot)时刻用一显性的位写入发送器的隐性位来作出修起。粗放界定符:ACK界定符是ACK场的第二个位,而况是一个必须为隐性的位。因此,粗放破绽(ACK Slot)被两个隐性的位所包围,也便是CRC界定符(CRC Delimter)和ACK界定符(ACK Delimter)。

图2 普遍ACK段报文

而若是总线上莫得ACK粗放(即粗放破绽为隐性),发送器就会发送一个诞妄标志,而况发送诞妄计数器值加8,节点就会对报文进行自动重发,若自动重发仍是收不到ACK,则在发送诞妄计数器计数满128后(即出现16帧诞妄帧),由诞妄主动转为诞妄被迫情状,如图3所示。

那导致ACK段出错的原因有哪些呢?底下小编追思了一些。

总线上惟有一个有用节点:发送报文的节点在发送出一帧报文后会检测总线上粗放破绽的情状,若是检测到粗放破绽为隐性位,则示意该帧报文莫得取得ACK,发送失败,需要重发,而由于发送诞妄计数器会在发送失败后累加,直到该节点关闭。是以,当总线上惟有一个有用节点时,这个节点是发不出去数据的,因为它所发出的数据帧中的ACK Slot莫得另外一个节点来填充,将持久是隐性位,这个节点会一直重发数据直到发送到手或发送被取消。波特率不匹配粗略节点莫得运行化,导致莫得ACK;总线线缆短路,断路,接反;高速CAN总线上接的节点不是高速CAN,而是容错低速CAN,导致不匹配。

图3 粗放界定符诞妄帧

图4 莫得ACK的报文

当你在调试CAN总线时出现节点发送报文失败的情况时,一定要检讨是不是以上几点简短导致你的总线上ACK异常。而借助稳健的仪器,不错在查找CAN总线诞妄时一本万利。图4即领受致远电子的CANScope来对诞妄帧进行标志,同期找到诞妄帧对应的波形来查找出诞妄情况。CANScope还不错对CAN总线物理层、数据链路层、期骗层作念一系列的测试,为CAN工程师处置测试珍重。

图5 CANScope测试技俩