<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: DMA SPI controlled SSEL signal using linked list on LPC54102 in LPC Microcontrollers</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/DMA-SPI-controlled-SSEL-signal-using-linked-list-on-LPC54102/m-p/684619#M27582</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hey &lt;A class="jx-jive-macro-user" href="https://community.nxp.com/people/jeremyzhou"&gt;jeremyzhou&lt;/A&gt;‌,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for the quick response.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;These are the relevant part for the SPI and DMA&lt;/P&gt;&lt;P&gt;&amp;nbsp;LPC_SPI1-&amp;gt;TXCTRL=(((SPIM_XFER_OPTION_SIZE(8) |SPIM_XFER_OPTION_EOT) &amp;lt;&amp;lt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;16) | SPI_TXDATCTL_DEASSERT_ALL) &amp;amp; ~SPI_TXDATCTL_EOT;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Chip_SPIM_AssertSSEL(LPC_SPI1, 0);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//Linked List&lt;/P&gt;&lt;P&gt;//Command for the slave&lt;/P&gt;&lt;P&gt;DMA_CHDESC_T dmaSPISTxDescArray[3] __attribute__ ((aligned(16)));&lt;BR /&gt;DMA_CHDESC_T dmaSPISRxDescArray[3] __attribute__ ((aligned(16)));&lt;/P&gt;&lt;P&gt;uint8_t command[4]={0x03,0x03,0x03,0x03};&lt;/P&gt;&lt;P&gt;dmaSPISTxDescArray[0].source = DMA_ADDR(command) + 4-1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISTxDescArray[0].dest = DMA_ADDR(&amp;amp;LPC_SPI1-&amp;gt;TXDAT);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISTxDescArray[0].next = DMA_ADDR(&amp;amp;dmaSPISTxDescArray[1]); &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISTxDescArray[0].xfercfg = DMA_XFERCFG_CFGVALID |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_SWTRIG&amp;nbsp; | &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_RELOAD|&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_WIDTH_8 | DMA_XFERCFG_SRCINC_1 |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_DSTINC_0 | DMA_XFERCFG_XFERCOUNT(4);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISRxDescArray[0].source = DMA_ADDR(&amp;amp;LPC_SPI1-&amp;gt;RXDAT);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISRxDescArray[0].dest = DMA_ADDR(command) + 4-1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISRxDescArray[0].next =&amp;nbsp; DMA_ADDR(&amp;amp;dmaSPISRxDescArray[1]); &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISRxDescArray[0].xfercfg = DMA_XFERCFG_CFGVALID |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_SWTRIG&amp;nbsp; |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_RELOAD|&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_WIDTH_8 | DMA_XFERCFG_DSTINC_1 |&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_SRCINC_0 | DMA_XFERCFG_XFERCOUNT(4);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;uint32_t deassertSSel = LPC_SPI1-&amp;gt;TXCTRL | SPI_TXDATCTL_DEASSERTNUM_SSEL(0);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;dmaSPISTxDescArray[1].source = DMA_ADDR(&amp;amp;deassertSSel);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISTxDescArray[1].dest = DMA_ADDR(&amp;amp;LPC_SPI1-&amp;gt;TXDATCTL);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISTxDescArray[1].next = DMA_ADDR(&amp;amp;dmaSPISTxDescArray[2]);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISTxDescArray[1].xfercfg = DMA_XFERCFG_CFGVALID |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_SWTRIG&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;DMA_XFERCFG_RELOAD|&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_WIDTH_32 | DMA_XFERCFG_SRCINC_0 |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_DSTINC_0 |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_XFERCOUNT(1);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISRxDescArray[1].source = DMA_ADDR(&amp;amp;LPC_SPI1-&amp;gt;TXDATCTL);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISRxDescArray[1].dest = DMA_ADDR(&amp;amp;deassertSSel);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISRxDescArray[1].next = DMA_ADDR(&amp;amp;dmaSPISRxDescArray[2]);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISRxDescArray[1].xfercfg = DMA_XFERCFG_CFGVALID |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_SWTRIG&amp;nbsp; | //DMA_XFERCFG_SETINTA |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_RELOAD|&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_WIDTH_32| DMA_XFERCFG_DSTINC_0 |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_SRCINC_0 |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_XFERCOUNT(1);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;uint32_t assertSSEL = (((SPIM_XFER_OPTION_SIZE(8) |SPIM_XFER_OPTION_EOT) &amp;lt;&amp;lt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;16) | SPI_TXDATCTL_DEASSERT_ALL) &amp;amp; ~SPI_TXDATCTL_EOT;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; assertSSEL = &amp;nbsp;&amp;nbsp; assertSSEL &amp;amp; (SPI_TXDATCTL_CTRLMASK &amp;amp; ~SPI_TXDATCTL_DEASSERTNUM_SSEL(0));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISTxDescArray[2].source = DMA_ADDR(&amp;amp;assertSSEL);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISTxDescArray[2].dest =&amp;nbsp; DMA_ADDR(&amp;amp;LPC_SPI1-&amp;gt;TXCTRL);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISTxDescArray[2].next =&amp;nbsp; DMA_ADDR(&amp;amp;dmaSPISTxDescArray[3]);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISTxDescArray[2].xfercfg = DMA_XFERCFG_CFGVALID |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_SWTRIG&amp;nbsp; | &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_RELOAD|&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_WIDTH_32 | DMA_XFERCFG_SRCINC_0 |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_DSTINC_0 |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_XFERCOUNT(1);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISRxDescArray[2].source = DMA_ADDR(&amp;amp;LPC_SPI1-&amp;gt;TXCTRL);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISRxDescArray[2].dest = DMA_ADDR(&amp;amp;assertSSEL);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISRxDescArray[2].next =&amp;nbsp; DMA_ADDR(&amp;amp;dmaSPISRxDescArray[3]);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISRxDescArray[2].xfercfg = DMA_XFERCFG_CFGVALID |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_SWTRIG&amp;nbsp; | &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_RELOAD|&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_WIDTH_32| DMA_XFERCFG_DSTINC_0 |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_SRCINC_0 |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_XFERCOUNT(1);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISTxDescArray[3].source = DMA_ADDR(command) + 4-1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISTxDescArray[3].dest = DMA_ADDR(&amp;amp;LPC_SPI1-&amp;gt;TXDAT);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISTxDescArray[3].next = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISTxDescArray[3].xfercfg = DMA_XFERCFG_CFGVALID |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_SWTRIG&amp;nbsp; |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_WIDTH_8 | DMA_XFERCFG_SRCINC_1 |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_DSTINC_0 | DMA_XFERCFG_XFERCOUNT(4);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISRxDescArray[countOfDescriptors+1].source = DMA_ADDR(&amp;amp;LPC_SPI1-&amp;gt;RXDAT);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISRxDescArray[countOfDescriptors+1].dest = DMA_ADDR(command) + 4-1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISRxDescArray[countOfDescriptors+1].next =&amp;nbsp; 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISRxDescArray[countOfDescriptors+1].xfercfg = DMA_XFERCFG_CFGVALID |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_SWTRIG&amp;nbsp; | DMA_XFERCFG_SETINTA |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_WIDTH_8 | DMA_XFERCFG_DSTINC_1 |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_SRCINC_0 | DMA_XFERCFG_XFERCOUNT(4);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaClearChannel(APP_SPI_DMA_TXCH);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaClearChannel(APP_SPI_DMA_RXCH);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Chip_SPI_FlushFifos(LPC_SPI1);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* DMA interrupt */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;NVIC_EnableIRQ(DMA_IRQn);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;while (!Chip_DMA_SetupTranChannel(LPC_DMA, APP_SPI_DMA_RXCH, &amp;amp;dmaSPISRxDescArray[0]));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Chip_DMA_SetupChannelTransfer(LPC_DMA, APP_SPI_DMA_RXCH, dmaSPISRxDescArray[0].xfercfg);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Chip_DMA_EnableChannel(LPC_DMA, APP_SPI_DMA_RXCH);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Chip_DMA_SetValidChannel(LPC_DMA, APP_SPI_DMA_RXCH);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;while (!Chip_DMA_SetupTranChannel(LPC_DMA, APP_SPI_DMA_TXCH, &amp;amp;dmaSPISTxDescArray[0]));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Chip_DMA_SetupChannelTransfer(LPC_DMA, APP_SPI_DMA_TXCH, dmaSPISTxDescArray[0].xfercfg);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Chip_DMA_EnableChannel(LPC_DMA, APP_SPI_DMA_TXCH);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Chip_DMA_SetValidChannel(LPC_DMA, APP_SPI_DMA_TXCH);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I saw that modifiying the registers for asserting the chip select does not have an impact, unless the SPI is disabled and enabled again, but this "destroys" the connection to the DMA&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 06 Jul 2017 06:54:47 GMT</pubDate>
    <dc:creator>praveenthpra</dc:creator>
    <dc:date>2017-07-06T06:54:47Z</dc:date>
    <item>
      <title>DMA SPI controlled SSEL signal using linked list on LPC54102</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/DMA-SPI-controlled-SSEL-signal-using-linked-list-on-LPC54102/m-p/684617#M27580</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;LPC, configured as master, is communicating using DMA and SPI to a peripheral.&lt;/P&gt;&lt;P&gt;Master passes a command to the slave and the slave returns some data.&lt;/P&gt;&lt;P&gt;I use linked list descriptors for the whole communication.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If i want to send a second command from the master, the peripheral requires a SSEL signal.&lt;/P&gt;&lt;P&gt;Using DMA (with linked list) and setting the peripheral registers for a new SSEL signal seems to not work&lt;/P&gt;&lt;P&gt;(Remark: Using DMA (with linked list) and setting the peripheral registers for "end of transfer" bit does work)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Are there any restrictions regarding controlling the SSEL signal via linked list in a DMA transfer.&lt;/P&gt;&lt;P&gt;Are there any other solutions to control the SSEL signal?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Jul 2017 07:57:15 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/DMA-SPI-controlled-SSEL-signal-using-linked-list-on-LPC54102/m-p/684617#M27580</guid>
      <dc:creator>praveenthpra</dc:creator>
      <dc:date>2017-07-05T07:57:15Z</dc:date>
    </item>
    <item>
      <title>Re: DMA SPI controlled SSEL signal using linked list on LPC54102</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/DMA-SPI-controlled-SSEL-signal-using-linked-list-on-LPC54102/m-p/684618#M27581</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi &lt;A _jive_internal="true" data-content-finding="Community" data-userid="295944" data-username="praveenthpra" href="https://community.nxp.com/people/praveenthpra"&gt;Praveenth Pra&lt;/A&gt;,&lt;/P&gt;&lt;DIV style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"&gt;&lt;SPAN style="background-color: #ffffff;"&gt;Thank you for your interest in NXP Semiconductor products and&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"&gt;&lt;SPAN style="background-color: #ffffff;"&gt;the opportunity to serve you.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"&gt;&lt;SPAN style="background-color: #ffffff;"&gt;I was wondering if you can share your demo code and some screenshots of the SSEL signal.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"&gt;&lt;SPAN style="background-color: #ffffff;"&gt;It will help me to investigate this issue.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"&gt;Have a great day,&lt;/DIV&gt;&lt;P&gt;TIC&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 06 Jul 2017 02:55:43 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/DMA-SPI-controlled-SSEL-signal-using-linked-list-on-LPC54102/m-p/684618#M27581</guid>
      <dc:creator>jeremyzhou</dc:creator>
      <dc:date>2017-07-06T02:55:43Z</dc:date>
    </item>
    <item>
      <title>Re: DMA SPI controlled SSEL signal using linked list on LPC54102</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/DMA-SPI-controlled-SSEL-signal-using-linked-list-on-LPC54102/m-p/684619#M27582</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hey &lt;A class="jx-jive-macro-user" href="https://community.nxp.com/people/jeremyzhou"&gt;jeremyzhou&lt;/A&gt;‌,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for the quick response.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;These are the relevant part for the SPI and DMA&lt;/P&gt;&lt;P&gt;&amp;nbsp;LPC_SPI1-&amp;gt;TXCTRL=(((SPIM_XFER_OPTION_SIZE(8) |SPIM_XFER_OPTION_EOT) &amp;lt;&amp;lt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;16) | SPI_TXDATCTL_DEASSERT_ALL) &amp;amp; ~SPI_TXDATCTL_EOT;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Chip_SPIM_AssertSSEL(LPC_SPI1, 0);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//Linked List&lt;/P&gt;&lt;P&gt;//Command for the slave&lt;/P&gt;&lt;P&gt;DMA_CHDESC_T dmaSPISTxDescArray[3] __attribute__ ((aligned(16)));&lt;BR /&gt;DMA_CHDESC_T dmaSPISRxDescArray[3] __attribute__ ((aligned(16)));&lt;/P&gt;&lt;P&gt;uint8_t command[4]={0x03,0x03,0x03,0x03};&lt;/P&gt;&lt;P&gt;dmaSPISTxDescArray[0].source = DMA_ADDR(command) + 4-1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISTxDescArray[0].dest = DMA_ADDR(&amp;amp;LPC_SPI1-&amp;gt;TXDAT);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISTxDescArray[0].next = DMA_ADDR(&amp;amp;dmaSPISTxDescArray[1]); &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISTxDescArray[0].xfercfg = DMA_XFERCFG_CFGVALID |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_SWTRIG&amp;nbsp; | &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_RELOAD|&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_WIDTH_8 | DMA_XFERCFG_SRCINC_1 |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_DSTINC_0 | DMA_XFERCFG_XFERCOUNT(4);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISRxDescArray[0].source = DMA_ADDR(&amp;amp;LPC_SPI1-&amp;gt;RXDAT);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISRxDescArray[0].dest = DMA_ADDR(command) + 4-1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISRxDescArray[0].next =&amp;nbsp; DMA_ADDR(&amp;amp;dmaSPISRxDescArray[1]); &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISRxDescArray[0].xfercfg = DMA_XFERCFG_CFGVALID |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_SWTRIG&amp;nbsp; |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_RELOAD|&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_WIDTH_8 | DMA_XFERCFG_DSTINC_1 |&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_SRCINC_0 | DMA_XFERCFG_XFERCOUNT(4);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;uint32_t deassertSSel = LPC_SPI1-&amp;gt;TXCTRL | SPI_TXDATCTL_DEASSERTNUM_SSEL(0);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;dmaSPISTxDescArray[1].source = DMA_ADDR(&amp;amp;deassertSSel);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISTxDescArray[1].dest = DMA_ADDR(&amp;amp;LPC_SPI1-&amp;gt;TXDATCTL);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISTxDescArray[1].next = DMA_ADDR(&amp;amp;dmaSPISTxDescArray[2]);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISTxDescArray[1].xfercfg = DMA_XFERCFG_CFGVALID |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_SWTRIG&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;DMA_XFERCFG_RELOAD|&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_WIDTH_32 | DMA_XFERCFG_SRCINC_0 |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_DSTINC_0 |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_XFERCOUNT(1);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISRxDescArray[1].source = DMA_ADDR(&amp;amp;LPC_SPI1-&amp;gt;TXDATCTL);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISRxDescArray[1].dest = DMA_ADDR(&amp;amp;deassertSSel);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISRxDescArray[1].next = DMA_ADDR(&amp;amp;dmaSPISRxDescArray[2]);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISRxDescArray[1].xfercfg = DMA_XFERCFG_CFGVALID |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_SWTRIG&amp;nbsp; | //DMA_XFERCFG_SETINTA |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_RELOAD|&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_WIDTH_32| DMA_XFERCFG_DSTINC_0 |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_SRCINC_0 |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_XFERCOUNT(1);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;uint32_t assertSSEL = (((SPIM_XFER_OPTION_SIZE(8) |SPIM_XFER_OPTION_EOT) &amp;lt;&amp;lt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;16) | SPI_TXDATCTL_DEASSERT_ALL) &amp;amp; ~SPI_TXDATCTL_EOT;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; assertSSEL = &amp;nbsp;&amp;nbsp; assertSSEL &amp;amp; (SPI_TXDATCTL_CTRLMASK &amp;amp; ~SPI_TXDATCTL_DEASSERTNUM_SSEL(0));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISTxDescArray[2].source = DMA_ADDR(&amp;amp;assertSSEL);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISTxDescArray[2].dest =&amp;nbsp; DMA_ADDR(&amp;amp;LPC_SPI1-&amp;gt;TXCTRL);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISTxDescArray[2].next =&amp;nbsp; DMA_ADDR(&amp;amp;dmaSPISTxDescArray[3]);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISTxDescArray[2].xfercfg = DMA_XFERCFG_CFGVALID |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_SWTRIG&amp;nbsp; | &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_RELOAD|&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_WIDTH_32 | DMA_XFERCFG_SRCINC_0 |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_DSTINC_0 |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_XFERCOUNT(1);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISRxDescArray[2].source = DMA_ADDR(&amp;amp;LPC_SPI1-&amp;gt;TXCTRL);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISRxDescArray[2].dest = DMA_ADDR(&amp;amp;assertSSEL);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISRxDescArray[2].next =&amp;nbsp; DMA_ADDR(&amp;amp;dmaSPISRxDescArray[3]);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISRxDescArray[2].xfercfg = DMA_XFERCFG_CFGVALID |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_SWTRIG&amp;nbsp; | &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_RELOAD|&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_WIDTH_32| DMA_XFERCFG_DSTINC_0 |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_SRCINC_0 |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_XFERCOUNT(1);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISTxDescArray[3].source = DMA_ADDR(command) + 4-1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISTxDescArray[3].dest = DMA_ADDR(&amp;amp;LPC_SPI1-&amp;gt;TXDAT);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISTxDescArray[3].next = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISTxDescArray[3].xfercfg = DMA_XFERCFG_CFGVALID |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_SWTRIG&amp;nbsp; |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_WIDTH_8 | DMA_XFERCFG_SRCINC_1 |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_DSTINC_0 | DMA_XFERCFG_XFERCOUNT(4);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISRxDescArray[countOfDescriptors+1].source = DMA_ADDR(&amp;amp;LPC_SPI1-&amp;gt;RXDAT);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISRxDescArray[countOfDescriptors+1].dest = DMA_ADDR(command) + 4-1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISRxDescArray[countOfDescriptors+1].next =&amp;nbsp; 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaSPISRxDescArray[countOfDescriptors+1].xfercfg = DMA_XFERCFG_CFGVALID |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_SWTRIG&amp;nbsp; | DMA_XFERCFG_SETINTA |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_WIDTH_8 | DMA_XFERCFG_DSTINC_1 |&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_XFERCFG_SRCINC_0 | DMA_XFERCFG_XFERCOUNT(4);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaClearChannel(APP_SPI_DMA_TXCH);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmaClearChannel(APP_SPI_DMA_RXCH);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Chip_SPI_FlushFifos(LPC_SPI1);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* DMA interrupt */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;NVIC_EnableIRQ(DMA_IRQn);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;while (!Chip_DMA_SetupTranChannel(LPC_DMA, APP_SPI_DMA_RXCH, &amp;amp;dmaSPISRxDescArray[0]));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Chip_DMA_SetupChannelTransfer(LPC_DMA, APP_SPI_DMA_RXCH, dmaSPISRxDescArray[0].xfercfg);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Chip_DMA_EnableChannel(LPC_DMA, APP_SPI_DMA_RXCH);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Chip_DMA_SetValidChannel(LPC_DMA, APP_SPI_DMA_RXCH);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;while (!Chip_DMA_SetupTranChannel(LPC_DMA, APP_SPI_DMA_TXCH, &amp;amp;dmaSPISTxDescArray[0]));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Chip_DMA_SetupChannelTransfer(LPC_DMA, APP_SPI_DMA_TXCH, dmaSPISTxDescArray[0].xfercfg);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Chip_DMA_EnableChannel(LPC_DMA, APP_SPI_DMA_TXCH);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Chip_DMA_SetValidChannel(LPC_DMA, APP_SPI_DMA_TXCH);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I saw that modifiying the registers for asserting the chip select does not have an impact, unless the SPI is disabled and enabled again, but this "destroys" the connection to the DMA&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 06 Jul 2017 06:54:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/DMA-SPI-controlled-SSEL-signal-using-linked-list-on-LPC54102/m-p/684619#M27582</guid>
      <dc:creator>praveenthpra</dc:creator>
      <dc:date>2017-07-06T06:54:47Z</dc:date>
    </item>
    <item>
      <title>Re: DMA SPI controlled SSEL signal using linked list on LPC54102</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/DMA-SPI-controlled-SSEL-signal-using-linked-list-on-LPC54102/m-p/684620#M27583</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi &lt;SPAN class=""&gt;&lt;A _jive_internal="true" class="" data-content-finding="Community" data-userid="295944" data-username="praveenthpra" href="https://community.nxp.com/people/praveenthpra"&gt;Praveenth Pra,&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;Thanks for your reply.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;I still have one point that need you to clarify.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;In my opinion, the SSEL will keep active automatically before the end-of-transfer. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;I also didn't find the kind of operation to set the SSEL signal active in the periph_spis_dma demo in the LPCOpen libarary.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Have a great day,&lt;BR /&gt;TIC&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 07 Jul 2017 04:16:41 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/DMA-SPI-controlled-SSEL-signal-using-linked-list-on-LPC54102/m-p/684620#M27583</guid>
      <dc:creator>jeremyzhou</dc:creator>
      <dc:date>2017-07-07T04:16:41Z</dc:date>
    </item>
  </channel>
</rss>

