工具与软件:
您好、Nicholas
最近我在开发过程中遇到了一些问题。 当系统异常触发看门狗复位时、机器不断重新启动、间隔约为2-3秒、因为我的 Win1:70.4ms、Win2:70.4ms、WD_THR_CFG 寄存器也配置为0xFF、因此我怀疑机器由于不良事件的累积而一直显示2-3秒的重新启动时间。 不确定此想法是否正确? 你有什么想法吗?
如果这就是原因、您有没有解决方案?
BR、
Huang
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.
工具与软件:
您好、Nicholas
最近我在开发过程中遇到了一些问题。 当系统异常触发看门狗复位时、机器不断重新启动、间隔约为2-3秒、因为我的 Win1:70.4ms、Win2:70.4ms、WD_THR_CFG 寄存器也配置为0xFF、因此我怀疑机器由于不良事件的累积而一直显示2-3秒的重新启动时间。 不确定此想法是否正确? 你有什么想法吗?
如果这就是原因、您有没有解决方案?
BR、
Huang
您好!
根据我的理解、即使器件要复位、您也可以将 WD 保持在长窗口中、但这取决于窗口的持续时间。 如果您能够在长窗口中写入这些位、则可以将其保留。 这只是看到这是由 WD 不正确的馈送造成的。
请问、在看门狗复位后、WD_FAIL_CNT_REG 寄存器中的 WD_FAIL_CNT 是否会清零?
阅读 数据表第8.3.10.1节"看门狗失效计数器和状态"。 每次进入长窗口时、都会清除 WD_FAIL_CNT。

WD 失效计数器有四种状态、在 WD 序列中、在长窗口中、它为0、每次在每个 WD 序列中获得正确的三个答案时、它都会从3减少到1。 这可以在 数据表中给出的 Q&A WD 流程图中看到。
但是、下表总结了与 WD_FAIL_CNT 相关的故障事件。 从该表中、您可以看到如果得到错误的答案、WD_FAIL_CNT 会增加哪些参数。
此致、
Ishtiaque
您好、黄
我不知道该怎么办,可是我却发现了她的问题。
我认为、重置是由不良事件引起的、由于将 WD_THR_CFG 设置 为0xFF、对于最大阈值、我们假设 win1和 win2都过去了、即70.4ms * 2 = 140.8ms、15次尝试正确回答 WD、大约得到2.1秒。
遗憾的是、重置的原因在于编程是如何完成的。
长窗口设置为多长时间(多大值)?
在第一篇文章中、您指出在开发过程中、当您给出"系统异常触发看门狗复位"时就会出现此问题、您能否对该系统异常进行更详细的描述?
我只能假设您手动触发看门狗复位、并且在这之后的每个点都存在2秒的复位问题、如果是正确的、您是如何手动触发复位的?
感谢这些问题的反馈、抱歉、如果有问题、尝试在尝试禁用看门狗时避免其他问题、因为这是系统错误。
BR、
尼古拉斯·麦克纳马拉
您好、Nicholas
我很高兴你回来!
这是我的答案:
长窗口设置时间(值是多少)?
我将 WD_LONGWIN_CFG 寄存器的值设置为0x89、即5分钟。
这是看门狗模块的当前配置
i2cset -y -f 0 0x48 0x32 0x20
i2cset -y -f 0 0x12 0x03 0xFF
i2cset -y -f 0 0x12 0x04 0xFF
i2cset -y -f 0 0x12 0x05 0x89
i2cset -y -f 0 0x12 0x06 0x00
i2cset -y -f 0 0x12 0x09 0xFF
在第一篇文章中、您指出在开发过程中、当您给出"系统异常触发看门狗重置"时、就会出现此问题、您能否更详细地描述此系统异常?
在我的程序中、每130ms 通过一个计时器向 GPO2引脚发送一个脉冲、以喂狗。 当我模拟系统异常时、我通过停止计时器来实现。这样我就知道会发生不良事件。当这些事件累积到我设置的次数时、会发生重新启动。
我只能假设您手动触发了看门狗复位、并且在每一个点之后您都遇到了第二次复位问题、如果是正确的、您是如何手动触发复位的?
我在这里创建了一个界面、该界面通过输入命令来触发。 当被触发时、它将终止喂狗的定时器、从而使看门狗重新启动。
我希望以上回答对您的分析有帮助。
BR、
Huang
您好、黄
非常感谢您提供这些信息、这对您有很大帮助。
因此、在引导到一个良好的系统后、I2Cset 命令将由写入、您将终止与计时器相关的任务。 您和我预计会进行重置、然后会发生重置。 现在 PMIC 仍然使用之前的设置处于活动状态、发送 nRSTOUT 信号进行切换、释放 nRSTOUT 后看门狗处于5分钟长的窗口内。
接下来发生的是在编程/硬件中、在常规的冷启动中、PMIC 设置为 Q&A WDOG 不会像您所设置的那样触发。 我很高兴您现在能够为其提供服务。
我预计在触发模式下连接到 PMIC GPIO2的 SoC 上的 PIN 会通过启动时启动的任务进行切换。 再次感谢您提供的详细信息、因为事件后~2秒复位使我相信网络上 PMIC GPIO2的信号可能会在 SoC 上的 PORz 后上升、SoC 上断电可能会将网络拉至信号低电平、而复位时信号会变为高电平、我们现在都知道这将使我们退出长窗口。
下面的确认复位原因的建议
如果您可以访问硬件、您能否在复位发生期间探测网络以确认此行为?
另一个建议是查看 SoC 的数据表、并查看 PORz 上与 PMIC 的 GPIO2连接的引脚的行为。 对于 Jacinto 处理器、该列表应已列出、否则可以在论坛上提问。
我希望这是足够的细节,以指出正确的方向。 哦,新年快乐,黄,希望今年一切顺利!
BR、
尼古拉斯·麦克纳马拉
您好、Nicholas
[报价 userid="525681" URL"~/support/power-management-group/power-management/f/power-management-forum/1454957/tps6593-q1-after-triggering-a-watchdog-reset-the-machine-repeatedly-restarts/5595029 #5595029"]我预计在触发模式下、SoC 中连接到 PMIC GPIO2的 PIN 将通过启动时启动的任务进行切换。 再次感谢您提供的详细信息、因为它表明此事件后~2秒复位使我相信网络上 PMIC GPIO2的信号可能会在 SoC 上的 PORz 后升高、SoC 上的断电可能会使网络变为低电平、而复位时信号会变为高电平、我们现在都知道这将使我们退出长窗口。我想、对我来说、是要重现电流看门狗重启现象并捕获 GPIO2和 PORz 的波形、对吗?
这是以下两个引脚吗?

如果是这种情况、那么这里是我使用逻辑分析仪捕获的波形

在此波形中、我从图中标记的点1开始看狗狗喂入定时器。 在标记为2的位置终止喂狗计时器。 在间隔2秒后重新启动、然后多次重新启动、标记为3。

下面的蓝色部分是 PMIC 上 nRSTOUT 引脚的波形、每次触发重启时、该波形都具有较长的低电平时间。 我不知道上述波形是否符合您的需求。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
以上是我的理解之一,但由于我们每天只能传递一个信息,为了减少一些误解,我将在下面介绍我的第二个理解。
您查找的波形是否参考 SoC 上的 GPIO2引脚和 PORz 引脚? 它不同于上面标记的 nRSTOUT 引脚 I。 如果是这种情况、这里是我测量的波形

同样、标记1表示我已开始喂狗、标记2表示停止喂狗计时器、标记3表示重新启动。

在每次重启期间、都会出现 PORz 引脚先低电压、然后高电压的现象。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
以上是我的两种解读、我希望您能找到一些信息。
最后、我还要补充一条信息:当我今天重复这个问题时、我发现重新启动的次数是固定的。 当触发看门狗重启时、机器将重复重启14次、然后整个机器将因电流较低而崩溃。 这可能是 PMIC 的保护机制吗? 我不是很确定为什么会出现这种现象。
希望上述信息对您有所帮助。 如果需要提供任何其他信息、您还可以向我提供反馈、以便我们能够尽快解决该问题。 我也祝你新年快乐!
BR、
Huang
您好、黄
我很抱歉没有提供足够的细节,但是的,这些信号是有帮助的。 所以这两种解释都很有帮助。
我需要知道何时释放 TPS65931211上 PMIC 的 nRSTOUT 引脚、以便何时释放 GPIO2上的信号
[报价 userid="625133" url="~/support/power-management-group/power-management/f/power-management-forum/1454957/tps6593-q1-after-triggering-a-watchdog-reset-the-machine-repeatedly-restarts/5596708 #5596708"]以上是我的两种解读、我希望您能找到一些信息。
最后、我还要补充一条信息:当我今天重复这个问题时、我发现重新启动的次数是固定的。 当触发看门狗重启时、机器将重复重启14次、然后整个机器将因电流较低而崩溃。 这可能是 PMIC 的保护机制吗? 我不是很确定为什么会出现这种现象。
[报价]这是为了实现该目的、有一个由 PMIC 递增的计数器、一旦计数器已满、就会发生锁定、并且 PMIC 在 PMIC 断电之前不会进行另一次尝试。 可以将计数器清零、有关详细信息、请参阅数据表中的寄存器0x83和0x84。
PMIC 不能明确说明 PMIC 位于哪个窗口、因此可以执行相应操作来确认是否正在打开。
窗口时序可以更改、当 win1 & win2后示波器上测得的时间与数学值一致时即可。 (Win1 + Win2)* 15次尝试=复位时间、更改 win1和 win2将导致复位时间变化、并将表明器件已离开长窗口。 我知道这将需要改变130周期,所以只是一个想法,以确保这是发生了什么。
至于原因、如果您可以让示波器再次测量 nRSTOUT 引脚和 GPIO2引脚、但尽可能使用模拟、因为高电压电平~1V26。
器件复位时、它会运行这些 I2C 写入吗?
[报价 userid="625133" url="~/support/power-management-group/power-management/f/power-management-forum/1454957/tps6593-q1-after-triggering-a-watchdog-reset-the-machine-repeatedly-restarts/5593677 #5593677"]这是看门狗模块的当前配置
i2cset -y -f 0 0x48 0x32 0x20
i2cset -y -f 0 0x12 0x03 0xFF
i2cset -y -f 0 0x12 0x04 0xFF
i2cset -y -f 0 0x12 0x05 0x89
i2cset -y -f 0 0x12 0x06 0x00
i2cset -y -f 0 0x12 0x09 0xFF
[报价]我不能确定、但将0x48 0x32 0x20更改为触发器看门狗引脚可能会使器件看到这是上升沿、因此如果引脚上的信号保持高电平、则会保留长窗口、但更改 Win1和 Win2时序的测试将确认这两种设置的超时都已过去。
我们还可以安排一次通话。
BR、
尼古拉斯·麦克纳马拉
您好、Nicholas
器件复位后、它是否运行这些 I2C 写入?
否、在将这些数据写入寄存器并已经发生下一次重新启动之前、程序尚未运行、因此无法写入这些数据。
[报价 userid="525681" url="~/support/power-management-group/power-management/f/power-management-forum/1454957/tps6593-q1-after-triggering-a-watchdog-reset-the-machine-repeatedly-restarts/5598311 #5598311"]窗口时序可以更改、当 win1 & win2后示波器上测得的时间与数学值一致时即可。 (Win1 + Win2)* 15次尝试=复位时间、更改 win1和 win2将导致复位时间变化、并将表明器件已离开长窗口。 我知道这将需要改变130周期,所以只是一个想法,以确保这是发生了什么。
至于原因、如果您可以让示波器再次测量 nRSTOUT 引脚和 GPIO2引脚、但尽可能使用模拟、因为高电压电平~1V26。
[报价]现在、我要向您展示我今天进行的测量的结果
1 μ s 当、1和窗口2都配置为0xFF 时、测量的波形如下所示:
黄线表示 GPIO2引脚、蓝线表示 nRSTOUT 引脚。
当我用命令杀死狗喂养计时器时,我可以看到第一次重新启动发生在大约2秒的间隔后,这与配置我的 WIN 1和 WIN 2后看门狗的正常重新启动时间是一致的。

当重新启动时、nRSTOUT 引脚将出现大约13ms 的低电平。

在从正常到重新启动的过程中、GPIO2的最大电压为3.3V。

nRSTOUT 的最大电压为1.8V。

2 μ s 当、1和窗口2都配置为0x3F 时、测量的波形如下:
触发看门狗重启时、大概是1秒后、这与我的配置一致。

除了不同的重启时间外、所有其他性能都与第一种配置相同
然后、我发现每次重新启动的时间也与 WIN1和 WIN2的配置时间有关。 例如、当 WIN1=0xFF 和 WIN2=0xFF 时、每次重启的时间约为2秒。

当我修改 WIN1=0x3F 和 WIN2=0x3F 时、每次重新启动之间的间隔约为1秒。

以上是我今天的测试结果、希望从他们那里找出问题的原因。
BR、
Huang
您好、黄
感谢您确认器件在 nRSTOUT 切换期间退出长窗口。
我不知道 SoC 上的哪个引脚与电路板上的 PMIC 连接、但可以尝试使用下拉电阻器来将信号值保持在低电平、以便查看信号是否保持在长窗口内。
在原理图中、我看到 WKUP_I2C0_SCL (引脚 D13 AM62)侧与 GPIO2 (PMIC 上的 PIN33)侧连接。 该引脚的默认状态为低电平。
如果您可以尝试放置一个下拉电阻器、或者查看是否有更改 SoC 侧的默认设置、这应该可以解决该问题。
BR、
尼古拉斯·麦克纳马拉
您好、 Huang
请注意、WKUP_I2C0的开漏输出、使用时需要相应 IO 配置的上拉电阻。
[报价 userid="625133" url="~/support/power-management-group/power-management/f/power-management-forum/1454957/tps6593-q1-after-triggering-a-watchdog-reset-the-machine-repeatedly-restarts/5601994 #5601994"]通过下拉电阻下拉 WKUP_I2C0_SCL 引脚后、我重复了之前触发看门狗重新启动的步骤、但该现象仍然持续存在、且反复重启、与之前的表现一致。此致、
Sreenivasa
大家好!
该主题帖的回复次数过多。 有人可以告诉我所观察到的问题。
PORz 指示内部复位状态、并变为高电平以指示内部 SOC 复位完成。
在 SOC 复位期间、预计该引脚在变为低电平后变为高电平
我将这个问题交给处理器团队、以便他们可以在 PORz 复位后确认信号行为。
此致、
Sreenivasa
您好、 Sreenivasa
我正在就触发看门狗复位后重复重启的芯片问题咨询 Nicholas。
Nicholas 要求我下拉 WKUP_S2C0_SCL 引脚以查看是否可以解决问题、但在下拉该引脚后、无法解决问题。
然后 Nicholas 表示、他需要将此问题告知处理器团队进行分析、并要求我确认我所在区域的 WKUP_I2C0_SCL 连接方法是否与 EVM 相同。
与我公司的电子工程师确认后、连接方法不同、相应的连接图已显示在上述答案中。
目前、我们需要提供解决该问题的下一步措施。
BR、
Huang
您好、黄
我对很晚的回复非常抱歉、该线程的分配已更改、而未直接分配给我、因此错过了通知。
遗憾的是、我无法提供解决方案、但我怀疑此引脚的上升沿使 PMIC 离开长窗口、并且软件无法及时启动。 我将尝试确认这一点并查看可以解决的问题、但这可能涉及到硬件更改。
[报价用户 id="625133" url="~/support/power-management-group/power-management/f/power-management-forum/1454957/tps6593-q1-after-triggering-a-watchdog-reset-the-machine-repeatedly-restarts/5618552 #5618552"]或者、您能否为 Q&A 模式提供配置例程?
[报价]为了更好地帮助您、您能告诉我们您使用的操作系统是什么、以便我们引导您找到 PMIC 驱动程序的正确位置。
默认情况下、Huang 已配置为 Q&A 模式、但使用该 MCU I2C 线路、但您不会定期发送脉冲来读回寄存器、根据以下情况执行计算、应答窗口已更改、三个答案在窗口1中、最终答案在窗口2中。 请查看数据表中的章节、如果您有后续问题、请告知我。 请参阅以下文档:

以上是通过 C 代码实现的
static uint8_t Pmic_getAnswerByte(uint8_t qaQuesCnt, uint8_t qaAnsCnt, uint8_t qaFdbk)
{
uint8_t q0 = 0U, q1 = 0U, q2 = 0U, q3 = 0U;
uint8_t a0 = 0U, a1 = 0U;
uint8_t qaAns = 0U;
q0 = ((qaQuesCnt >> 0U) & 1U);
q1 = ((qaQuesCnt >> 1U) & 1U);
q2 = ((qaQuesCnt >> 2U) & 1U);
q3 = ((qaQuesCnt >> 3U) & 1U);
a0 = ((qaAnsCnt >> 0U) & 1U);
a1 = ((qaAnsCnt >> 1U) & 1U);
/* Reference-Answer-X[0] */
qaAns = (mux_4x1(q0, q1, q2, q3, qaFdbk) ^ mux_4x1(q3, q2, q1, q0, qaFdbk) ^ a1);
/* Reference-Answer-X[1] */
qaAns |= (((mux_4x1(q0, q1, q2, q3, qaFdbk) ^ mux_4x1(q2, q1, q0, q3, qaFdbk) ^ a1 ^ q1)) << 1U);
/* Reference-Answer-X[2] */
qaAns |= (((mux_4x1(q0, q3, q1, q1, qaFdbk) ^ mux_4x1(q3, q2, q1, q0, qaFdbk) ^ a1 ^ q1)) << 2U);
/* Reference-Answer-X[3] */
qaAns |= (((mux_4x1(q2, q1, q0, q3, qaFdbk) ^ mux_4x1(q0, q3, q2, q1, qaFdbk) ^ a1 ^ q3)) << 3U);
/* Reference-Answer-X[4] */
qaAns |= (((mux_4x1(q1, q0, q2, q3, qaFdbk) ^ a0)) << 4U);
/* Reference-Answer-X[5] */
qaAns |= (((mux_4x1(q3, q2, q1, q0, qaFdbk) ^ a0)) << 5U);
/* Reference-Answer-X[6] */
qaAns |= (((mux_4x1(q0, q3, q2, q1, qaFdbk) ^ a0)) << 6U);
/* Reference-Answer-X[7] */
qaAns |= (((mux_4x1(q2, q1, q0, q3, qaFdbk) ^ a0)) << 7U);
return qaAns;
}
BR、
Nicholas
您好、Nicholas
为了更好地为您提供帮助、您能告诉我们您使用的是什么操作系统吗、以便我们引导您找到 PMIC 驱动程序的正确位置吗?
我们使用的是 Linux+RTOS 操作系统。
BR、
Huang
您好、Nicholas:
让我详细介绍一下该解决方案:
后台是在我们配置 WD Q&A 模式后、我们需要使用 TPS6593 GPIO2馈送 WD、首先我让客户将 I2C 引脚多路复用器更改为 GPIO、并生成脉冲以馈送 WD、这可以正常运行。 但是客户发现有关停止馈送的问题、PMIC 无法成功重新启动、它将继续重新启动14次、然后关闭。

2.和 Nicholas 讨论后,我们发现原因是 MCU_I2C0_SDA 的上拉会让 PMIC WD 提前离开长窗口,导致持续重启。 但是 由于 MCU_I2C0_SDA 是 OD 引脚、因此必须使用上拉电阻器。 在 PMIC 的第二次启动中、上拉电阻不会断电、也会生成脉冲。 因此、让 WD 离开长窗口。 我希望客户更改为 PMIC_WDOG_Trigg。
3.在 TI EVM 中、 PMIC_WDOG_Trigg 也连接到 OD 引脚、这是一个需要修复的错误、也会导致重启问题。 感谢客户将此设计更改为正常 GPIO。 在没有外部上拉电阻的情况下、它可以正常工作。

BR、
Biao