在测试我们的其中一款产品时、我们发现在启动时偶然检测到看门狗计时器(WDT)跳闸。
经进一步调查、发现 WDT 似乎在用户代码执行之前发生-这是通过使用`_LOW_LEVEL_INIT ()`函数来确认的、该函数会尽快将一个 GPIO 置为有效、然后在 WDT IFG 被置位时将另一个 GPIO 置为有效。 在后续的示波器捕获中、大多数器件相对较快(< 2ms)、表示未发生 WDT。 但是、某些器件似乎在经过一段很长的时间(>30ms)后出现、并在代码执行之前立即指示看门狗超时。 这个30ms 周期与预期看门狗持续时间(~1.1MHz 标称 CPU 速度、32768看门狗周期)非常接近。
捕获图例:
* CH1 (黄色)-电池使能信号(将电源从慢速开启稳压器切换到内部电池、这会快得多)
* CH2 (绿色)-检测到 WDT IFG、如果 WDT IFG 被置位、则会在_LOW_LEVEL_INIT 中置位高电平。 如果 IFG 为低电平、则该引脚无效
* CH3 (蓝色)-处理器开始执行__low_level_init ()时始终有效的 GPIO
* CH4 (粉色)- VCC 电源轨

图1:标称启动情况-执行__low_level_init ()并且未检测到 WDT 事件(绿色轨迹保持低电平)。

图2: 在执行代码之前、可以看到处理器在 WDT 置位的情况下开始执行我们的代码(绿色线迹变为高电平、蓝色线迹变为高电平)。
30ms 周期与看门狗周期密切一致这一事实似乎意味着 DCO/MCLK 正在运行、但我们的代码看起来没有执行、我们需要确定在此期间处理器中发生的确切情况。
问题:对于这些需要大于30ms 启动并指示立即看门狗的器件、CPU 在此期间将执行什么操作? 它是否已暂停? 它是否执行任意代码(例如在杂草中关闭)?
背景:
我们在设计中发现了一个带有指定错误旁路电容器的 LDO、这会导致 MSP430的 VCC 电源的上升速度比预期的慢。 当这个旁路电容器被预充电时、我们的电源启动得快得多、我们看不到这些看门狗/缓慢启动问题。
此问题仅发生在我们的少数产品上(例如、10%发生)、我们怀疑它与 VCC 启动过程相关。
