<?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>Nordic SDK QSPI driver call</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/63754/nordic-sdk-qspi-driver-call</link><description>Hi all, 
 We had implemented Nordic QSPI using &amp;quot;nrf_drv_qspi_write&amp;quot; and &amp;quot;nrf_drv_qspi_read&amp;quot; operation , however I am seeing for page to write in flash of 4096 bytes with 512 bytes of QSPI write size limitation its taking 8.6 milli sec , when many streams</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 03 Aug 2020 14:03:01 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/63754/nordic-sdk-qspi-driver-call" /><item><title>RE: Nordic SDK QSPI driver call</title><link>https://devzone.nordicsemi.com/thread/262827?ContentTypeID=1</link><pubDate>Mon, 03 Aug 2020 14:03:01 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:de346c80-1e74-410a-a818-f4d5293f076c</guid><dc:creator>haakonsh</dc:creator><description>&lt;p&gt;You need to answer this one: &lt;br /&gt;&lt;a href="https://devzone.nordicsemi.com/support-private/support/253073#permalink=580347"&gt;https://devzone.nordicsemi.com/support-private/support/253073#permalink=580347&lt;/a&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Nordic SDK QSPI driver call</title><link>https://devzone.nordicsemi.com/thread/262092?ContentTypeID=1</link><pubDate>Wed, 29 Jul 2020 06:07:49 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0c5798b0-2af9-481b-bb80-7a893e30eacc</guid><dc:creator>ARPITHA CHANDRASHEKAR</dc:creator><description>&lt;p&gt;This is what we tried to modify nrfx_qspi_driver file . PLs check.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;#include &amp;lt;nrfx.h&amp;gt;&lt;/div&gt;
&lt;div&gt;#if NRFX_CHECK(NRFX_QSPI_ENABLED)&lt;/div&gt;
&lt;div&gt;#include &amp;lt;nrfx_qspi.h&amp;gt;&lt;/div&gt;
&lt;div&gt;volatile uint8_t ISR_flag&amp;nbsp; =0;&lt;br /&gt;/**&lt;br /&gt;&amp;nbsp;* @brief Command byte used to read status register.&lt;br /&gt;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;*/&lt;br /&gt;#define QSPI_STD_CMD_RDSR 0x05&lt;/div&gt;
&lt;div&gt;/**&lt;br /&gt;&amp;nbsp;* @brief Byte used to mask status register and retrieve the write-in-progess bit.&lt;br /&gt;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;*/&lt;br /&gt;#define QSPI_MEM_STATUSREG_WIP_Pos 0x01&lt;/div&gt;
&lt;div&gt;/**&lt;br /&gt;&amp;nbsp;* @brief Default time used in timeout function.&lt;br /&gt;&amp;nbsp;*/&lt;br /&gt;#define QSPI_DEF_WAIT_TIME_US 10&lt;/div&gt;
&lt;div&gt;/**&lt;br /&gt;&amp;nbsp;* @brief Default number of tries in timeout function.&lt;br /&gt;&amp;nbsp;*/&lt;br /&gt;#define QSPI_DEF_WAIT_ATTEMPTS 100&lt;/div&gt;
&lt;div&gt;/**&lt;br /&gt;&amp;nbsp; * @brief Control block - driver instance local data.&lt;br /&gt;&amp;nbsp; */&lt;br /&gt;typedef struct&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrfx_qspi_handler_t handler;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&amp;lt; Handler. */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrfx_drv_state_t&amp;nbsp;&amp;nbsp;&amp;nbsp; state;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&amp;lt; Driver state. */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; volatile bool&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; interrupt_driven; /**&amp;lt; Information if the current operation is performed and is interrupt-driven. */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; void *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p_context;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&amp;lt; Driver context used in interrupt. */&lt;br /&gt;} qspi_control_block_t;&lt;/div&gt;
&lt;div&gt;static qspi_control_block_t m_cb;&lt;/div&gt;
&lt;div&gt;static nrfx_err_t qspi_task_perform(nrf_qspi_task_t task)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Wait for peripheral&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (m_cb.interrupt_driven)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return NRFX_ERROR_BUSY;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_qspi_event_clear(NRF_QSPI, NRF_QSPI_EVENT_READY);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (m_cb.handler)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_cb.interrupt_driven = true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_qspi_int_enable(NRF_QSPI, NRF_QSPI_INT_READY_MASK);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; ISR_flag =0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_qspi_task_trigger(NRF_QSPI, task);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (m_cb.handler == NULL)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (!nrf_qspi_event_check(NRF_QSPI, NRF_QSPI_EVENT_READY))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {};&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(!ISR_flag);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return NRFX_SUCCESS;&lt;br /&gt;}&lt;/div&gt;
&lt;div&gt;static bool qspi_pins_configure(nrf_qspi_pins_t const * p_config)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Check if the user set meaningful values to struct fields. If not, return false.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ((p_config-&amp;gt;sck_pin == NRF_QSPI_PIN_NOT_CONNECTED) ||&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (p_config-&amp;gt;csn_pin == NRF_QSPI_PIN_NOT_CONNECTED) ||&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (p_config-&amp;gt;io0_pin == NRF_QSPI_PIN_NOT_CONNECTED) ||&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (p_config-&amp;gt;io1_pin == NRF_QSPI_PIN_NOT_CONNECTED))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_qspi_pins_set(NRF_QSPI, p_config);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;}&lt;/div&gt;
&lt;div&gt;nrfx_err_t nrfx_qspi_init(nrfx_qspi_config_t const * p_config,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrfx_qspi_handler_t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; handler,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p_context)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRFX_ASSERT(p_config);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (m_cb.state != NRFX_DRV_STATE_UNINITIALIZED)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return NRFX_ERROR_INVALID_STATE;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!qspi_pins_configure(&amp;amp;p_config-&amp;gt;pins))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return NRFX_ERROR_INVALID_PARAM;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_qspi_xip_offset_set(NRF_QSPI, p_config-&amp;gt;xip_offset);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_qspi_ifconfig0_set(NRF_QSPI, &amp;amp;p_config-&amp;gt;prot_if);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_qspi_ifconfig1_set(NRF_QSPI, &amp;amp;p_config-&amp;gt;phy_if);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_cb.interrupt_driven = false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_cb.handler = handler;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_cb.p_context = p_context;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* QSPI interrupt is disabled because the device should be enabled in polling mode (wait for activate&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; task event ready)*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_qspi_int_disable(NRF_QSPI, NRF_QSPI_INT_READY_MASK);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (handler)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRFX_IRQ_PRIORITY_SET(QSPI_IRQn, p_config-&amp;gt;irq_priority);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRFX_IRQ_ENABLE(QSPI_IRQn);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_cb.state = NRFX_DRV_STATE_INITIALIZED;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_qspi_enable(NRF_QSPI);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_qspi_event_clear(NRF_QSPI, NRF_QSPI_EVENT_READY);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_qspi_task_trigger(NRF_QSPI, NRF_QSPI_TASK_ACTIVATE);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Waiting for the peripheral to activate&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool result;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRFX_WAIT_FOR(nrf_qspi_event_check(NRF_QSPI, NRF_QSPI_EVENT_READY),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; QSPI_DEF_WAIT_ATTEMPTS,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; QSPI_DEF_WAIT_TIME_US,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!result)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return NRFX_ERROR_TIMEOUT;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return NRFX_SUCCESS;&lt;br /&gt;}&lt;/div&gt;
&lt;div&gt;nrfx_err_t nrfx_qspi_cinstr_xfer(nrf_qspi_cinstr_conf_t const * p_config,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void const *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p_tx_buffer,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p_rx_buffer)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRFX_ASSERT(m_cb.state != NRFX_DRV_STATE_UNINITIALIZED);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (m_cb.interrupt_driven)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return NRFX_ERROR_BUSY;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_qspi_event_clear(NRF_QSPI, NRF_QSPI_EVENT_READY);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* In some cases, only opcode should be sent. To prevent execution, set function code is&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * surrounded by an if.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (p_tx_buffer)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_qspi_cinstrdata_set(NRF_QSPI, p_config-&amp;gt;length, p_tx_buffer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* modify begin by Leo, 2020-06-28,not need to disable interrupt if no use it*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(m_cb.handler)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_qspi_int_disable(NRF_QSPI, NRF_QSPI_INT_READY_MASK);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* modify end by Leo, 2020-06-28 */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_qspi_cinstr_transfer_start(NRF_QSPI, p_config);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool result;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRFX_WAIT_FOR(nrf_qspi_event_check(NRF_QSPI, NRF_QSPI_EVENT_READY),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; QSPI_DEF_WAIT_ATTEMPTS,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; QSPI_DEF_WAIT_TIME_US,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!result)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // This timeout should never occur when WIPWAIT is not active, since in this&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // case the QSPI peripheral should send the command immediately, without any&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // waiting for previous write to complete.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRFX_ASSERT(p_config-&amp;gt;wipwait);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return NRFX_ERROR_TIMEOUT;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_qspi_event_clear(NRF_QSPI, NRF_QSPI_EVENT_READY);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* modify begin by Leo, 2020-06-28 not need to disable interrupt if no use it*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(m_cb.handler)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_qspi_int_enable(NRF_QSPI, NRF_QSPI_INT_READY_MASK);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* modify end by Leo, 2020-06-28 */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (p_rx_buffer)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_qspi_cinstrdata_get(NRF_QSPI, p_config-&amp;gt;length, p_rx_buffer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return NRFX_SUCCESS;&lt;br /&gt;}&lt;/div&gt;
&lt;div&gt;nrfx_err_t nrfx_qspi_cinstr_quick_send(uint8_t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; opcode,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_qspi_cinstr_len_t length,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void const *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p_tx_buffer)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_qspi_cinstr_conf_t config = NRFX_QSPI_DEFAULT_CINSTR(opcode, length);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return nrfx_qspi_cinstr_xfer(&amp;amp;config, p_tx_buffer, NULL);&lt;br /&gt;}&lt;/div&gt;
&lt;div&gt;nrfx_err_t nrfx_qspi_mem_busy_check(void)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrfx_err_t ret_code;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint8_t status_value = 0;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_qspi_cinstr_conf_t const config =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRFX_QSPI_DEFAULT_CINSTR(QSPI_STD_CMD_RDSR,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRF_QSPI_CINSTR_LEN_2B);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ret_code = nrfx_qspi_cinstr_xfer(&amp;amp;config, &amp;amp;status_value, &amp;amp;status_value);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (ret_code != NRFX_SUCCESS)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return ret_code;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ((status_value &amp;amp; QSPI_MEM_STATUSREG_WIP_Pos) != 0x00)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return NRFX_ERROR_BUSY;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return NRFX_SUCCESS;&lt;br /&gt;}&lt;/div&gt;
&lt;div&gt;void nrfx_qspi_uninit(void)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRFX_ASSERT(m_cb.state != NRFX_DRV_STATE_UNINITIALIZED);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_qspi_int_disable(NRF_QSPI, NRF_QSPI_INT_READY_MASK);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_qspi_task_trigger(NRF_QSPI, NRF_QSPI_TASK_DEACTIVATE);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Workaround for nRF52840 anomaly 122: Current consumption is too high.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(volatile uint32_t *)0x40029054ul = 1ul;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_qspi_disable(NRF_QSPI);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRFX_IRQ_DISABLE(QSPI_IRQn);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_qspi_event_clear(NRF_QSPI, NRF_QSPI_EVENT_READY);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_cb.state = NRFX_DRV_STATE_UNINITIALIZED;&lt;br /&gt;}&lt;/div&gt;
&lt;div&gt;nrfx_err_t nrfx_qspi_write(void const * p_tx_buffer,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; size_t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tx_buffer_length,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dst_address)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRFX_ASSERT(m_cb.state != NRFX_DRV_STATE_UNINITIALIZED);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRFX_ASSERT(p_tx_buffer != NULL);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!nrfx_is_in_ram(p_tx_buffer))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return NRFX_ERROR_INVALID_ADDR;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_qspi_write_buffer_set(NRF_QSPI, p_tx_buffer, tx_buffer_length, dst_address);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return qspi_task_perform(NRF_QSPI_TASK_WRITESTART);&lt;/div&gt;
&lt;div&gt;}&lt;/div&gt;
&lt;div&gt;nrfx_err_t nrfx_qspi_read(void *&amp;nbsp;&amp;nbsp; p_rx_buffer,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; size_t&amp;nbsp;&amp;nbsp; rx_buffer_length,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t src_address)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRFX_ASSERT(m_cb.state != NRFX_DRV_STATE_UNINITIALIZED);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRFX_ASSERT(p_rx_buffer != NULL);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!nrfx_is_in_ram(p_rx_buffer))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return NRFX_ERROR_INVALID_ADDR;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_qspi_read_buffer_set(NRF_QSPI, p_rx_buffer, rx_buffer_length, src_address);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return qspi_task_perform(NRF_QSPI_TASK_READSTART);&lt;br /&gt;}&lt;/div&gt;
&lt;div&gt;nrfx_err_t nrfx_qspi_erase(nrf_qspi_erase_len_t length,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; start_address)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRFX_ASSERT(m_cb.state != NRFX_DRV_STATE_UNINITIALIZED);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_qspi_erase_ptr_set(NRF_QSPI, start_address, length);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return qspi_task_perform(NRF_QSPI_TASK_ERASESTART);&lt;br /&gt;}&lt;/div&gt;
&lt;div&gt;nrfx_err_t nrfx_qspi_chip_erase(void)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return nrfx_qspi_erase(NRF_QSPI_ERASE_LEN_ALL, 0);&lt;br /&gt;}&lt;/div&gt;
&lt;div&gt;void nrfx_qspi_irq_handler(void)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Catch Event ready interrupts&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (nrf_qspi_event_check(NRF_QSPI, NRF_QSPI_EVENT_READY))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_cb.interrupt_driven = false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_qspi_event_clear(NRF_QSPI, NRF_QSPI_EVENT_READY);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ISR_flag = 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_cb.handler(NRFX_QSPI_EVENT_DONE, m_cb.p_context);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Nordic SDK QSPI driver call</title><link>https://devzone.nordicsemi.com/thread/262090?ContentTypeID=1</link><pubDate>Wed, 29 Jul 2020 05:55:36 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:bb31e529-5fe1-41a6-8637-47a8f51de55b</guid><dc:creator>ARPITHA CHANDRASHEKAR</dc:creator><description>&lt;p&gt;Sir, issue is not resolved yet. Are there any settings that has be changed to make it blocking call on sdk config&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Nordic SDK QSPI driver call</title><link>https://devzone.nordicsemi.com/thread/261352?ContentTypeID=1</link><pubDate>Thu, 23 Jul 2020 12:00:05 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:dd259cb2-9fe9-4c20-b0a9-4447e54a5854</guid><dc:creator>haakonsh</dc:creator><description>&lt;p&gt;[quote user="ARPITHA CHANDRASHEKAR"][/quote]&lt;/p&gt;
&lt;p&gt;nrf_drv_qspi_init is failing with below mentioned call back; inside&amp;nbsp;&lt;/p&gt;
&lt;p&gt;init function&amp;nbsp;&lt;/p&gt;
&lt;p&gt;m_cb.interrupt_driven = false; is set to false ; so it crashes when assigned call back.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;What do you mean it&amp;#39;s failing? Where? What&amp;#39;s the error code?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Nordic SDK QSPI driver call</title><link>https://devzone.nordicsemi.com/thread/260975?ContentTypeID=1</link><pubDate>Tue, 21 Jul 2020 11:20:52 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5372fcc8-a496-4a66-b5f1-8f49a0f72e5a</guid><dc:creator>ARPITHA CHANDRASHEKAR</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; Version is&amp;nbsp;&lt;/p&gt;
&lt;div style="background-color:#1e1e1e;color:#d4d4d4;font-family:Consolas, &amp;#39;Courier New&amp;#39;, monospace;font-size:14px;font-weight:normal;line-height:19px;white-space:pre;"&gt;
&lt;div&gt;&lt;span style="color:#d4d4d4;"&gt;nRF5_SDK_15.2.0&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;I also see drivers are updated in nrfx_1.7.2 . Is it latest one ? Could I use nrfx_qspi.c from 1.7.2?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Nordic SDK QSPI driver call</title><link>https://devzone.nordicsemi.com/thread/260856?ContentTypeID=1</link><pubDate>Mon, 20 Jul 2020 15:11:25 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3eac5ef2-c83c-40d8-ac87-adf57b4b9080</guid><dc:creator>haakonsh</dc:creator><description>&lt;p&gt;What SDK are you using?&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Nordic SDK QSPI driver call</title><link>https://devzone.nordicsemi.com/thread/260761?ContentTypeID=1</link><pubDate>Mon, 20 Jul 2020 08:58:24 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0fd98da0-0249-407a-92b8-ccd921027866</guid><dc:creator>ARPITHA CHANDRASHEKAR</dc:creator><description>&lt;p&gt;Can you please post an example of link to an example of how to use qspi call back ? I am seeing qspi_init is crashing when call back is assigned&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Nordic SDK QSPI driver call</title><link>https://devzone.nordicsemi.com/thread/260639?ContentTypeID=1</link><pubDate>Fri, 17 Jul 2020 15:29:10 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:52955a86-14b0-4634-829c-743e8ef6642f</guid><dc:creator>ARPITHA CHANDRASHEKAR</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; nrf_drv_qspi_init is failing with below mentioned call back; inside&amp;nbsp;&lt;/p&gt;
&lt;p&gt;init function&amp;nbsp;&lt;/p&gt;
&lt;p&gt;m_cb.interrupt_driven = false; is set to false ; so it crashes when assigned call back.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Nordic SDK QSPI driver call</title><link>https://devzone.nordicsemi.com/thread/260634?ContentTypeID=1</link><pubDate>Fri, 17 Jul 2020 15:12:20 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:baf30b5e-e507-4cb6-b8a6-682645fcb4c1</guid><dc:creator>ARPITHA CHANDRASHEKAR</dc:creator><description>&lt;p&gt;Basically I am setting even transfer done flag when event ready occurs, and processed after write is over , will be waiting in spi to be completed for it to get set to true.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I will add state machine to diff b/n read/write/erase . But could I check with the above&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Nordic SDK QSPI driver call</title><link>https://devzone.nordicsemi.com/thread/260632?ContentTypeID=1</link><pubDate>Fri, 17 Jul 2020 15:10:19 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c3777d17-df0f-4b15-b81c-fe4a98405b68</guid><dc:creator>ARPITHA CHANDRASHEKAR</dc:creator><description>&lt;p&gt;Hi ,&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; Please check below code.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;void qspi_init_call_back(nrfx_qspi_evt_t event, void *p_context)&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp; if (event == NRFX_QSPI_EVENT_DONE) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; qSpiXferDone = true;&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;/div&gt;
&lt;div&gt;uint32_t nand_flash_qspi_init(void)&lt;br /&gt;{&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t err_code = NAND_SUCCESS;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_drv_qspi_config_t config = QSPI_NAND_FLASH_CONFIG;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; err_code = nrf_drv_qspi_init(&amp;amp;config, qspi_init_call_back, NULL);&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(NRFX_SUCCESS != err_code)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRF_LOG_INFO(&amp;quot;QSPI init error,err_code=%d&amp;quot;,err_code);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return err_code;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_qspi_ifconfig0_set_page_size(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return NRFX_SUCCESS;&lt;br /&gt;}&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;and this is write API&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; eNand_Result ret = NAND_SUCCESS;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t flash_address;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if((size == 0)||(size &amp;gt; 512))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return NAND_PARAM_ERROR;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if((size&amp;amp;0x03) != 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; size = (int)(floor((size+3)/4))*4;&lt;br /&gt;#ifdef PRINTS_OUT&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRF_LOG_INFO(&amp;quot;Size calculated=%d&amp;quot;,size);&lt;br /&gt;#endif&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if((NULL == in_array)||((column&amp;amp;0x03) != 0))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return NAND_PARAM_ERROR;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; flash_address = (column &amp;lt;&amp;lt; 8);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(size &amp;gt;= 4)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(NRFX_SUCCESS != nrf_drv_qspi_write(in_array+4,size-4,flash_address))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRF_LOG_INFO(&amp;quot;QSPI nrf driver error!&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return NAND_NRF_DRIVER_ERROR;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(qSpiXferDone)// prev buffer writing is&amp;#39;nt over skip writing hold buffer to write in next iteration&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCU_HAL_Delay(1);&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Nordic SDK QSPI driver call</title><link>https://devzone.nordicsemi.com/thread/260616?ContentTypeID=1</link><pubDate>Fri, 17 Jul 2020 14:21:57 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:bf968bfa-6f04-4d47-9dcd-fbccdfc12133</guid><dc:creator>haakonsh</dc:creator><description>&lt;ol&gt;
&lt;li&gt;&amp;quot;&lt;span&gt;You&amp;#39;ll have to put a SW state-machine on top of the driver in order to know what source triggered the EVENTS_READY signal.&amp;quot;&lt;br /&gt;Monitor what function last called read/write/erase/custom instr and you know what the source of the&amp;nbsp;NRFX_QSPI_EVENT_DONE&amp;nbsp; was.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;quot;Do we need to set handler based Interrupt for qspi?&amp;quot;&lt;br /&gt;What do you mean? as opposed to what?&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Nordic SDK QSPI driver call</title><link>https://devzone.nordicsemi.com/thread/260609?ContentTypeID=1</link><pubDate>Fri, 17 Jul 2020 14:02:25 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:58e92bda-45f3-4e97-abc7-a7fedfca1cc8</guid><dc:creator>ARPITHA CHANDRASHEKAR</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 1. Is there a way we could differentiate between read/write/erase.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;2. Do we need to set handler based Interrupt for qspi?&lt;/p&gt;
&lt;p&gt;Right now&amp;nbsp;NRFX_QSPI_CONFIG_IRQ_PRIORITY 6 .&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Nordic SDK QSPI driver call</title><link>https://devzone.nordicsemi.com/thread/260608?ContentTypeID=1</link><pubDate>Fri, 17 Jul 2020 14:00:17 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b999b637-b6b6-4569-9665-9a5309e457d5</guid><dc:creator>haakonsh</dc:creator><description>&lt;p&gt;No, I&amp;#39;m afraid not. It&amp;#39;s based on the HW signal called&amp;nbsp;&lt;a title="EVENTS_READY" href="https://infocenter.nordicsemi.com/topic/ps_nrf52840/qspi.html?cp=4_0_0_5_18_9_5#register.EVENTS_READY"&gt;EVENTS_READY&lt;/a&gt;&amp;nbsp;that is generated on any transfer completion.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;You&amp;#39;ll have to put a SW state-machine on top of the driver in order to know what source triggered the EVENTS_READY signal.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Nordic SDK QSPI driver call</title><link>https://devzone.nordicsemi.com/thread/260600?ContentTypeID=1</link><pubDate>Fri, 17 Jul 2020 13:34:54 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:34cc62bb-1875-4b8d-ad76-7f8bee3796e2</guid><dc:creator>ARPITHA CHANDRASHEKAR</dc:creator><description>&lt;p&gt;Is there any way we could differentiate between read/write/erase ? I would want to have only for write&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Nordic SDK QSPI driver call</title><link>https://devzone.nordicsemi.com/thread/260598?ContentTypeID=1</link><pubDate>Fri, 17 Jul 2020 13:33:56 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:eaa7ba9f-7813-46ba-bcbb-0b122dedf82e</guid><dc:creator>ARPITHA CHANDRASHEKAR</dc:creator><description>&lt;p&gt;its nRRF52840.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Nordic SDK QSPI driver call</title><link>https://devzone.nordicsemi.com/thread/260597?ContentTypeID=1</link><pubDate>Fri, 17 Jul 2020 13:33:03 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a4d6f7bc-fb8a-406e-83c4-401ad39c49a2</guid><dc:creator>haakonsh</dc:creator><description>&lt;p&gt;The callback is called with the&amp;nbsp;&lt;span&gt;NRFX_QSPI_EVENT_DONE event&lt;/span&gt; when either a read, write, erase, or custom instruction has finished.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Do note that the nRF52820 (as you&amp;#39;ve listed as the product) does not have a QSPI peripheral, only the nRF52840 and nRF5340 has one.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Nordic SDK QSPI driver call</title><link>https://devzone.nordicsemi.com/thread/260588?ContentTypeID=1</link><pubDate>Fri, 17 Jul 2020 13:06:11 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:59ccadac-753b-4fe9-a815-2ac690ea1060</guid><dc:creator>ARPITHA CHANDRASHEKAR</dc:creator><description>&lt;p style="color:#000000;font-family:Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;letter-spacing:normal;margin-top:0px;text-align:start;text-indent:0px;text-transform:none;white-space:normal;"&gt;Hi,&lt;/p&gt;
&lt;p style="color:#000000;font-family:Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;"&gt;void qspi_init_call_back(nrfx_qspi_evt_t event, void *p_context)&lt;br /&gt;{&lt;br /&gt;if (event == NRFX_QSPI_EVENT_DONE) {&lt;br /&gt;//add flag to distr&lt;br /&gt;adi_osal_SemPost(file_update_task_evt_sem);&lt;br /&gt;}&lt;br /&gt;}&lt;/p&gt;
&lt;p style="color:#000000;font-family:Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;"&gt;uint32_t nand_flash_qspi_init(void)&lt;br /&gt;{&lt;br /&gt;//create semaphore&lt;br /&gt;adi_osal_SemCreate(&amp;amp;file_update_task_evt_sem, 0);&lt;/p&gt;
&lt;p style="color:#000000;font-family:Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;"&gt;&lt;br /&gt;uint32_t err_code = NAND_SUCCESS;&lt;br /&gt;nrf_drv_qspi_config_t config = QSPI_NAND_FLASH_CONFIG;&lt;/p&gt;
&lt;p style="color:#000000;font-family:Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;"&gt;err_code = nrf_drv_qspi_init(&amp;amp;config, qspi_init_call_back, NULL);&lt;/p&gt;
&lt;p style="color:#000000;font-family:Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;"&gt;if(NRFX_SUCCESS != err_code)&lt;br /&gt;{&lt;br /&gt;NRF_LOG_INFO(&amp;quot;QSPI init error,err_code=%d&amp;quot;,err_code);&lt;br /&gt;return err_code;&lt;br /&gt;}&lt;br /&gt;nrf_qspi_ifconfig0_set_page_size(1);&lt;br /&gt;return NRFX_SUCCESS;&lt;br /&gt;}&lt;/p&gt;
&lt;p style="color:#000000;font-family:Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;"&gt;&lt;/p&gt;
&lt;p style="color:#000000;font-family:Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;"&gt;In this case , call back will be called any operation read/write/erase?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Nordic SDK QSPI driver call</title><link>https://devzone.nordicsemi.com/thread/260176?ContentTypeID=1</link><pubDate>Wed, 15 Jul 2020 13:53:08 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8a1f78f3-ef68-4975-8da7-92145b7b2b8c</guid><dc:creator>haakonsh</dc:creator><description>[quote user="ARPITHA CHANDRASHEKAR"]err_code = nrf_drv_qspi_init(&amp;amp;config, NULL, NULL);[/quote]
&lt;p&gt;&amp;nbsp;The second argument lacks a pointer to an event handler, so this driver runs in blocking mode.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Nordic SDK QSPI driver call</title><link>https://devzone.nordicsemi.com/thread/260084?ContentTypeID=1</link><pubDate>Wed, 15 Jul 2020 09:44:59 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b71e8cee-528d-4105-be26-24bd0f8a1080</guid><dc:creator>ARPITHA CHANDRASHEKAR</dc:creator><description>&lt;p style="margin-top:0px;"&gt;Also,&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; We are using&amp;nbsp;MT29F4G01ABBFDWB, MT29F4G01ABBFD12 flash series .&lt;/p&gt;
&lt;p&gt;Array performance&lt;br /&gt;&amp;ndash; 83 MHz clock frequency (MAX)&lt;br /&gt;&amp;ndash; Page read: 25&amp;mu;s (MAX) with on-die ECC disabled;&lt;br /&gt;135&amp;mu;s (MAX) with on-die ECC enabled&lt;br /&gt;&amp;ndash; Page program: 200&amp;mu;s (TYP) with on-die ECC disabled;&lt;br /&gt;240&amp;mu;s (TYP) with on-die ECC enabled&lt;br /&gt;&amp;ndash; Block erase: 2ms (TYP)&lt;/p&gt;
&lt;p&gt;What i have profiled time to write single page of 4096 bytes is 8.6 milli sec. and we have streams running at 100 to 500 Hz , 50 Hz , also we have combination.&lt;/p&gt;
&lt;p&gt;Another observation is with ECC being enabled , since i believe it takes more time to write streams hang faster. So i wanted to know if driver is blocking call, because we have system which needs to support multiple sensors&amp;nbsp; and interrupts.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Nordic SDK QSPI driver call</title><link>https://devzone.nordicsemi.com/thread/260081?ContentTypeID=1</link><pubDate>Wed, 15 Jul 2020 09:38:01 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9f18009a-701b-4ae6-bca3-41e040dee52c</guid><dc:creator>ARPITHA CHANDRASHEKAR</dc:creator><description>&lt;p&gt;Hi ,&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; Please find the driver code init.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;#define QSPI_NAND_FLASH_CONFIG&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;br /&gt;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .xip_offset&amp;nbsp; = 0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .pins = {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .sck_pin&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = QSPI_NAND_FLASH_SCK_PIN,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .csn_pin&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = QSPI_NAND_FLASH_CSN_PIN,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .io0_pin&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = QSPI_NAND_FLASH_IO0_PIN,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .io1_pin&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = QSPI_NAND_FLASH_IO1_PIN,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .io2_pin&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = QSPI_NAND_FLASH_IO2_PIN,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .io3_pin&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = QSPI_NAND_FLASH_IO3_PIN,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .irq_priority&amp;nbsp;&amp;nbsp; = (uint8_t)NRFX_QSPI_CONFIG_IRQ_PRIORITY,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .prot_if = {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .readoc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = QSPI_IFCONFIG0_READOC_READ4O,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .writeoc&amp;nbsp;&amp;nbsp;&amp;nbsp; = QSPI_IFCONFIG0_WRITEOC_PP4O,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .addrmode&amp;nbsp;&amp;nbsp; = (nrf_qspi_addrmode_t)NRFX_QSPI_CONFIG_ADDRMODE,&amp;nbsp;&amp;nbsp; \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .dpmconfig&amp;nbsp; = false,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .phy_if = {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .sck_freq&amp;nbsp;&amp;nbsp; = NRF_QSPI_FREQ_32MDIV1, \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .sck_delay&amp;nbsp; = (uint8_t)NRFX_QSPI_CONFIG_SCK_DELAY,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .spi_mode&amp;nbsp;&amp;nbsp; = (nrf_qspi_spi_mode_t)NRFX_QSPI_CONFIG_MODE,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .dpmen&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = false&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \&lt;br /&gt;}&lt;br /&gt;/*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select: 1=512byte,0=256byte.&lt;br /&gt;*/&lt;br /&gt;__STATIC_INLINE void nrf_qspi_ifconfig0_set_page_size(uint8_t select)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(select == 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRF_QSPI-&amp;gt;IFCONFIG0 &amp;amp;= 0xffffefff;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRF_QSPI-&amp;gt;IFCONFIG0 |= 0x00001000;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;uint32_t nand_flash_qspi_init(void)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t err_code = NAND_SUCCESS;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_drv_qspi_config_t config = QSPI_NAND_FLASH_CONFIG;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; err_code = nrf_drv_qspi_init(&amp;amp;config, NULL, NULL);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(NRFX_SUCCESS != err_code)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRF_LOG_INFO(&amp;quot;QSPI init error,err_code=%d&amp;quot;,err_code);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return err_code;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrf_qspi_ifconfig0_set_page_size(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return NRFX_SUCCESS;&lt;br /&gt;}&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Nordic SDK QSPI driver call</title><link>https://devzone.nordicsemi.com/thread/260077?ContentTypeID=1</link><pubDate>Wed, 15 Jul 2020 09:28:46 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:494f33ce-bd12-482c-93ed-d711ae09202f</guid><dc:creator>haakonsh</dc:creator><description>&lt;p&gt;What&amp;#39;s the write speed of the flash?&lt;br /&gt;&lt;br /&gt;The read and write functions are blocking or non-blocking depending on whether you supplied an event handler to&amp;nbsp;&lt;a title="nrfx_qspi_init" href="https://infocenter.nordicsemi.com/topic/sdk_nrf5_v17.0.0/group__nrfx__qspi.html?cp=7_1_6_8_0_26_1_10#gae619b2eaf2d9691f03b20c6b204e9f28"&gt;nrfx_qspi_init&lt;/a&gt;&amp;nbsp;or not.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>