QSPI Erratum 122 QSPI power consumption in idle NRF52840

I've noticed I have high power consumption from the QSPI peripheral and have seen various posts on the fix for this relating to Erratum 122. I need some guidance on implementation.

 nRF52840 QSPI Power Consumption  this post explains the problems and the proposed solution:

    *(volatile uint32_t *)0x40029010ul = 1ul;
    *(volatile uint32_t *)0x40029054ul = 1ul;
    nrf_drv_qspi_uninit();

I saw in another post  RE: QSPI high current improvements for anomaly 122 in nrf52840 it mentions  a Zephyr PR where this issue was fixed? (https://github.com/zephyrproject-rtos/zephyr/pull/34405

A couple of questions:

- Why do I see high current draw if there is a fix in Zephyr?

- I've tried implementing the above code snippet and it does reduce current but I guess i have to re-init each time i want to use the qspi? can you provide a minimum example of how i should be doing this init / uninit in latest sdk? 

Parents
  • Hello,

    ''Why do I see high current draw if there is a fix in Zephyr?''

    I am not sure if you apply everything accordingly why the current consumption is high. What is the high current? Are you measuring the current of nRF52840 only here?  How have you measrued te current. Can we show the setup?

    The Errata is very much straight forward. After QSPI has been activated by the use of TASKS_ACTIVATE task the current consumption will be high. Then we have to execute the following code before disabling QSPI. 

    so, the answer to your question ''I've tried implementing the above code snippet and it does reduce current but I guess i have to re-init each time i want to use the qspi?'' is yes.

    
    *(volatile uint32_t *)0x40029010ul = 1ul;
    *(volatile uint32_t *)0x40029054ul = 1ul

  • Hi Kazi

    I got it working thanks. I was a bit unclear about how to include the uninit function but i found it in the nrfx_qspi.h header.

Reply Children
Related