<?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>QSPI EVENT_READY</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/87758/qspi-event_ready</link><description>Hello, 
 I&amp;#39;m using the flash MX25L1283 together with the NRF52840. I&amp;#39;ve implemented a new driver for that flash using the nrfx library. Everything works fine ! 
 However, I can&amp;#39;t understand what&amp;#39;s the EVENT_READY. When nrfx_qspi_init() is called, it seems</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Wed, 21 Sep 2022 12:03:10 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/87758/qspi-event_ready" /><item><title>RE: QSPI EVENT_READY</title><link>https://devzone.nordicsemi.com/thread/387285?ContentTypeID=1</link><pubDate>Wed, 21 Sep 2022 12:03:10 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5869080e-a002-43c5-8686-ec46e8d76ff2</guid><dc:creator>Simonr</dc:creator><description>&lt;p&gt;Hi Jiri&lt;/p&gt;
&lt;p&gt;I&amp;#39;m not sure what you do in your project code, or for how long this &amp;quot;loop&amp;quot; is running in your case. Either way, you shouldn&amp;#39;t skip the qspi_ready_wait(). As this ticket is close to half a year old. can you create your own support ticket where you explain what nRF device you&amp;#39;re using, what external flash device this happens in, and&amp;nbsp;what your application code does exactly.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Simon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: QSPI EVENT_READY</title><link>https://devzone.nordicsemi.com/thread/387203?ContentTypeID=1</link><pubDate>Wed, 21 Sep 2022 06:50:34 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9dd14ea7-1f73-4236-a85d-c0510661fc38</guid><dc:creator>Jiri Husak</dc:creator><description>&lt;p&gt;Dear Support,&lt;/p&gt;
&lt;p&gt;I&amp;#39;m facing similar issue. I guess it&amp;#39;s more a lack of documentation. COuld you please confirm that the QSPI peripheral HW is responsible for this 0x05 command loop? I see this to happen at the exact moment I start the QSPI with the ACTIVATE task.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;In the SDK there&amp;nbsp;are calls to&amp;nbsp;qspi_ready_wait() inside the&amp;nbsp;nrfx_qspi_init(), however those calls are not polling the lines, only the status bit. The memory seems to be is polled by the HW even if I completely skip the&amp;nbsp;&lt;span&gt;qspi_ready_wait() call.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/pastedimage1663742806667v1.png" alt=" " /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Could you please confirm&amp;nbsp;such behavior?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;In our case this is not really fortunate as we normally disable the MCU during Flash Erase (could be long) and then reinitilize the QSPI after typical flash erase time. Of course it may happen that the flash is not ready on that time, so we see long time of such super loop and in parallel the NRF driver asserts on the timeouts (which are hardcoded in the driver).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Other thing is that if we want to poll the memory on our own, the&amp;nbsp;nrfx_qspi_cinstr_xfer() function is asseting on&amp;nbsp;NRFX_ASSERT(p_config-&amp;gt;wipwait); even if we configure the&amp;nbsp;wipwait inside&amp;nbsp;nrf_qspi_cinstr_conf_t as false (due to timeouted init funciton).&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Do you see a solution for our use case?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Many thanks in advance for any hint.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Jiri&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: QSPI EVENT_READY</title><link>https://devzone.nordicsemi.com/thread/367512?ContentTypeID=1</link><pubDate>Thu, 12 May 2022 05:58:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:52d81692-a995-4cdb-9ecd-d38cb8526e60</guid><dc:creator>Simonr</dc:creator><description>&lt;p&gt;Hi Rémy&lt;/p&gt;
&lt;p&gt;I would recommend making sure the QSPI device is &amp;quot;awake&amp;quot; before initializing it, then putting it back to sleep by setting it in standby mode from the nRF is you want it in that mode. In the nrfx_qspi driver this is indeed how the QSPI peripherals are initialized and activated, but you&amp;#39;re free to modify the driver if you want to I.E. run a &amp;quot;Release deep power mode&amp;quot; instruction as part of the init() function to make sure the device wakes up.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Simon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: QSPI EVENT_READY</title><link>https://devzone.nordicsemi.com/thread/367302?ContentTypeID=1</link><pubDate>Wed, 11 May 2022 07:09:25 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:535ae1d8-a363-4a5a-b9cc-bb2e686f4759</guid><dc:creator>Remy</dc:creator><description>&lt;p&gt;Hi Simon,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thanks for your reply.&lt;/p&gt;
&lt;p&gt;I&amp;#39;m currently using SDK 15.0.0 and we plan to&amp;nbsp;upgrade to the SDK15.3.0 soon.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;When the flash I&amp;#39;m using is in deep standby mode, all instructions are ignored expect &amp;quot;RDP&amp;quot; (Release deep power mode). It means that the read status&amp;nbsp;register command will be ignored. So, if the flash is in deep standby mode, the&amp;nbsp;&lt;span&gt;nrfx_qspi_init() command will always return a timeout error.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Is there any way to change that activation process behavior&amp;nbsp;or not ?&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;This is the piece of code to wake-up the flash :&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;static int wake()
{
    const nrf_qspi_cinstr_conf_t cinstr_cfg = {
        .opcode = 0xAB,
        .length = NRF_QSPI_CINSTR_LEN_1B,
        .io2_level = true,
        .io3_level = true,
        .wipwait = true,
        .wren = false};

    // Wake
    ret_code_t err_code = nrfx_qspi_cinstr_xfer(&amp;amp;cinstr_cfg, NULL, NULL);
    APP_ERROR_CHECK(err_code);

    return 0;
}&lt;/pre&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;If I set &amp;quot;wipwait&amp;quot; to true, the flash will ignore the read status register command and return a timeout error.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I was afraid that once the command is sent, we have the same poll and wait mechanism that during initialization, but it&amp;#39;s not the case right ? Otherwise, I&amp;#39;m not able to wake-up the flash, since after sending the wake-up command, I can&amp;#39;t touch the CS line during 30us.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I think main question here, is concerning that poll and wait mechanism ,is that set in stone that the command 0x05 is used ? No configuration possible ?&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Best regards&lt;/p&gt;
&lt;p&gt;R&amp;eacute;my&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: QSPI EVENT_READY</title><link>https://devzone.nordicsemi.com/thread/367289?ContentTypeID=1</link><pubDate>Wed, 11 May 2022 06:12:49 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5170a56b-73c4-408f-8983-54a8c7683136</guid><dc:creator>Simonr</dc:creator><description>&lt;p&gt;Hi&amp;nbsp;&lt;span&gt;Rémy&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;What SDK and SDK version are you using for development? The nrfx_qspi_init() functionn configures the peripheral and its interrupts to activate it. During the activation process, the internal clocks are started and the QSPI peripheral tries to read the status byte to read the busy bit. This is done in a simple poll and wait mechanism.&lt;/p&gt;
&lt;p&gt;Can you show me the custom WIP_WAIT function so I can take a look at what you&amp;#39;re doing exactly?&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Simon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>