I am using a BC840 on custom PCB for a low power data logging application and am struggling to get lower than 270uA sleep current. This part has the 32mHz external crystal and our custom PCB provides the 32.768kHz crystal. I am using upstream Zephyr and I've created a custom board config from the nrf52840dk as a starting point, adjusting the IO as needed for our minor differences. When I go to System OFF mode I see 20uA of current, which is the same passive current draw from the PCB when the BC840 is not installed (via PCIE connector). From what I've read and the people I've talked to, I should be able to get to the double digits of uA while in System ON (my target is less than 50uA). I think the difference with my application is the external 32mHz crystal on the BC840, but from what I understand the CPU should be disabling this clock source when nothing is using it. I have created the most basic application which just goes straight into a `k_sleep(K_FOREVER)`, and when I go into System OFF before the sleep it gets very low current draw, but if I stay in System ON it sits at 270uA. I am suspecting that the 32mHz crystal is staying powered, but I'm really not sure.
These are the KConfig options
CONFIG_SERIAL=n
CONFIG_CONSOLE=n
CONFIG_SHELL=n
CONFIG_LOG=n
CONFIG_GPIO=y
CONFIG_BOOTLOADER_MCUBOOT=y
CONFIG_PM=y
CONFIG_PM_DEVICE=y
CONFIG_CLOCK_CONTROL_NRF_K32SRC_XTAL=y
CONFIG_CLOCK_CONTROL_NRF_K32SRC_EXT_FULL_SWING=y
CONFIG_CLOCK_CONTROL_LOG_LEVEL_DBG=y
and the code
void main(void)
{
// pm_power_state_force((struct pm_state_info){PM_STATE_SOFT_OFF, 0, 0});
k_sleep(K_FOREVER);
}