您好,专家,
总结问题:
背景:
客户希望TPS6.5381万A始终在诊断状态而不是活动状态下工作,但发现当电源打开时,TPS6.5381万A将卡在安全状态。
与以前的正常设计相比,主要区别在于现在使用IGN唤醒而不是CAN唤醒
进度:
我检查了电源是否打开,并卡在安全状态。 有以下可能性:
- 诊断状态超时 // 大多数汽车工作正常,因此排除了这种情况
- ABIST,LBIST或两者都无法启动//这可能是其卡在安全状态的原因
- SPI故障 //不确定,是否有好的方法进行验证?
- 诊断状态超时和(DIAG_EXIT_MASK或DIAG_EXIT)未设置 // 大多数汽车工作正常,因此排除了这种情况
- (cfg_CRC_ERR = 1,CFG_CRC_EN被清除为0)
- Ee_CRC_ERR
- ABIST_ERR //这可能是它卡在安全状态的原因,请参阅以下测试数据
- LBIST_ERR
- (在设置DIAG_EXIT之前,WD_FAIL和ERROR_PIN_FAIL标志未被清除为0) //已在客户端软件中设置
请帮助评论。
初始化软件如下所示:
Void TPS6.5381万Init (void)
{
UINT16温度 = 0;
Temp = ReadData (RD_SAFETY_STAT_5);
IF (Temp == 0x07) //诊断状态
{
Temp = ReadData(RD_SAFY_FUNC_CFG); //读取寄存器RD_SAFETY_FUNC_CFG值
TEMP =(Temp & 0xF7)| 0x10; //监视器清除,锁扣点火销
WriteData(WR_SAFETY_FUNC_CFG, Temp );// 禁用看门狗复位功能,锁定IGN引脚
WriteData (WR_SAFETY_ERR_STAT,0x00); //清除WD_FAIL和ERROR_PIN_FAIL位
WriteData (WR_DIAG_CFG_CTRL,0x82); //
EnVSOUT1();// 启用VSOUT1.
EnDRV();// 启用ENDRV
WriteData (WR_DIAG_MUX_SEL,0x20); // VBATP
WDConfig(0x7F,0x1F); //配置TPS6.5381万的打开看门狗和关闭看门狗的时间
Temp = ReadData (RD_SAFETY_CHECK_CTRL);
WriteData (WR_SAFETY_CHECK_CTRL,Temp | 0x02); //掩码退出诊断
}
}
以下是测试数据,请帮助分析:
- 为什么它卡在安全状态? 1,这是否是由看门狗故障引起的? 此处的详细信息可能是什么?
- 为什么2号和3号测试结果如此不同?
注册 |
1号测试数据: 卡在安全状态 打开电源时 |
2测试A上的数据 普通单板 |
3测试数据 在普通汽车上 |
VMON_STAT_1注册 |
0000 |
0000 |
0000 |
VMON_STAT_2注册 |
0000 |
0000 |
0000 |
safety_stat_1注册表 |
0000 |
0000 |
0000 |
SAFETY_STAT_2注册表 |
0000 0111 |
0000 |
0000 0111 |
SAFETY_STAT_3注册 |
0000 1100 |
0000 |
0000 |
SAFETY_STAT_4寄存器 |
0000 |
0000 |
0000 1100 |
安全_STAT_5注册 |
0000 0100 |
0000 0111 |
0000 0111 |
safety_ERR_STAT寄存器 |
0000 0010 |
0000 |
0011 0000 |
safety_check_CTRL寄存器 |
0011 0100 |
0011 0111 |
0011 0111 |
SAFETY_FUNC_CFG寄存器 |
1011 0101 |
1011 1101. |
1011 0101 |
safety_BIST _CTRL寄存器 |
0000 |
0000 |
0000 |
DIAG_CFG_CTRL寄存器 |
1000 0010 |
1000 0010 |
1000 0010 |
DIAG_MUX_SEL寄存器 |
0010 0000 |
0010 0000 |
0010 0000 |
safety_CFG_CRC注册 |
0001 0000 |
0001 0000 |
0001 0000 |
SAFETY_ERR_CFG寄存器 |
0000 |
0000 |
0000 |
WD_STATUS寄存器 |
0000 |
0000 |
0000 |
wd_token_fdbk注册 |
0000 |
0000 |
0000 |
对于#1, 当出现ABIST错误时,找出为什么当WD_FAIL_CNT计数为7时WD_ERR未设置为1?