NDP101 on TinyML board freezes

I have implemented a low-power mode operation based on some examples from GitHub. It appears to work well, but I’ve noticed that the TinyML board sometimes freezes and fails to wake up when exposed to sounds that typically trigger detection. This issue arises sporadically, sometimes taking hours or even a full day to occur.
Upon analyzing this problem, I identified the following issue: the interrupt pin on the NDP101 remains permanently high (3.3V), preventing it from waking up the MCU (since the MCU wakes up on a rising edge). I have checked other critical signals around the NDP101 while in the freezing state, and everything else appears to be functioning correctly:

VDDIOx: 3.3V
DVDDx: 0.9V
RESET: 3.3V (same as in normal operation)
EXT_CLK: 32kHz (same as in normal operation)
MIC_CLK: 0.85MHz (same as in normal operation)
MIC_DATA: I can read the data signal from microphone

During normal operation, the interrupt pin goes high for only a short period (approximately 10ms) when the NDP101 recognizes a specific sound according to the trained ML model.

Based on my investigation, it appears that this issue is related to the NDP101 itself and not to the firmware in the control MCU.

Any ideas what I can try, or what might be wrong?

As you said, the interrupt pin on the NDP101 stays high continuously (3.3V) in the freezing state definitely points towards an issue with the NDP101 itself and not the firmware in the control MCU. Here’s a breakdown of your observations.

  • Normal behavior: During normal operation, the interrupt fires for a short duration (10ms) indicating sound detection. This suggests the communication and interrupt handling between the NDP101 and MCU function correctly most of the time.
  • Frozen state: The interrupt pin stays high permanently. This abnormal behavior suggests a potential issue within the NDP101 that keeps the interrupt line asserted continuously.
  • Other signals function normally: Since VDDIOx, DVDDx, RESET, EXT_CLK, and MIC_CLK all display expected values during the freeze, it’s less likely a power supply or clock issue with the surrounding circuitry.
  • MCU functionality: The fact that you can read MIC_DATA indicates the MCU itself is operational and can receive data from the microphone. This reinforces the possibility of an isolated issue with the NDP101.

Possible causes for the NDP101 issue:

  • Internal malfunction: The NDP101 might have encountered an internal malfunction that keeps the interrupt line high. This could be a hardware defect or a temporary glitch.
  • Software bug: In rare cases, the NDP101 might have firmware bugs that cause unexpected behavior like a stuck interrupt pin. However, this is less likely as these bugs are usually caught during manufacturing testing.

Recommended tips:

  • If you have multiple NDP101 boards, try testing with a different one to see if the issue persists. This can help isolate if the problem is specific to your current board.
  • Monitor the behavior closely. Try to identify any specific conditions or sound patterns that seem to trigger the freezing state more frequently. This information might be helpful in debugging the issue further.

By following these steps, you can narrow down the root cause of the freezing issue and potentially find a solution to ensure your low-power mode operation functions reliably.