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

Run current/resources with GPIOTE Event nRF52

What system resources are required when using GPIOTE channels (not the PORT event, the other channels)?

I remember on the nrf51822 there was a long-running PAN, fixed in the last release, that HFCLK and 1v2 were always required when any GPIOTE event was active. This made using GPIOTE pin events poor performers for low power operation, hence you usually ended up using the PORT event and some code. With that PAN fixed for the 51822 and not affecting the nRF52 at all, I'm trying to work out whether GPIOTE events are now perfectly usable in low power scenarios.

The manual says 0.1-0.5uA run current with 1 or more GPIOTE channels in input mode, that would be more than fine, unless that's just the extra GPIOTE run current on top of other resources, eg if HFCLK had to run that adds 60uA and would be a disaster!

So what is the lowest run current with 1 or more GPIOTE channels enabled on the nRF52 and can you now properly enter sleep modes with GPIOTE channels in use?

Parents
  • Hi RK

    From my measurement, it seems that GPIOTE IN adds ~8uA to the current consumption when enabled. That is a whole lot better than the nRF51, but still not as specified in the nRF52832 PS. Ill update this thread when I have more information on what internal resources are used when GPIOTE IN is enabled.

  • GPIOTE handles GPIO interrupts. If your application is very current sensitive, then it is better to use GPIOTE PORT event. When you configure low power button in the nrf_drv_gpiote driver you are using GPIOTE PORT event in the background. It has the same functionality as the GPIOTE IN, but the limitation is if two pins are asserted within the same ~10us, then only the first pin is detected. Similarly, if the same pin is asserted twice within the same ~10us, then only one assert is detected. When using softdevice, the ~10us may increase to ~500us. So if you do not need to detect two or more GPIO interrupts within the same ~10us/~500ms, then it is fine to configure low power GPIO interrupt.

Reply
  • GPIOTE handles GPIO interrupts. If your application is very current sensitive, then it is better to use GPIOTE PORT event. When you configure low power button in the nrf_drv_gpiote driver you are using GPIOTE PORT event in the background. It has the same functionality as the GPIOTE IN, but the limitation is if two pins are asserted within the same ~10us, then only the first pin is detected. Similarly, if the same pin is asserted twice within the same ~10us, then only one assert is detected. When using softdevice, the ~10us may increase to ~500us. So if you do not need to detect two or more GPIO interrupts within the same ~10us/~500ms, then it is fine to configure low power GPIO interrupt.

Children
No Data
Related