We've developed a custom board based on the M0 Pro that uses a sigfox module and I'm trying to get the power consumption down on the base board.
The board is running on an external 32K crystal. There are no other peripherals on the board right now
The base board has a regulator, a SAMD21-G18AUT and a sigfox module made by Wisol.
The sigfox module is definitely asleep (I can see the CPU LED is off and the power consumption is dramatically low.
I've got the RTC running, and I'm using Serial(for some debugging), USB, and an additional UART on the Sigfox module and I2C to a plugin board.
Before I'm go to deep sleep, I'm turning off:
PM->APBCMASK.reg &= ~PM_APBCMASK_ADC; PM->APBCMASK.reg &= ~ PM_APBCMASK_DAC; PM->APBCMASK.reg &= ~PM_APBCMASK_SERCOM3; PM->APBCMASK.reg &= ~PM_APBCMASK_SERCOM1; PM->APBCMASK.reg &= ~PM_APBCMASK_SERCOM2;
When I wake up, I turn them back on
PM->APBCMASK.reg |= PM_APBCMASK_SERCOM3; PM->APBCMASK.reg |= PM_APBCMASK_ADC | PM_APBCMASK_DAC; PM->APBCMASK.reg |= PM_APBCMASK_SERCOM1; PM->APBCMASK.reg |= PM_APBCMASK_SERCOM2;
I tried turning off SERCOM0 but the device locks up and starts using 10mA.
The current power consumption for the micro is 120uA (measured on a U1252B multimeter at 3.3V) for the base board in deep sleep. It should be using 15uA when I look through app notes and data sheets.
Should I be turning off more peripherals to get it lower?