<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Trouble initializing QSPI when the chip is actually busy</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/68401/trouble-initializing-qspi-when-the-chip-is-actually-busy</link><description>Hi, 
 I noticed that when I initiate a chip-erase on the flash-chip and reset the MCU, I&amp;#39;m getting NRFX_ERROR_TIMEOUT&amp;#39;s on my nrfx_qspi_init(). 
 I found this ticket: https://devzone.nordicsemi.com/f/nordic-q-a/28947/what-does-qspi-activate-task-do 
</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Tue, 05 Jan 2021 08:30:36 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/68401/trouble-initializing-qspi-when-the-chip-is-actually-busy" /><item><title>RE: Trouble initializing QSPI when the chip is actually busy</title><link>https://devzone.nordicsemi.com/thread/287416?ContentTypeID=1</link><pubDate>Tue, 05 Jan 2021 08:30:36 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:71900946-f3e6-4daf-bfb3-d2a91e26c40a</guid><dc:creator>Kenneth</dc:creator><description>&lt;p&gt;I am not aware of any issue, so I guess you will simply have to wait until the chip is ready in this case. I just wanted to make sure that it&amp;#39;s the hardware that is waiting and not the state machine of the driver that was busy in this case.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Trouble initializing QSPI when the chip is actually busy</title><link>https://devzone.nordicsemi.com/thread/287304?ContentTypeID=1</link><pubDate>Mon, 04 Jan 2021 15:37:40 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:dca2ec91-2765-4d1b-89f9-aac26ddb5a1b</guid><dc:creator>J.Hollander</dc:creator><description>&lt;p&gt;That flag is only set when calling qspi_task_perform(), which is not called by nrfx_qspi_init(), nor by nrfx_qspi_cinstr_xfer()&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Trouble initializing QSPI when the chip is actually busy</title><link>https://devzone.nordicsemi.com/thread/281549?ContentTypeID=1</link><pubDate>Tue, 24 Nov 2020 12:48:46 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5696181f-6ec6-4596-aa0d-ea84900d395f</guid><dc:creator>Kenneth</dc:creator><description>&lt;p&gt;You can consider adding another api to nrfx_qspi to force clear the busy bit?&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;void qspi_force_clear_busy(void)
{
    m_cb.is_busy = false;
}&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Trouble initializing QSPI when the chip is actually busy</title><link>https://devzone.nordicsemi.com/thread/281081?ContentTypeID=1</link><pubDate>Fri, 20 Nov 2020 11:09:09 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b4a430b6-5c57-4aea-9465-b0f328641057</guid><dc:creator>J.Hollander</dc:creator><description>&lt;p&gt;A full chip-erase takes over a minute, the problem is not that there is no communication. the NRF simply refuses to send out the reset command, because the chip is busy...&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Trouble initializing QSPI when the chip is actually busy</title><link>https://devzone.nordicsemi.com/thread/280413?ContentTypeID=1</link><pubDate>Tue, 17 Nov 2020 15:15:20 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7fcfb07e-11e5-43cf-8b11-cffa7001b1ae</guid><dc:creator>Kenneth</dc:creator><description>&lt;p&gt;I can find in&amp;nbsp;nrfx_qspi_init() that it will wait for the peripheral to activate yes. This delay is configurable (through QSPI_DEF_WAIT_ATTEMPTS and QSPI_DEF_WAIT_TIME_US):&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;static nrfx_err_t qspi_ready_wait(void)
{
    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);
    if (!result)
    {
        return NRFX_ERROR_TIMEOUT;
    }

    return NRFX_SUCCESS;
}&lt;/pre&gt;&lt;/p&gt;
[quote user=""]I their a sensible way to recover the unit without waiting for a full chip-erase. [/quote]
&lt;p&gt;I suggest to check with the vendor on what they recommend in terms of wait time and recovery.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>