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:在上电复位之后、CRC 校验的处理方式与 IGN 引脚复位不同。

Guru**** 2448780 points
Other Parts Discussed in Thread: TPS65381A-Q1

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/669836/tps65381a-q1-crc-checking-is-handled-differently-after-power-up-reset-verses-ign-pin-reset

器件型号:TPS65381A-Q1

在诊断模式下、我使用产品数据表第61页注释中详述的过程对 CRC 校验硬件进行测试。

来自数据表:

在诊断状态下、可以执行检查以确认 CFG_CRC_ERR
当 SAFETY_CFG_CRC 寄存器中存储的值不匹配时、该位会设置为1
和 CRC8涵盖的配置寄存器计算得出的值。 如果
CFG_CRC_EN 在 CFG_CRC_ERR 位设置为1时清零、然后是器件
转换至安全状态、设置 EE_CRC_ERR 位并清除 CFG_CRC_EN 位。 更改为
为了避免这种向安全状态的转换、必须通过运行来清除 CFG_CRC_ERR 位
设置 EE_CRC_CHK 位来设置 EEPROM CRC。 在 EPPROM CRC 运行时、
EE_CRC_ERR 位被置位。 假设 EEPROM CRC 良好、两者都是
EE_CRC_ERR 和 CFG_CRC_ERR 位被清除。 以检查 CFG_CRC_ERR 位是否为
0对于匹配的 CRC、匹配的 CRC 值应存储在 SAFETY_CFG_CRC 中
寄存器。 然后、必须将 CFG_CRC_EN 位清零并再次设置为1、这样才能重新运行
配置寄存器上的 CRC、导致 CFG_CRC_ERR 位为0。

当系统从断电状态启动时、此功能按预期工作。  当 EE_CRC_EN 置1时、EE_CRC_ERR 标志会立即置1。 大约800uS 后、EE_CRC_ERR 和 CFG_CRC_ERR 标志会按预期清除。 代码通过遵循注释中列出的过程正常退出。

当使用 IGN 引脚在 POST_RUN_RST=1和 IGN_PWRL=1的情况下对系统进行循环时、相同的代码会失败。 通过设置 CFG_CRC_ERR 标志、CFG_CRC_EN 过程按预期工作。 当 EE_CRC_CHK 被置位时、EE_CRC_ERR 位永远不会被置位以指示正在进行检查。 ~800uS 后、该过程不会清除 CFG_CRC_ERR 标志、从而使软件处于停滞状态、等待 CFG_CRC_ERR 清零、指示 EE_CRC 测试成功完成。

我假设一些寄存器值或内部过程在 IGN 与加电下不会重新设置相同的值、但无法精确定位。 图5-16器件控制器状态图表示这两条路径(IGN 和上电)都应导致电源进入复位状态、我假设这会使所有内部值复位、而与启动复位的值无关。

您能否解释两个复位启动器(上电和 IGN 重新排序)之间可能有何不同、以及这可能会如何影响 EE_CRC_EN 响应?

谢谢

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

    您好、Allen、

    在什么状态下重新初始化 TPS65381A-Q1中的哪些寄存器存在差异。  由于检测到的故障需要对 MCU 进行复位、而不是影响 TPS65381A-Q1和需要对 TPS65281A-Q1进行完全复位、因此将复位状态更改为复位 MCU 的状态。  要完全复位 TPS65381A-Q1、需要 NPOR 事件。  

    数据表列出了哪些寄存器会根据事件或状态转换重新初始化。  在第5.5.5.x 节中、对于每个寄存  器、在寄存器名称下是一个标题为"初始化源:"的行、此行将包括 NPOR (TPS65381A-Q1的上电复位)、复位状态或 LBIST 后重新初始化(假设 AUTO_BIST_DIS = 0、此位为默认值)。  本节还让您了解寄存器是否为只读、读取/写入、寄存器是否锁定以防止诊断状态之外的写入更新、以及 SW_LOCK 命令如何影响寄存器。  

    第5.4.26节介绍了上电复位(NPOR)及其源。  由 LBIST 重新初始化的寄存器(因此、如果 AUTO_BIST_DIS = 0、则复位状态)的汇总也在第5.5.3节中。  

    因此、在通过复位状态转换使用 POST_RUN_RST 的情况下、代码不起作用的最可能原因是软件已经在 TPS65381A-Q1中配置了一些寄存器、这些寄存器不会被在复位至 DIAGOSTIC 状态转换时触发的 LBIST 运行重新初始化。   这些具有配置的寄存 器将影响 TPS65381A-Q1计算的 CRC 值、并且与计算得出的 NPOR 初始化器件计算的值不匹配、因此 CRC 失败。

    希望这有助于您跟踪这些寄存器的差异、因为它们在 LBIST 后重新初始化和 NPOR 初始化之间的初始化不同。

    如果您有其他问题、请告知我们。

    此致、

    Scott  

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

    非常感谢您的快速回答。 我错过了每个寄存器说明顶部列出的"初始化源"。 我看到这一点后、问题就很容易解决了。 SAFETY_BIST_CTRL 中的 EE_CRC_CHK 标志不会通过 IGN 引脚上的重新启动进行复位、而是由 NPOR 进行复位。 完成 EEPROM CRC 校验后、代码将该位保持置位。 IGN 复位后、该位仍被置位、因此当程序"再次置位"时、该值不会切换、EEPROM CRC 校验也不会重新启动。 这会挂起系统、等待 EEPROM CRC 检查完成。 简单的修复方法是在再次设置 EE_CRC_CHK 标志之前将其清除。 如果 IGN 复位是通过 EEPROM CRC 校验部分发生的、则该标志可以在置位模式下悬空。 通过在运行测试之前清除 EE_CRC_CHK、可以避免这种罕见但可能的挂起点。

    初始化程序现在可以独立于复位源正确完成。

    谢谢!

    艾伦