I'm running into a problem when putting my board into deep sleep. I'm finding that although it appears that the MCU is in DS mode 3/PD(0), the board's current consumption suggests otherwise.
I have based my project on the power_profiling example in the 2.2 SDK. It is running on a custom qn9083 board. I presume I'm doing most of the step correctly as I'm finding myself here:
Which implies that I have at least done most of the job correctly and I'm not getting stuck in Sleep mode. Register settings appear correct for PD(0):
However, the board is drawing 900uA. When I manually set the OSC32M_DIS (400 uA) and XTAL_DIS (250 uA) clocks, BLE_DIS (25uA) CLK_BLE_DIS(30 uA) pins, the current draw is down to 200 uA. Not ideal but much, much closer to my target.
This implies to me that although the debugger is telling me that the MCU is in PD, it actually isn't. The clocks aren't off, the peripherals aren't off... Any ideas on what might be going on?
I am able to see the expected current measurements on the DK board and the registers more or less match up with what I have on my board -- at least the PMU ones anyway. The only real difference that might affect this that I can think of is that my board is using a digital input an not a crystal for XTAL32. SYSCON_XTAL32K_CTRL_XTAL32K_INJ is set.
Hello, Jose
Power down mode 0 (PD0) cannot be reached while you have the debugger attached to your target. Also, I recommend to put the SWD pins into HiZ and then disable the SWD module just before entering low power, and then restore the SWD modules and pins just after wakeup. You can use the existing registered callbacks, BOARD_PrepareDeepSleep() and BOARD_WakeupRestore() for doing so. The SWD pins are PA22 and PA23.
Hope that helps.
Regards,
Mihai DRAGNEA
Thank you, that was helpful. Don't know why I didn't think to disconnect the debugger.