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

Peripherals in Low power mode-Idle mode

Hi Team,

I am working on SYSTEM ON mode with Low power mode also called Idle mode in nRF9160 module.

I was able to go to Idle mode with current consumption of 6uA with MCU ON, modem OFF, RTC OFF.Though this current is more compared to the value given in product specification document.

My questions on Idle mode are given below and I work on gas metering applications.

  1. Is it possible to work on low CPU clock in system ON mode? As of now from nRF9160_PS_v1.20.pdf document CPU clock is 64MHZ. In order to reduce the current consumption I would like to change the clock to 1MHZ or 32KHz when moving to Idle state from active state.
  2. Can ADC peripheral work in Idle mode? The use case is, when system is not doing any modem or radio activity, in order to reduce current we would like to move M33 core  to Idle state and in Idle state we want ADC peripheral to sense the pressure and temperature input continuously as my end product is for gas metering application.
  3. Can M33 core change to active mode from Idle mode based on ADC interrupt?
  4. Will DMA work in idle mode?
  5. Can we do pulse capture or pulse counting on a GPIO in Idle mode?
  6. Can timers run in idle mode?If yes can you please guide us how to configure timer to run in Idle mode.
  7. Can we put radio In EDRX mode and M33 core in idle mode?
  8. Whether any radio nRF9160 interrupt can drive M33 core from idle mode to working mode?

Let me know if you need further details.

Parents
  • Hi,

     

    I was able to go to Idle mode with current consumption of 6uA with MCU ON, modem OFF, RTC OFF.Though this current is more compared to the value given in product specification document.

    Is this measured on a nRF9160 module with B00 marking (production grade silicon)? Engineering devices, with marking BAA, has a marginally higher sleep current.

     

    Is it possible to work on low CPU clock in system ON mode? As of now from nRF9160_PS_v1.20.pdf document CPU clock is 64MHZ. In order to reduce the current consumption I would like to change the clock to 1MHZ or 32KHz when moving to Idle state from active state.

    CPU will always run on 64 MHz, and cannot be changed.

    You can use the RTC (32.768 kHz) peripheral to wake up the CPU in intervals. 

     

    Can ADC peripheral work in Idle mode? The use case is, when system is not doing any modem or radio activity, in order to reduce current we would like to move M33 core  to Idle state and in Idle state we want ADC peripheral to sense the pressure and temperature input continuously as my end product is for gas metering application.

     Yes, it can, but it will cause the IDLE current consumption to rise, as the DMA clock will be kept on in sleep. I would recommend using a timer instance (based on the RTC to ensure low power in sleep) to wake up the CPU if you need periodic ADC measurements.

     

    Can M33 core change to active mode from Idle mode based on ADC interrupt?

    Any event that occurs, which is enabled, can potentially wake up the CPU.

     

    Will DMA work in idle mode?

    Yes, but if kept active (on at all times) in sleep; your current consumption will be in the 1 mA area, depending on which peripheral is requiring it, and if it is asynchronously triggered or not. UARTE without hardware flow control will for instance keep the clock tree running in sleep, as the receiver has no way of knowing when a UART host can potentially send a byte to the nRF.

     

    Can we do pulse capture or pulse counting on a GPIO in Idle mode?

     If you setup a TIMER peripheral in count mode, and use GPIOTE IN channel, and tie that together with DPPI, yes: it is then possible to increment the timer without involving the CPU.

     

    Can timers run in idle mode?If yes can you please guide us how to configure timer to run in Idle mode.

     Yes. You can for instance use a kernel timer: https://docs.zephyrproject.org/1.12.0/kernel/timing/timers.html

    This timer handler will run in interrupt context, so I would recommend that you combine it with some sort of offloading to main context, like a system workqueue:

    https://docs.zephyrproject.org/latest/reference/kernel/threads/workqueue.html

     

    Can we put radio In EDRX mode and M33 core in idle mode?

     Yes, you can. The modem and the application are asynchronous to each other.

     

    Whether any radio nRF9160 interrupt can drive M33 core from idle mode to working mode?

     If there is something that the application should handle, then yes; the modem may trigger an event to the application, which causes a wakeup.

    Kind regards,

    Håkon

Reply
  • Hi,

     

    I was able to go to Idle mode with current consumption of 6uA with MCU ON, modem OFF, RTC OFF.Though this current is more compared to the value given in product specification document.

    Is this measured on a nRF9160 module with B00 marking (production grade silicon)? Engineering devices, with marking BAA, has a marginally higher sleep current.

     

    Is it possible to work on low CPU clock in system ON mode? As of now from nRF9160_PS_v1.20.pdf document CPU clock is 64MHZ. In order to reduce the current consumption I would like to change the clock to 1MHZ or 32KHz when moving to Idle state from active state.

    CPU will always run on 64 MHz, and cannot be changed.

    You can use the RTC (32.768 kHz) peripheral to wake up the CPU in intervals. 

     

    Can ADC peripheral work in Idle mode? The use case is, when system is not doing any modem or radio activity, in order to reduce current we would like to move M33 core  to Idle state and in Idle state we want ADC peripheral to sense the pressure and temperature input continuously as my end product is for gas metering application.

     Yes, it can, but it will cause the IDLE current consumption to rise, as the DMA clock will be kept on in sleep. I would recommend using a timer instance (based on the RTC to ensure low power in sleep) to wake up the CPU if you need periodic ADC measurements.

     

    Can M33 core change to active mode from Idle mode based on ADC interrupt?

    Any event that occurs, which is enabled, can potentially wake up the CPU.

     

    Will DMA work in idle mode?

    Yes, but if kept active (on at all times) in sleep; your current consumption will be in the 1 mA area, depending on which peripheral is requiring it, and if it is asynchronously triggered or not. UARTE without hardware flow control will for instance keep the clock tree running in sleep, as the receiver has no way of knowing when a UART host can potentially send a byte to the nRF.

     

    Can we do pulse capture or pulse counting on a GPIO in Idle mode?

     If you setup a TIMER peripheral in count mode, and use GPIOTE IN channel, and tie that together with DPPI, yes: it is then possible to increment the timer without involving the CPU.

     

    Can timers run in idle mode?If yes can you please guide us how to configure timer to run in Idle mode.

     Yes. You can for instance use a kernel timer: https://docs.zephyrproject.org/1.12.0/kernel/timing/timers.html

    This timer handler will run in interrupt context, so I would recommend that you combine it with some sort of offloading to main context, like a system workqueue:

    https://docs.zephyrproject.org/latest/reference/kernel/threads/workqueue.html

     

    Can we put radio In EDRX mode and M33 core in idle mode?

     Yes, you can. The modem and the application are asynchronous to each other.

     

    Whether any radio nRF9160 interrupt can drive M33 core from idle mode to working mode?

     If there is something that the application should handle, then yes; the modem may trigger an event to the application, which causes a wakeup.

    Kind regards,

    Håkon

Children
No Data
Related