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

UARTE power consumption after shutdown

We've been hunting down an issue there when we call nrf_drv_uart_uninit() we get a high static current which indicates that a clock or peripheral is being left on.

After some work I discovered that:

    nrf_drv_uart_uninit(&m_uart);
      *(volatile uint32_t *)0x40002FFC = 0;
  *(volatile uint32_t *)0x40002FFC;
  *(volatile uint32_t *)0x40002FFC = 1;

Fixes the issue- (I eventually found it from this post:

https://devzone.nordicsemi.com/f/nordic-q-a/53121/uart-low-power-shutdown-issue

However when I check the latest errata (2.0) there is no issue 89. These registers aren't documented anywhere and I would like to know if this bug still exists and also what these registers actually do.

Needless to say the excess current is significant in our application and I would have hoped that the driver did the right thing - clearly it does not. Are you going to fix this in an upcoming SDK?

Parents
  • The 3 lines of code you refer to control the power to the peripheral, and simply does a hard reset of the peripheral. It can be used to return the peripheral to the default power-on state. There is no problem to use this after an uninit.

    Can you provide the detailed chip marking on the nRF52840 ic you have? Also, which peripherals are you using in your application (e.g. uart#, twi#, gpiote, spi#)?

  • Kenneth

    Thanks - I can't read the chip markings because it is in a module. I did however read the part and build code registers from the debugger:

    We are using SDK 16 with Softdevice 140; we are using most of the peripherals: SPI, QSPI, UARTE, TQI,PDM,GPIOTE, NFC, SAADC, WDT.

    I had thought that the SDK included a fix for this power thing (by stopping the UART TX and wiating for it to finish) but this does not appear to be enough.

Reply
  • Kenneth

    Thanks - I can't read the chip markings because it is in a module. I did however read the part and build code registers from the debugger:

    We are using SDK 16 with Softdevice 140; we are using most of the peripherals: SPI, QSPI, UARTE, TQI,PDM,GPIOTE, NFC, SAADC, WDT.

    I had thought that the SDK included a fix for this power thing (by stopping the UART TX and wiating for it to finish) but this does not appear to be enough.

Children
Related