This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

nRF52840 power questions: DC/DC converter and powering down the system

I've got a couple of puzzles relating to a 52840 design that evolved from an 52832 design, belonging to a customer. 

1) following the suggestions at https://devzone.nordicsemi.com/nordic/nordic-blog/b/blog/posts/optimizing-power-on-nrf52-designs #1, I verified that the DC/DC converter is populated as suggested in the datasheet.  I then went into the sdk_config.h file and turned on NRFX_POWER_ENABLED, NRF_POWER_CONFIG_DEFAULT_DCDCEN, and left NRF_POWER_DEFAULT_DCDENHV turned off. Quiescent power (with no BLE communications) went up from 1.2mA to 1.9mA. This seems counterintuitive - are there additional configuration options that we should be paying attention to if we turn on NRFX_POWER? Or is this actually the correct way to enable the DC/DC converter?

2) after calling sd_power_system_off() we still see 1mA of power usage, with the peripherals around the chip being identical to those used with the 52832, where calling that same function drops the usage down to about 20uA.  After reading somewhere that EASY_DMA might prevent sleep, we explicitly turn off the UART with 

NRF_UART0->ENABLE = (0 << UART_ENABLE_ENABLE_Pos);

and turn off the SPI with 

nrf_drv_spi_uninit(&spi);

but these don't seem to help. What else might be holding the power high at this point?

Thanks!

Pierre

Parents
  • Hi

    The device should definitely not go to system OFF if the radio (and SoftDevice) is running, so something doesn't seem right here. Can you provide a snippet of code showing how exactly you turn off UART and/or PDM? There must be something trigging the device to shut down entirely when you disable (one or both of) these peripherals, as the radio peripheral and SoftDevice should keep the application running.

    Best regards,

    Simon

  • Hi Simon,

    what we're doing is:

    NRF_UART0->ENABLE = 0;
    AudioPDM_Disable();

    where:

    void  AudioPDM_Disable( void )
    {
    ret_code_t status;

    if(m_audio_enabled == false)
    {
    return;
    }

    status = nrf_drv_pdm_stop();
    if (status == NRF_SUCCESS)
    {
    m_audio_enabled = false;
    }

    nrf_gpio_pin_set(MIC_EN_PINNUMBER); // shut off microphone power

    }
    I would not have expected either of these to have a major effect on power,
    but presumably there is a checklist somewhere that's looking at what's active,
    and perhaps our advertising isn't setting something it's looking for.

Reply
  • Hi Simon,

    what we're doing is:

    NRF_UART0->ENABLE = 0;
    AudioPDM_Disable();

    where:

    void  AudioPDM_Disable( void )
    {
    ret_code_t status;

    if(m_audio_enabled == false)
    {
    return;
    }

    status = nrf_drv_pdm_stop();
    if (status == NRF_SUCCESS)
    {
    m_audio_enabled = false;
    }

    nrf_gpio_pin_set(MIC_EN_PINNUMBER); // shut off microphone power

    }
    I would not have expected either of these to have a major effect on power,
    but presumably there is a checklist somewhere that's looking at what's active,
    and perhaps our advertising isn't setting something it's looking for.

Children
No Data
Related