IAM 使用 i2c 写入看门狗寄存器,但我的串行终端在写入 window1 和 windows 后失去了控制,长窗口
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.
IAM 使用 i2c 写入看门狗寄存器,但我的串行终端在写入 window1 和 windows 后失去了控制,长窗口
尊敬的 Charan:
您能否共享您执行的 I2C 写入的逻辑分析仪捕获结果? 您是否遵循了 https://www.ti.com/lit/pdf/slvuc99 中 同时使用 TPS65941213 和 TPS65941111 的设计? 您尝试写入哪个设备?
此致、
Katie
我在电路板中使用两个 PMIC (TPS65941213 和 TPS65941111)
我正在写入 TPS65941213
我的写法是这样的
I2C 开发 0
I2C MW 0x48 0x31 0x00 1 -- i2c2 作为 GPIO、用于甚至是看门狗的理由 2c1
I2C MW 0x48 0x32 0x00 1 -- i2c2 作为 GPIO、用于偶数看门狗的理由 2c1
I2C MD 0x48 0xA5 1.
#下电上电后、您应该会看到 RECOV_CNT = 0
#正确配置看门狗以进行测试
I2C MW 0x12 0x06 0x00 1 #触发模式、WD_PWRHOLD = 0
I2C MW 0x12 0x03 0x10 1 # Window-1 = 2 秒
I2C MW 0x12 0x04 0x10 1 #窗口 2 = 2 秒
I2C MW 0x12 0x05 0x10 1 #长窗口= 2 秒
如果无法重新启动电路板、请建议使用正确的写入序列
您好、Charan、
这里有很多东西、现在可能是我对 Linux 命令的误解、但前两个命令让您执行这样的写入:
将数据 0x00 写入 I2C 地址 0x48 上的寄存器 0x31 (GPIO1_CONF)
将数据 0x00 写入 I2C 地址 0x48 上的寄存器 0x32 (GPIO2_CONF)
读取 I2C 地址 0x48 上的寄存器 0xA5(保留)
好的、这不是恢复寄存器、即寄存器 0x83
好的、Charan、老实说、这似乎只是看门狗的错误配置。
因为在写入这些寄存器之前一切都正常。
基本上、您执行的写入操作消除了地址 0x12 处 WD 寄存器的 I2C2 物理总线、并将 GPIO 1 和 2 设置为通用 GPIO 功能。 目前没有 TRIG_WD 引脚。 因此、在配置完毕后响应 WD 的方式与此类似。
我假设随后会发生这种情况、PMIC 会对 SoC 执行热复位、由于 WD_TRIG 引脚不可用、SoC 无法实际响应。 然后、WD 超时会一直持续、直到恢复计数达到饱和 (15 次尝试)、nRSTOUT 会由于来自恢复计数器的锁定而保持低电平。
#正确配置看门狗以进行测试
I2C MW 0x12 0x06 0x00 1 #触发模式、WD_PWRHOLD = 0
I2C MW 0x12 0x03 0x10 1 # Window-1 = 2 秒
I2C MW 0x12 0x04 0x10 1 #窗口 2 = 2 秒
I2C MW 0x12 0x05 0x10 1 #长窗口= 2 秒窗口 1 和窗口 2 永远不能设置为秒、这是不可能的、请仔细检查数据表、因为分配的最长时间为毫秒级。
因此、我建议将 GPIO2 设置为 TRIG_WDOG、不需要更改 GPIO1、因为从 I2C2 模式到 GPIO1 或 GPIO2 之间的任何更改都将移除 PMIC 上的物理 I2C2 总线。 然后、您将拥有一个用于 TRIG_WDOG 的有效引脚
更改 WDOG 寄存器时、请注意长窗口中的启动时间(适合 2 秒?)
一旦成为 I2C 线路、GPIO2 到 MCU 引脚的状态是多少(PORz 引脚是高电平还是低电平?)
这一点至关重要、因为引脚的上升下降可能会触发 PMIC 在 nRSTOUT 变为高电平时保留长窗口、这将阻止您对 WD 做出正确响应(如果不考虑这一点)、因为我不知道软件将监控什么内容作为对 nINT 引脚的响应。
在尝试将 MCU 域中的引脚用作驱动 PIN 时、请验证该引脚、因为您仍然可能会因为这种情况而卡在从不引导循环中。
BR、
Nicholas McNamara