AD2428W手册解读之系统调试 中

简介: AD2428W手册解读之系统调试 中

AD2428W手册解读之系统调试 中


3、设备发现后的线路诊断

全线诊断只在发现过程中执行。但是,发现后的某些中断(如果启用)可能表明运行过程中的线路故障。重新发现可以检测任何可能的故障的原因和位置。

在发现之后,下列任何中断类型(A2B_INTTYPE)表明有线路故障:

1、0x0A (10: PWRERR)

2、0x0F (15: PWRERR)

3、0x2A (42: PWRERR)

4、0x80 (128: 中断消息错误)

当从节点连续32帧检测到SRF 丢失错误 (SRFERR)时,该节点假定下行总线被丢弃,并设置其最后一个节点位(A2B_NODE.LAST = 1)成为系统中的最后一个节点。在最后一个节点(A2B_NODE.LAST = 1)中可以检测到发现后线路故障导致的总线丢弃条件。将SRFERR锁存。

如果节点之间的槽位配置不匹配,就会产生过多的误码积累。当A2B_BP短线到有噪声的VBAT或BN短线到有噪声的GND时,就会发生这种情况。巴士可以在这些条件下运行,但更容易受到损伤(例如电磁干扰)。

使用A2B_BECNT寄存器按如下方式计数累积的错误:

1、设置A2B_BECCTL寄存器为0xE4 (256 CRC错误后中断)。可接受的音频噪声和鲁棒

性是主观的,需要在车辆试验中确定。请根据实际情况调整阈值。

2、定期向A2B_BECNT寄存器写入0(每秒一次)以重置错误计数器。可接受的音频噪声和

鲁棒性是主观的,需要在车辆试验中确定,相应地调整A2B_BECNT寄存器的时间。

3、误码率计数器溢出(0x04: BECOVF)中断表示总线问题。

4、软件诊断流程

使用以下软件流程和诊断软件流程图进行节点发现和诊断。

1、为诊断模式0设置A2B_SWCTL寄存器为0x00。

2、在主节点上使能电源错误中断和A2B_INTPND2.DSCDONE中断,设置A2B_SWCTL

寄存器为0x01以启用电源切换。

3、A2B_INTPND2.DSCDONE(节点发现成功的设备)将A2B_INTTYPE设置为0x18,

如果触发中断则执行第七步操作。

4、在主节点如果A2B_INTTYPE是0x29或0x2A,将A2B_SWCTL.ENSW位设置为0,并

等待50~100ms,在本地化隐藏故障部分(步骤8)将 A2B_SWCTL.DIAGMODE位设置为1重

新发现本地隐藏的节点。

附加信息:如果A2B_INTTYPE寄存器是任何其他A2B_INTPND0.PWRERR类型,如果

发现超时,请继续步骤5。

5、如果A2B_INTTYPE寄存器值为0x0B、0x0C或0x0D,可以读取A2B_INTSRC寄存器

来确定位置。如果操作超时,则通过消除过程,将最有可能逆转到被发现节点的总线连接。

执行步骤6。

6、如果A2B_INTTYPE寄存器= 0x09或0x0A,在A2B_INTSRC和A2B_INTTYPE寄存器

值与主机通信后,通过在主节点设置A2B_SWCTL寄存器值为0x00来禁用整个总线。

附加信息:一旦检测到任何其他局部故障,停止发现过程。通过软件定时重试发现进程,确认故障是否清除。收发信机内没有自动重试机制。

7、如果这不是最后一个节点,将A2B_SWCTLMODE位设置为2。该设置忽略由于下游电流吸取造成的VIN波动,并防止发生在下游节点上的错误定位错误。对下游节点寄存器设置编程,在下一个节点上重复步骤1。

附加信息:继续这个循环,直到发现所有节点。发现所有节点后,将所有节点的A2B_SWCTL.MODE位设置为0,同时保持A2B_SWCTL.ENSW位为1。完整的A2B总线发现 过程现在已经完成。

软件诊断流程

8、如果发现从节点超时,可以通过设置A2B_CONTROL.ENDDSC停止发现进程.

5、定位隐蔽故障

本节介绍确定VBAT或GND可能隐藏故障的位置的过程。

虽然总线不应该在存在此类故障的情况下长期运行,但在主节点禁用总线之前,在短期基础上运行以下过程,以确定隐藏故障的位置。这个过程在“隐藏故障定位”图中显示。

1、从诊断软件流程中的步骤4开始,在Master中的A2B_SWCTL.ENSW位= 0,设置变

量来跟踪当前节点的位置和最后一个已知的好节点。还要设置一个变量,例如PriorFault =0。这将跟踪在以前的节点发现中是否报告了故障。等待至少100毫秒以使总线的电气稳定状态稳定下来后,进行步骤2。

2、在当前节点中,设置A2B_INTMSK0寄存器为0x10和A2B_SWCTL寄存器为0x09。在

诊断模式下设置A2B_SWCTL.ENSW位将启动重新发现过程。定义两个变量,用于跟踪在当前发现尝试中是否完成了错误和/或发现;如“Disc”和“Fault”。在此步骤中清除两个变量。额外信息:等待从这个操作中断,允许100毫秒的超时。此超时为总线诊断提供了足够的时间,并可能为完成完整的发现提供了足够的时间。当存在故障时,当A2B_SWCTL.ENSW = 1时,这个过程可能需要比平常更长的时间。

3、如果在超时之前没有收到中断,则故障位于当前节点的下游。“GoodNode”设置为当前节点。执行步骤9。 4、如果A2B_INTTYPE寄存器值为0x29或0x2A,那么在当前节点的下游发生了一个错误。这意味着检测到故障,因此设置fault = 1。如果DISC = 0,返回步骤3,超时100毫秒,等待发现是否完成。如果DISC = 1,并且之前报告的发现过程已经完成(A2B_INTTYPE寄存器值为 0x18),则继续步骤6。

5、如果A2B_INTTYPE寄存器值为0x18,则下游节点发现成功,通信已经建立。在诊断

模式下,即使检测到A2B_INTTYPE = 0x29或0x2A的故障,也可能发生这种情况。当物理故 障只存在于两个节点之间的一条线路上时,就会发生这些故障。执行步骤6。

6、检查其他挂起中断的A2B_INTSTAT寄存器的值。如果A2B_INTSTAT寄存器非零,则

故障和发现完成都比中断服务例程响应发生得更快。在这种情况下,0x18 DSCDONE中断的优先级更高。设置DISC = 1,返回步骤3。如果A2B_INTSTAT寄存器= 0,则不再有挂起的中断。执行步骤7。

7、为了达到这一步,发现必须成功完成。如果还检测到故障,则fault = 1,并且有必要

继续总线发现以定位故障。设置GoodNode = Node, PriorFault = Fault, Node = n,增加n为发现下一个节点做准备,返回步骤2。Fault = 0(未检测到故障),执行步骤8。

8、要达到这一步,发现必须已经完成,并且没有检测到故障。出现这种情况有两个原

因。要么当前节点距离故障上游太远,无法检测到故障,要么节点已经位于故障下游,故障已经不存在。如果PriorFault = 1,则是后一种情况,因此继续步骤9。如果PriorFault = 0,则故障尚未检测到。在这种情况下,继续发现总线以定位故障。设置GoodNode = Node,PriorFault = Fault, Node = n,增加n为发现下一个节点做准备,返回步骤2。

9、报告故障位置在最近记录的GoodNode的下游。除非在步骤8中检测到线路故障在当

前节点之前,否则错误的位置是在当前节点之后。在这种情况下,最后一个GoodNode在上一个节点。隐伏故障定位完成。

定位隐蔽故障

相关文章
|
Linux 网络安全 调度
第十八章、【Linux】认识与分析登录文件
第十八章、【Linux】认识与分析登录文件
56 0
|
4月前
|
编解码 Ubuntu Linux
AD2428W手册解读之概述 下
AD2428W手册解读之概述 下
AD2428W手册解读之概述 下
|
传感器 资源调度 开发工具
AD2428W手册解读之概述 上
AD2428W手册解读之概述 上
AD2428W手册解读之概述 上
|
传感器 监控 网络协议
【毕设参考】ESP32 + HaaS Python打造可以统计流量的自动感应门系统
【毕设参考】ESP32 + HaaS Python打造可以统计流量的自动感应门系统
184 0
|
存储 运维
AD2428W手册解读之系统调试 上
AD2428W手册解读之系统调试 上
AD2428W手册解读之系统调试 上
|
芯片 块存储
AD2428W手册解读之操作与配置 中
AD2428W手册解读之操作与配置 中
AD2428W手册解读之操作与配置 中
|
存储 监控 索引
AD2428W手册解读之操作与配置 下
AD2428W手册解读之操作与配置 下
AD2428W手册解读之操作与配置 下
|
存储 编解码 监控
AD2428W手册解读之操作与配置 上
AD2428W手册解读之操作与配置 上
AD2428W手册解读之操作与配置 上