<?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>NRF52840 SPIM3 : Hardware Chip Select Functionality / SDK Support</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/42682/nrf52840-spim3-hardware-chip-select-functionality-sdk-support</link><description>NRF52840 - SDK 15.0 - Tested with Softdevice and No Softdevice 
 We have an application that requires deterministic execution of a group of SPI transfers over EasyDMA, where NRF is the SPI master. The data is grouped as 16, 16-bit transfers - 32 bytes</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 21 Jan 2019 19:23:06 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/42682/nrf52840-spim3-hardware-chip-select-functionality-sdk-support" /><item><title>RE: NRF52840 SPIM3 : Hardware Chip Select Functionality / SDK Support</title><link>https://devzone.nordicsemi.com/thread/166969?ContentTypeID=1</link><pubDate>Mon, 21 Jan 2019 19:23:06 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4a4fe38b-a809-46c1-bf21-353e819e368a</guid><dc:creator>donbosley</dc:creator><description>&lt;p&gt;Thank you for your help. I&amp;#39;ve been testing a timer and GPIOTE so that&amp;#39;s looking like the route I&amp;#39;ll test.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: NRF52840 SPIM3 : Hardware Chip Select Functionality / SDK Support</title><link>https://devzone.nordicsemi.com/thread/166757?ContentTypeID=1</link><pubDate>Mon, 21 Jan 2019 09:37:11 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0d32be0b-5a8c-40f3-88e3-4ab4a3f0eb01</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;No, using SUSPEND/RESUME will not toggle the CS pin. There is no explicit support for what you want to do in the nRF HW or SDK, but the idea is that you can use PPI to control both SUSPEND/RESUME and a GPIOTE pin used as CS. Possibly combined with a timer or RTC as you may need a delay after toggling CS before the transaction is resumed (depending on the timing requirements of the SPI slave device).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: NRF52840 SPIM3 : Hardware Chip Select Functionality / SDK Support</title><link>https://devzone.nordicsemi.com/thread/166696?ContentTypeID=1</link><pubDate>Mon, 21 Jan 2019 00:34:16 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e0b37ac7-9518-4b74-a631-61ff6516d14e</guid><dc:creator>donbosley</dc:creator><description>&lt;p&gt;Will the SUSPEND / RESUME definitely hardware toggle the CS pin? Or should I plan on forking&amp;nbsp;a GPIO as CS from the same PPI channel as the SUSPEND/RESUME command is coming from?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: NRF52840 SPIM3 : Hardware Chip Select Functionality / SDK Support</title><link>https://devzone.nordicsemi.com/thread/166511?ContentTypeID=1</link><pubDate>Fri, 18 Jan 2019 14:12:31 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ba2c5c2a-ac70-4d4f-9ccf-8e3f5adc4af6</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;1. Yes, the SPIM peripheral always use DMA. But the CPU is still needed to set up transactions and to control the CSN pin (for other instances than SPIM3). When you use very short transactions as in this case (two bytes), then there will be a lot of CPU activity.&lt;/p&gt;
&lt;p&gt;2. Using SPIM3 CSN is handled in HW, but you still need to use the CPU to configure each transaction. Using the driver, I se no other way than configuring separate transaction for each 2 byte (16 bit) transaction. However, it might be possible to use a timer and counter with PPI to suspend the SPI transaction after every two bytes so that you can deassert and assert CSN to ready the slave for the next two bytes. From SPIM chapter in product specification:&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;em&gt;A transaction can be suspended and resumed using the SUSPEND and RESUME tasks, receptively. When the SUSPEND task is triggered the SPI master will complete transmitting and receiving the current ongoing byte before it is suspended.&lt;/em&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>