<?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>Confusion with List in EasyDMA</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/14193/confusion-with-list-in-easydma</link><description>Hi, 
 The samples for using list are BUFFER = 4, but it does not specify is that is the only size that works, and what value do you place on NRF_SPIM0-&amp;gt;TXD.LIST 
 In my case I need a buffer size of 8, and 46 samples. I implemented the following, among</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Wed, 01 Jun 2016 14:22:28 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/14193/confusion-with-list-in-easydma" /><item><title>RE: Confusion with List in EasyDMA</title><link>https://devzone.nordicsemi.com/thread/54228?ContentTypeID=1</link><pubDate>Wed, 01 Jun 2016 14:22:28 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:fc0532e8-7c47-4948-87e3-4bc5dc4d16bc</guid><dc:creator>Antonio</dc:creator><description>&lt;p&gt;Thank you Martin! I will try that. Tien, It worked that way but still I had to have all the interrupts. I used SHORT for time efficiency.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Confusion with List in EasyDMA</title><link>https://devzone.nordicsemi.com/thread/54227?ContentTypeID=1</link><pubDate>Wed, 01 Jun 2016 10:32:24 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:62e63b0e-98d8-452c-9767-bc12daceed9a</guid><dc:creator>Tien</dc:creator><description>&lt;p&gt;Yes, you are right. Using PPI+GPIOTE+TIMER pure periphs will have best power efficiency.
I have thought about it and found SPI CS pin will need a little more tricks.
e.g.If there is no Ext_INT( such as Data_Ready  ) for triggering the transmission, you will need another TIMER CC[x] = 1 to trigger the next transmission and toggle CS pin.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Confusion with List in EasyDMA</title><link>https://devzone.nordicsemi.com/thread/54232?ContentTypeID=1</link><pubDate>Wed, 01 Jun 2016 08:33:52 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1a8ce58f-9ad6-4482-9ba4-92fc4fe3ce92</guid><dc:creator>MartinBL</dc:creator><description>&lt;p&gt;OP mentions that he wants to transfer 46*8 bytes without interrupts, so just for the record, he doesn&amp;#39;t need to use an interrupt to start the next transmission. It can be started using PPI channels and tasks and events, e.g. triggered by a timer or GPIOTE. Then you can use a counter to count the number of completed transmissions (still using PPI and tasks and events) and fire an interrupt after 8 transmissions. &lt;a href="https://github.com/Martinsbl/nrf5-mpu-examples"&gt;Here&lt;/a&gt; are some examples showing how EasyDMA, PPI, GPIOTE, timers, and counters can be used to trigger TWI transmissions from an accelerometer while the CPU is sleeping.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Confusion with List in EasyDMA</title><link>https://devzone.nordicsemi.com/thread/54231?ContentTypeID=1</link><pubDate>Wed, 01 Jun 2016 07:57:04 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f8b656d8-a557-4bac-9e82-78b6fe7be3de</guid><dc:creator>Tien</dc:creator><description>&lt;p&gt;1.You should start the next transmission in IRQHandler, and don&amp;#39;t forget check the PTR boundary.
2.Yes,  if MAXCOUNT is 8, you will get the interrupt after 8 bytes have been sent.&lt;/p&gt;
&lt;p&gt;So, if you need to send 46 bytes 8 times, you can set MAXCNT = 46. Then you start the first transmission , after that you start the next 7 times transmisson in IRQHandler.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Confusion with List in EasyDMA</title><link>https://devzone.nordicsemi.com/thread/54230?ContentTypeID=1</link><pubDate>Wed, 01 Jun 2016 03:26:23 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7e88aa59-849e-48f7-92d9-0fc61cd94969</guid><dc:creator>Antonio</dc:creator><description>&lt;p&gt;Thank you Tien for the comment. When you say that I start the next transmission, is at the interrupt when the END event was triggered?, so in my example, if MAXCOUNT is 8, I will get the interrupt after 8 bytes have been sent and I will just restart for the next batch?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Confusion with List in EasyDMA</title><link>https://devzone.nordicsemi.com/thread/54229?ContentTypeID=1</link><pubDate>Wed, 01 Jun 2016 02:57:45 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0cba9e08-92e2-4c74-a2fd-e85d0c763af3</guid><dc:creator>Tien</dc:creator><description>&lt;p&gt;SPIM doesn&amp;#39;t know how many times it has to repeat. It only understands where the data (PTR) is and how many bytes (MAXCNT) to transfer. And when EasyDMA list is enabled, it will automatic change the PTR for next transmission.
Then you can just start the next transmission without manually change the PTR .&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Confusion with List in EasyDMA</title><link>https://devzone.nordicsemi.com/thread/54226?ContentTypeID=1</link><pubDate>Tue, 31 May 2016 13:39:01 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3ec1223f-bb81-4ac4-a77c-ee920544ec74</guid><dc:creator>Antonio</dc:creator><description>&lt;p&gt;I have done it this way too. What I need is to transmit 46 * 8 bytes without an interrupt. In my example I am doing [8][46] and List = 1 and it does not send the 368 bytes.
How does the SPIM knows that it has to send 46 bytes 8 times or viceversa?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Confusion with List in EasyDMA</title><link>https://devzone.nordicsemi.com/thread/54225?ContentTypeID=1</link><pubDate>Tue, 31 May 2016 06:33:51 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ddce30e3-0c2f-4890-be17-936279dac70a</guid><dc:creator>Tien</dc:creator><description>&lt;p&gt;Hi, Antonio&lt;/p&gt;
&lt;p&gt;The &lt;a href="http://infocenter.nordicsemi.com/topic/com.nordic.infocenter.nrf52832.ps.v1.0/spim.html#register.RXD.LIST"&gt;RXD.LIST&lt;/a&gt; only used to enable/diasble the EasyDMA list.
It means the RXD.PTR will automatic add a offset of RXD.MAXCNT value.&lt;/p&gt;
&lt;p&gt;And EasyDMA List will not check the PTR boundary, you should do the check in SPI_IRQHandler.&lt;/p&gt;
&lt;p&gt;In your case, the config should like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;uint8_t buffer_list[46][8];
RXD.PTR = buffer_list;
RXD.MAXCNT = 8;
RXD.LIST = 1;

SPI_IRQHandler()
{
    if ( RXD.PTR &amp;lt; bufferlist boundary )
       start next transmission.
}
&lt;/code&gt;&lt;/pre&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Confusion with List in EasyDMA</title><link>https://devzone.nordicsemi.com/thread/54224?ContentTypeID=1</link><pubDate>Tue, 31 May 2016 04:28:51 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4e2a2394-cc45-45e4-aac2-6e61f060a7eb</guid><dc:creator>Antonio</dc:creator><description>&lt;p&gt;BTW, I am testing this on a PCA 10040 nrf52 dev board v1.1. Thanks!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>