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

Several problems with the qspi library function

Hi,Master:

1.The timing of the underlying  nrfx_qspi_write(...)  function is:a. Send 05 to check if the wip bit is 0. (Here, if wip is not 0, will it always detect until wip is 0?)

2. Is the register ADDRCONF  used for what purpose?

3.the nrfx_qspi_init(...) function will trigger the status register timing, and the task is activated(As shown below). How does the peripheral determine that it is activated successfully? What does this function do internally to the underlying layer? 

nrf_qspi_task_trigger(NRF_QSPI, NRF_QSPI_TASK_ACTIVATE);

// Waiting for the peripheral to activate
bool result;
NRFX_WAIT_FOR(nrf_qspi_event_check(NRF_QSPI, NRF_QSPI_EVENT_READY),
QSPI_DEF_WAIT_ATTEMPTS,
QSPI_DEF_WAIT_TIME_US,
result);

4.Is there a bug in the nrf_qspi_cinstrdata_get(...) function? When the length is greater than NRF_QSPI_CINSTR_LEN_5B, the data of <= NRF_QSPI_CINSTR_LEN_5B cannot be obtained.So I added the code for the red area

Thanks!

Parents
  • Hi

    1. Just to confirm, you want to know whether the nrfx_qspi_write() function will check and wait for the WIP (write-in-progress) to be done (WIP bit set to 0) before it starts whenever it is called, am I correct? Or are you saying that you've made a change to the code to try and make it that way?

    2. It seems like you're referring to this erratum, where the current consumption won't go down after disabling QSPI due to an internal function that doesn't stop when simply calling the uninit function. The official workaround is to execute the following code before disabling QSPI:

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

    Best regards,

    Simon

Reply
  • Hi

    1. Just to confirm, you want to know whether the nrfx_qspi_write() function will check and wait for the WIP (write-in-progress) to be done (WIP bit set to 0) before it starts whenever it is called, am I correct? Or are you saying that you've made a change to the code to try and make it that way?

    2. It seems like you're referring to this erratum, where the current consumption won't go down after disabling QSPI due to an internal function that doesn't stop when simply calling the uninit function. The official workaround is to execute the following code before disabling QSPI:

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

    Best regards,

    Simon

Children
Related