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

nRF51822 hight current consumption!

Hello, I faced the problem of high power consumption when using a large number of the inner periphery. Currently used:

SPI1 -> Accelerometer, ext. serial memory

TWI0 -> OLED

RTC1 -> FreeRTOS

During debugging the current can reach several tens of mA due to debugger.

But now I need to use the GPIOTE for external event handling. And after initialisation of the GPIOTE channel, current rising up to 5-6 mA. This happen only at configuration with the GPIOTE_CONFIG_MODE_Event.

If GPIOTE isn't used and BLE in ADV mode (without debug mode) the active current is kept within 223 microamps when the device is sleeping.

I try to fix the problem and use QDEC and UART(CTS) to handle the external event but without success(power consumption too high). When I turned off GPIOTE (UART, QDEC) module, the current consumption fall down to 223 uA in sleep mode.

Read links:

devzone.nordicsemi.com/question/1805/current-consumption-when-using-rtc-ppi-and-gpiote

For detail, see video below: YouTube video

Parents
  • It sounds like you have a number of issues.

    I'd recommend you compile and install the beacon application, and look at its current consumption. You could also change the advertising period to 5 seconds so you could easily see the sleep current versus the current when awake and transmitting.

    If the current taken is not low when the nRF51 is sleeping, then you have an issue with the other peripherals on your board, and you need to resolve this first, by fixing your hardware and also possibly by sending commands to those devices to turn them off Though in my experiences most low power devices like accelerometers start in power off or low power mode. However the same may not apply to all your hardware.

    Then once you have satisfactory low power startup, you need to enable your devices one by one, and look at the current, and also send commands to put them back into low power mode, and confirm you know how to control them.

    Note. I had an issue with a OLED which ignores the low power command, and the only way I could get it to shut down was to toggle its reset pin. You may have the same issue.

    GPIOTE interupts may also be part of the problem. On the nRF51 if you select high speed mode by passing "true" during the GPIOTE setup, the current used will be a lot higher.

    Try passing "false" to the GPIOTE interrupt init and see if this helps. Note. this will slow down the response of the GPIOTE so it may no longer work with your peripherals, but this is a limitation of the nRF51 and you may need to use the nRF52 if you can't use slow speed GPIOTE interrupts.

    I see you have already noticed that the current consumption is higher when the UART is turn on. I would disable the NRF LOG if you are using it, as I find that using the logging (via the UART) takes lots of current.

    You may also need to shut down the SPI and I2C busses completely, but personally, I have not found an issue with this. I know the nRF52 has better power management and automatically powers down interfaces after you have used them. But personally I'm not seeing any serious current issues when using the SPI driver.

Reply
  • It sounds like you have a number of issues.

    I'd recommend you compile and install the beacon application, and look at its current consumption. You could also change the advertising period to 5 seconds so you could easily see the sleep current versus the current when awake and transmitting.

    If the current taken is not low when the nRF51 is sleeping, then you have an issue with the other peripherals on your board, and you need to resolve this first, by fixing your hardware and also possibly by sending commands to those devices to turn them off Though in my experiences most low power devices like accelerometers start in power off or low power mode. However the same may not apply to all your hardware.

    Then once you have satisfactory low power startup, you need to enable your devices one by one, and look at the current, and also send commands to put them back into low power mode, and confirm you know how to control them.

    Note. I had an issue with a OLED which ignores the low power command, and the only way I could get it to shut down was to toggle its reset pin. You may have the same issue.

    GPIOTE interupts may also be part of the problem. On the nRF51 if you select high speed mode by passing "true" during the GPIOTE setup, the current used will be a lot higher.

    Try passing "false" to the GPIOTE interrupt init and see if this helps. Note. this will slow down the response of the GPIOTE so it may no longer work with your peripherals, but this is a limitation of the nRF51 and you may need to use the nRF52 if you can't use slow speed GPIOTE interrupts.

    I see you have already noticed that the current consumption is higher when the UART is turn on. I would disable the NRF LOG if you are using it, as I find that using the logging (via the UART) takes lots of current.

    You may also need to shut down the SPI and I2C busses completely, but personally, I have not found an issue with this. I know the nRF52 has better power management and automatically powers down interfaces after you have used them. But personally I'm not seeing any serious current issues when using the SPI driver.

Children
No Data
Related