<?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>Speed up SPI Burst Reads?</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/2620/speed-up-spi-burst-reads</link><description>I&amp;#39;m running SPI master (spi_master_tx_rx) at 4MHz for multi byte burst reads. As seen in the attached screenshot there are 5.5&amp;#181;s delays between the bytes. The delays increase my CPU active time and therefore costing energy. 
 I&amp;#39;ve read about the double</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 26 Oct 2017 23:08:41 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/2620/speed-up-spi-burst-reads" /><item><title>RE: Speed up SPI Burst Reads?</title><link>https://devzone.nordicsemi.com/thread/10347?ContentTypeID=1</link><pubDate>Thu, 26 Oct 2017 23:08:41 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:672d493a-be5b-4120-93a9-7828ed0e8d1c</guid><dc:creator>faikab</dc:creator><description>&lt;p&gt;This is SPI is indeed much faster, is it part of any SDK?&lt;/p&gt;
&lt;p&gt;My only problem is i usually need to transmit  and receive different amount of data which i was able to do with the SPI provided in SDK 11 but it was to slow for my LCD, with this SPI i fail to be able to read registers from my LCD as it expects a command to be transmitted and then it replies with the values of several register so it is unequal flow of data and if dummy bytes getting transmitted meanwhile to the LCD then it will interrupt its reply.  is there an easy workaround or should i just modify your driver?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Speed up SPI Burst Reads?</title><link>https://devzone.nordicsemi.com/thread/10350?ContentTypeID=1</link><pubDate>Thu, 21 Jul 2016 10:28:06 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:079ba70a-0f4a-4ac2-b153-92eaafe1743c</guid><dc:creator>Mohamed </dc:creator><description>&lt;p&gt;Hi @vlau&lt;/p&gt;
&lt;p&gt;it&amp;#39;s  Saleae Logic
you can download on official website : &lt;a href="https://www.saleae.com/downloads"&gt;www.saleae.com/downloads&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Speed up SPI Burst Reads?</title><link>https://devzone.nordicsemi.com/thread/10349?ContentTypeID=1</link><pubDate>Mon, 25 May 2015 18:58:32 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5b8df3d2-8fd3-4097-acce-31915e7b7685</guid><dc:creator>vlau</dc:creator><description>&lt;p&gt;Hi bvrm,&lt;/p&gt;
&lt;p&gt;Would you mind telling me the tool you used to capture the SPI signal? it looks great!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Speed up SPI Burst Reads?</title><link>https://devzone.nordicsemi.com/thread/10348?ContentTypeID=1</link><pubDate>Mon, 26 May 2014 13:53:54 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:983fd308-11e3-4597-9437-2a79c6a73cd3</guid><dc:creator>bvrm</dc:creator><description>&lt;p&gt;Hi Torbjørn&lt;/p&gt;
&lt;p&gt;thanks for your example. It works great (even better than mine :p).&lt;/p&gt;
&lt;p&gt;This should be added to the SDK!&lt;/p&gt;
&lt;p&gt;&lt;img src="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/spi_5F00_burst_5F00_read_5F00_scrn_5F00_3.png" alt="spi_burst_read_scrn_3.png" /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Speed up SPI Burst Reads?</title><link>https://devzone.nordicsemi.com/thread/10346?ContentTypeID=1</link><pubDate>Mon, 26 May 2014 12:44:06 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:cbd32031-b1ff-448b-8947-6eb2deea6258</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;Feel free to have a look at the attached SPI driver. It uses the double buffer Håkon mentioned above, and in my experience it should be able to do &amp;#39;gap less&amp;#39; SPI transfer at 4MHz.&lt;/p&gt;
&lt;p&gt;Best regards
Torbjørn&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/SPI-master-example-v1.1.zip"&gt;SPI master example v1.1.zip&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Speed up SPI Burst Reads?</title><link>https://devzone.nordicsemi.com/thread/10345?ContentTypeID=1</link><pubDate>Mon, 26 May 2014 10:16:38 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3c0b3a96-4d9f-4a9f-a175-c35ed2e19e10</guid><dc:creator>bvrm</dc:creator><description>&lt;p&gt;Thanks Håkon.
I think i got it! I could speed up my SPI transfer from about 120µs to 45µs. This reduces my mean current from 1.65 mA to 1.21mA. Fantastic!&lt;/p&gt;
&lt;p&gt;&lt;img src="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/spi_5F00_burst_5F00_read_5F00_scrn_5F00_2.png" alt="spi_burst_read_scrn_2.png" /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Speed up SPI Burst Reads?</title><link>https://devzone.nordicsemi.com/thread/10344?ContentTypeID=1</link><pubDate>Mon, 26 May 2014 09:28:44 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:99f47d90-ef3e-4b47-9393-40369e49cf07</guid><dc:creator>H&amp;#229;kon Alseth</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Since the SPI master is double buffered, you can preload two bytes right after initing the SPI.
In the interrupt, you can add a new byte into the buffer. This will cause the SPI to run back-to-back.
Something like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
spim_init();
NRF_SPI0-&amp;gt;TXD = buf[0];
NRF_SPI0-&amp;gt;TXD = buf[1];
...

void SPI0_TWI0_IRQHandler(void)
{
  if (NRF_SPI0-&amp;gt;EVENTS_READY)
  {
    NRF_SPI0-&amp;gt;EVENTS_READY = 0;
    NRF_SPI0-&amp;gt;TXD = some_data;
    uint8_t ret_data = NRF_SPI0-&amp;gt;RXD;
  }
}

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Best regards
Håkon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>