This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TPS65381A-Q1:ABIST 和 LBIST 故障

Guru**** 2386600 points
Other Parts Discussed in Thread: TPS65381A-Q1
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/896238/tps65381a-q1-abist-and-lbist-failure

器件型号:TPS65381A-Q1

您好!

我将 RM42L Launchpad 连接到 TPS65381AEVM、并尝试定期(每1秒)取消 TBIST 和 LBIST。

由于 SAFETY_STAT_3寄存器 ABIST_ERR 位返回1b、因此 ABIST 失败。

由于 折返行返回 false、LBIST 无法执行

BlRetVal = TpsIf_SetRegisterBitFieldVerify (TPS_SAFETY_BIST_CTRL、
bf_LBIST_EN_START、BF_LBIST_EN_LENGTH、(uint8) 1U);

请提供建议。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好

    我不熟悉 TPS65381。 上电时是否出现 ABIST 和 LBIST 错误? BIST (LBIST 及 ABIST)在上电事件期间随着从复位状态的任何转换而在诊断状态下激活和运行。

    您可以从 E2E 电源管理团队获得快速帮助:TPS65381 E2E https://e2e.ti.com/support/power-management/f/196

    如何连接 TPS65381 EVM 和 RM42 LP?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    除了王先生的问题、我还有几个问题:

    1. ABIST 是否首次尝试首次尝试运行时失败或是否随机失败?
    2. 是否确认一旦   SAFETY_STAT_3中的 ABIST_RUN 清零、SW 将检查错误标志?
    3. 您是在活动模式还是诊断状态下运行 ABIST 和 LBIST?

    此致、
    伊凡

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好  

    很抱歉耽误你的时间、Corona。

    我运行的诊断代码与先前运行的诊断代码相同、但在最终 PCBA 上不是 launchpad 上。

    调用以下函数的周期为100ms:

    布尔 diag_runTpsPeriodicDiag (void)
    {
    tpsStatus = true;
    
    if (true = TPS_ProtectConfigurationRegisters (unlock))
    {
    
    tpsStatus &= diag_TPS_runABIST ();
    //
    * TODO 检查 LBIST 测试为何无法执行
    tpsStatus &= diag_TPS_runLIST ();
    *
    tpsverify &tpse* tpse&tpse&tpsrunte= tpsTest (
    if)。 此处*/
    
    TPS_ProtectConfigurationRegisters (LOCK);
    }
    
    返回 tpsStatus;
    } 

    布尔 diag_tps_runLBIST (void)
    {
    tps_TestRunningStatus lbistrunningstatus =正在运行;
    tps_Test_result lbist_test_result= test_pass;
    
    if (true =tps_StartBIST (LBIST))
    ){
    tps_SendDebugText (info、(uint8*)"Running LBIST test"、0);
    do
    
    
    
    
    
    
    
    
    
    t unding*=
    
    
    
    
    正在运行时、tps_ring*(tps_rbstraw);t = unningrning*(tps_rb&rb&ring*)
    if (TRUE =TPS_GetLBISTTestStatus (&lbist_test_result))
    {
    if (test_pass =lbist_test_result)
    {
    tps_SendDebugText (info、
    (uint8*)"LBIST 测试通过"、0);
    
    }else
    {
    tps_SendDebugText (info、
    (uint8*)
    
    
    
    
    
    }
    
    
    
    
    
    、"tps_unt 失败
    
    
    、"ring0)、"tps_tras"(tps_rning0)、"tps_tras"、"ts"(tps_trun0*、"uint8)、"ts"(tps_trunt 失败)、"tps_tras"、"uint0*、"ts"(tps_trunt 失败)、"tps_tras"(ts"(
    

    ABIST 和 VMON 测试通过、但 LBIST 失败。

    LBIST 功能失败、因为在以下情况下 TPS_StartBIST (LBIST)失败:

    BlRetVal = TpsIf_SetRegisterBitFieldVerify (TPS_SAFETY_BIST_CTRL、
    bf_LBIST_EN_START、BF_LBIST_EN_LENGTH、(uint8) 1U);

    有人猜、为什么?

    在 INIT 中、所有函数都通过。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我不确定导致 LBIST 故障的根本原因是什么。 我查看了 TPS 驱动程序的源代码、 有多种原因 TpsIf_SetRegisterBitFieldVerify 可能返回 false。

    TpsIf_SetRegisterBitFieldVerify 调用和以下所有函数执行一些错误检查:

    • TpsIf SendCommandOverSPI 调用
      • SEND_REGEVE_DATA_TPS
    • BFU8_get 哪个调用  
      • CHECK_RANGE_RAM_PTR

    是否可以通过 TPS_SendDebugText 启用输出错误消息并在 diag_TPS_runLBIST 失败时提供日志快照?

    此致、
    伊凡  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、 我怀疑问题在 send_receeve_data_TPS 中、因为对该函数的所有其他调用都有效。 当我单步执行该函数时、我可以在验证部分看到它失败、这意味着该位未在寄存器中更新。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我认为这个问题可能与初始化期间运行 LBIST 和定期函数运行时的时序差异有关。

    从 TPS65381A-Q1的角度来看、一旦器 件开始运行 LBIST、SPI 寄存器在 lBIST 期间可能不可用、因此在 LBIST 运行时不应进行 SPI 读取或写入(数据表中的第5.4.7节)。

    在代码执行之后、TpsIf_SetRegisterBitFieldVerify 似乎 会通过执行一个额外 的 TpsIf_SendCommandOverSPI 来验证该字段是否已正确配置、该操作可能会在 SPI 寄存器不可用时发生。  

    为了确认这一点、我可以考虑一个快速测试、问题是在验证寄存器位字段写入之前插入4.2ms 延迟(典型的 LBIST 运行时间)。

    此致、
    伊凡

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ivan、

    我 将 TpsIf_SetRegisterBitFieldVerify 替换为 TpsIf_SetRegisterBitField、当向设置 LBIST 位发送 WRITE 命令时(测试开始之前)、测试仍然失败。

    在其工作之前执行读取命令、并在数据字节(RD_SAFETY_BIST_CTRL)中返回0x00。

    在 执行 LBIST 之前、我正在读取 TPS_SAFETY_STAT_3、以确保 LBIST 未运行(位2)并且未运行。

    它还有什么呢?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    它现在正在运行、

    我在调用 LBIST 之前就解锁了寄存器、然后在测试失败后立即将其锁定。

    但我认为 TPS 驱动程序中存在错误、  在运行 LBIST 时无法调用 TpsIf_SetRegisterBitFieldVerify