<?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>SPI high-speed reading</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/50511/spi-high-speed-reading</link><description>Hello, 
 We use NRF52 and the SPI protocol to read the ADS7866. But we are facing a problem when reading at high speed, we want to make one read transaction of 2 Bytes every 5&amp;#181;s ( to achieve a 200KHz ADC ) 
 Before explaining which method was used, there</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Fri, 02 Aug 2019 08:26:25 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/50511/spi-high-speed-reading" /><item><title>RE: SPI high-speed reading</title><link>https://devzone.nordicsemi.com/thread/202054?ContentTypeID=1</link><pubDate>Fri, 02 Aug 2019 08:26:25 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ced90ab9-d76f-495c-a043-a1627503dee9</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;An alternative approach is to use the TIMER, PPI and GPIOTE modules to automate the CS signal and the SPI transactions.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Essentially you set up individual CC (compare capture) registers in the timer to trigger events at different points in time. At the most you have 6 CC registers per timer, meaning you can repeatedly generate up to 6 different events at different points in time.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Two events can be used to clear and set the CS signal (by connecting the TIMER to the GPIOTE module through PPI), and the SPI module can also be triggered in this fashion to allow you to start the SPI transactions at the right points in the sequence.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The SPI buffers will have to be configured in advance so that the data will automatically be read from the RAM when the event from the timer occurs.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Best regards&lt;br /&gt;Torbjørn&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SPI high-speed reading</title><link>https://devzone.nordicsemi.com/thread/201977?ContentTypeID=1</link><pubDate>Thu, 01 Aug 2019 16:43:15 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:445ff55f-d620-4e9d-8465-a34db591144b</guid><dc:creator>hmolesworth</dc:creator><description>&lt;p&gt;You might try a creative solution by spoofing the /CS signal instead of using the real CS which is (usually) provided by the .ss_pin. I&amp;#39;d be inclined to keep the .ss_pin as you have it, but don&amp;#39;t actually connect it to anything, just use it as a &amp;#39;scope trigger while you tune the spoofed /CS. So where does the /CS connection to the ADS7866 come from? The answer is to use the .mosi_pin. The shape of this waveform is now controlled by using (say) a 3-byte Tx buffer which could have the values {0x00, 0x00, 0xFF} for the 16-bit active-low /CS. Use a 2-byte buffer {0x00, 0x0F} for the 12-bit version (assuming MSB first) which only requires 2 bytes. Set .orc to 0xFF. This may work as the .sck_pin can run indefinitely provided /CS remains high (the .mosi pin in your case) and only on the next falling edge will the new conversion start.&lt;/p&gt;
&lt;p&gt;I haven&amp;#39;t tried this, so it may require a little experimentation, let us know if it works :-)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>