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:TPS 始终处于安全和待机状态

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/690253/tps65381a-q1-tps-always-is-safety-and-standby-state

器件型号:TPS65381A-Q1
主题中讨论的其他器件:TMS470MF06607

你(们)好

我正在使用 TPS65381A-Q1器件、使用的控制器是 TMS470MF06607。

我正在尝试读取 TPS 器件状态、该状态始终显示它处于安全状态、有时处于待机状态。

我也在尝试读取错误状态。 将 设置'WDG_FAIL'和'ERR_PIN_FAIL'位。

我尝试通过设置"DIAG_EXIT_MASK" 位和禁用"DIAG_EXIT"位进入诊断状态、但当前器 件状态仍然是安全模式或待机。

即使我尝试读回'DIAG_EXIT_MASK'和'DIAG_EXIT'位、并且显示这两个位都设置为'1'。

请帮助我尽早发现问题、以便我可以输入"独立状态"和"活动状态" 并执行进一步的任务。

此致

Mayank Bhatt

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

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

    您好、Mayank、

    请确保您的正在使用 TPS65381A-Q1进行调试、并且您希望保持诊断状态、即 DIAG_EXIT_MASK 位在 TPS65381A-Q1释放 RESET 引脚 NRES 高电平的512ms (典型值)内设置。  器件上存在诊断状态超时、如果在 NRES 引脚变为高电平后等待的时间超过512ms、则器件将由于诊断状态超时而转换至安全状态。

    我猜您的是在发生此超时之前的诊断时间内未配置 TPS 器件。 此外、如果 DEV_ERR_CNT[3:0]>= PWD_THR [3:0]存在足够的故障、器件将转换为关闭状态。   

    希望您可以在诊断状态 超时之前进行调试并完成器件配置和必要的系统诊断、或设置 DIAG_EXIT_MASK 位。

    此致、

    Scott

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

    您好、Scott

    感谢您的回答。

    由于我不启用'WDG_RST_EN"、因此我还假设 由于 诊断超时而设置'WDG_FAIL'和'ERR_PIN_FAIL'位、但问题是'main'中 SPI 初始化后的第一条语句 设置为"DIAG_EXIT_MASK"。

    我不认为启动代码和初始化花费的时间超过512 ms、但我仍然是不包括在内的。

    在另一个项目中、我们使用的是 TMS570控制器、我们能够按照与 TMS470完全相似的过程进入诊断状态。

    我正在连接 TPS 器件的原理图、请查看并尽快解决。

    此致

    Mayank Bhatt  

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

    感谢您的回答。

    由于我不启用'WDG_RST_EN"、因此我还假设由于诊断超时而设置'WDG_FAIL'和'ERR_PIN_FAIL'位、但问题是'main'中 SPI 初始化后的第一条语句设置为"DIAG_EXIT_MASK"。

    我不认为启动代码和初始化花费的时间超过512 ms、但我仍然是不包括在内的。

    在另一个项目中、我们使用的是 TMS570控制器、我们能够按照与 TMS470完全相似的过程进入诊断状态。

    我正在连接 TPS 器件的原理图、请查看并尽快解决。

    此致

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

    您好、Mayank、

    WD_RST_EN 对诊断状态超时没有影响。  该位仅控制当 WD_FAIL_CNT 达到7 + 1时 TPS65381A-Q1是否会进入复位状态(通过 NRES 引脚复位 MCU)。  

    如果诊断状态超时发生、即使 DIAG_EXIT_MASK 位在诊断状态超时之前成功使用(DIAG_EXIT 位清零)、也会设置 WD_FAIL 和 ERROR_PIN_FAIL 标志。  如果随后运行诊断并尝试通过设置 DIAG_EXIT 并清除 DIAG_EXIT_MASK (一次写入)进入活动状态、因此 SAFETY_CHECK_CTRL 寄存器设置这些故障标志后、器件将进入安全状态。  如图5-16所示。 器件控制器状态图。  您应该使用示波器或逻辑分析仪来验证 NRES 释放(高电平)到 TPS 的 SPI 命令的时序(它们是时的)以及正确的 SPI 命令、以配置和保持 TPS65381A-Q1或将其置于所需的正确状态 时序。  此外、请检查您的 TMS470代码是否确实在执行与 TMS570类似的操作。  

    因此、您可能有几条软件路径、说明器件处于安全状态、要么是诊断状态超时、要么是在转换到活动状态之前不清除 WD_FAIL 和 ERROR_PIN_FAIL 标志。  您的系统中可能会出现其他检测到的问题、导致转换到 SAFE、请查看此图和安全状态部分、以确保您尚未完成导致此转换的其他故障之一。

    我已经查看过您的原理图、没有任何可以直接导致安全状态的原理图、但也有一些间接可能性。  ERROR/WDI 接地、因此无法使用 MCU 错误信号监控器(ESM)。  如果您的软件中启用了 MCU ESM、则会始终发生 ERROR_PIN_FAIL、因为 ERROR/WDI 接地。  此外、要使用 ENDRV 引脚变为高电平、您必须在 Q&A 模式下使用看门狗。  ENDRV 引脚只能在 W_FAIL_CNT 递减< 5后变为高电平。

    下面的原理图中列出了我发现的其他问题。  这些可能会导致器件产生高纹波或调节不良。  

    希望这将帮助您找到问题。  

    此致、

    Scott

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

    我之前尝试的过程与您建议的过程完全相似、但当我更改工程的链接器脚本并将矢量重新定位到0x0地址(之前有所不同)时 我能够将状态更改为诊断状态和活动状态、但仅当我处于调试模式并执行步入时。
    我无法理解当链接器脚本更改时它的工作原理。

    请帮助我理解它。

    我觉得有一些时序问题导致了同样的问题、因为如果我放置断点、那么我无法根据我的要求看到我的状态。

    如果您能根据我的要求帮助我完成 TPS 的工作、我将不胜感激。


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

    您好、Mayank、

    链接器/编译器主题适用于 MCU 团队。  我仅支持 TPS65381A-Q1。  此 PMIC 将始终独立实时运行。  如前所述、一旦唤醒事件触发此器件的上电、它将根据其时序运行。 因此、一旦 NRES 引脚变为高电平、TPS65381A-Q1的所有内部计时器都将运行、如果 MCU 未采取必要的步骤、则会发生诊断状态超时。

    我不能说链接器对软件流所做的更改、但很明显、它会导致 MCU 无法及时向 TPS65381A-Q1提供必要的 SPI 帧的问题。  使用具有 SPI 调试功能的示波器或小型逻辑分析仪工具来监控从 NRES 变为高电平到 SPI 帧被发送到 TPS65381A-Q1的时间、这是一种很有价值的工具、可用于确认您的软件按预期运行、并根据需要与 TPS65381A-Q1进行通信 它通过 MCU 和其他系统输入进行实时监控。

    我建议将链接器脚本和调试器影响的相关信息发布到 MCU 论坛。  通常、将调试器与 TPS65381A-Q1等实时监控器件配合使用是一项挑战。  为了应对这一挑战、DIAG_EXIT_MASK 位需要允许短启动代码启动 TPS65381A-Q1并使其进入诊断状态、并将其保持到调试器(非实时) 以及任何其他非实时软件调试工具、都可以在不影响 TPS65381A-Q1的情况下启动。

    此致、

    Scott

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

    Scott

    我肯定会在 MCU 主题中发帖。

    如果 TPS 由于诊断超时而进入安全状态、我是否必须执行上电复位、然后必须处理 MCU 命令才能使器件进入诊断状态?

    因为很多时候 TPS 会进入安全状态、我必须反复断电、当我设置"DIAG_EXIT_MASK"位时、TPS 会进入诊断状态。

    根据我的原理图、我的电路板(MCU)从 TPS 获得电源、IGN 必须始终开启才能使 MCU 开启。 它会带来一些问题吗?

    我不使用通过 CAN 唤醒。

    请理解、项目状态至关重要、因此我必须继续从您那里获得帮助。  

    此致

    梅扬克

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

    您好、Mayank、

    一旦 TPS65381A-Q1进入其安全状态、有多个选项可将器件转换回诊断状态。  如图5-16中的第5.4.19节"器件运行状态"所示。 器件控制器状态图。   一个选项是降低 IGN 引脚以转换回待机状态、然后通过通过将 IGN 再次提高到 DIAGNSTIC 状态来重新唤醒 TPS65381A-Q1。  另一个选项是强制状态转换为复位状态、然后恢复到诊断状态。  其中之一是使用安全状态超时选项(假设您可以在进入安全状态之前配置它们)或在 WD_RST_EN = 1时强制看门狗发生故障。  如果这只是为了软件调试目的、另一种方法可能是从外部强制 CANWU 为高电平(即使在正常应用中未使用)、然后发送 WR_CAN_STBY 命令。  从技术上讲、这会导致在1个器件时钟周期内局部转换到待机状态、这太快、无法在该周期内转换到待机状态、因为 CANWU 为高电平、因此器件将立即"重新启动"并进入复位状态、然后进入诊断状态。

    对于器 件唤醒(加电)、您必须使用 IGN 引脚(假设为 IGNITION / KL15)或 CANWU 引脚(假设为 CAN 收发器的 INH 输出)。

    如果您的 MCU 必须保持通电、并且我假设没有用于调试目的的复位(NRES 低电平)、则您可能必须在此调试过程中断开 NRES 引脚以复位 MCU 的引脚、以防止通过复位状态进行的转换复位 MCU。

    通常、大多数客户会在 MCU 中放置一个小型引导加载程序、以便为其加电、并使用 DIAG_EXIT_MASK 命令进入并保持诊断状态。   在 MCU 和 TPS 引导至该状态后、它们随后连接调试器并进行软件开发。  这避免了尝试使用非实时调试器进入诊断状态。   

    Scott

     

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

    感谢您的意见。

    每当我的状态变为"Diagnostic State"和"Diagnostic to Active"时、我尝试在自由运行模式(非调试模式)下切换 GPIO 引脚、并且我可以观察到状态变化。
    每个 CS 高电平后、我保持较短的延迟(100次"针对循环"迭代)、直到下一个 CS 低电平。

    但又出现了另一个问题。

    我尝试启用 VSOUT1、其电压输出默认为1.5V、根据数据表、该输出应为0V。
    此外、我还尝试禁用 VDD5、默认情况下它始终处于打开状态。 我可以获得适当的5V 作为 VDD5输出。
    尽管提供了正确的 SPI 命令、但我无法启用或禁用这些命令。

    请为此提供帮助。



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

    您好、Mayank、

    VSOUT1默认被禁用(VSOUT1_EN = 0、默认值)。  您必须将 VSOUT1_EN 位设置为1才能启用它。  如果您在未启用 VSOUT1的情况下测量 VSOUT1上的电压、则电路中会有一条通过其他器件连接到 VSOUT1的泄漏路径。  VDD5默认启用(VDD5_EN = 1、默认值)、但可以通过将 VDD5_EN 清零来禁用。  

    这两个位都在 SENS_CTRL 寄存器中。  器件在这些器件上没有任何状态的写入锁定、因此对寄存器进行正确的 SPI 写入应根据 VSOUT1_EN 和 VDD5_EN 位状态启用或禁用这些稳压器。  您是否使用 SW_LOCK 命令锁定寄存器以防止写入?  

    此致、

    Scott

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

    Scott

    我遵循了类似的程序、经过多次尝试后、代码未发生更改、该过程仍然有效。

    此致

    Mayank Bhatt