<?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>LPC Microcontrollers中的主题 Re: LPC11U6x - DMA and SSP</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U6x-DMA-and-SSP/m-p/1211382#M43562</link>
    <description>&lt;P&gt;Just in case some someone trying to do I2S on these chips ever stumbles across this... here's the code I got working.&lt;/P&gt;</description>
    <pubDate>Wed, 13 Jan 2021 23:58:01 GMT</pubDate>
    <dc:creator>chrispflieger</dc:creator>
    <dc:date>2021-01-13T23:58:01Z</dc:date>
    <item>
      <title>LPC11U6x - DMA and SSP</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U6x-DMA-and-SSP/m-p/1044854#M40563</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I've been banging my head on this for a couple weeks now...&lt;/P&gt;&lt;P&gt;I've followed Jeremy's Ping Pong ADC code, and that's what I want - just read in all the words from the MISO and store into to buffers. &lt;STRONG&gt;I don't care what is transmitted, it just needs to be continuous&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;I actually got it transmitting from the buffers, but after the first eight words, it goes off the rails and transmits out of order (which is fine).&lt;/P&gt;&lt;P&gt;I can't get it to receive - if I call the SW trigger on the receiver, it transmits &lt;STRONG&gt;nine&lt;/STRONG&gt; words, then seems to get stuck in the ISR with a IRQ's that won't clear. It fills buffer B with "6101" (tracer of the second word &lt;STRONG&gt;transmitted&lt;/STRONG&gt;)&lt;/P&gt;&lt;P&gt;What am I doing wrong?&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;#define I2S_BUFFER_SIZE &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 16U&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;#define DMA_PDM_TX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAREQ_SSP0_TX&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;#define DMA_PDM_RX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SSP0_RX_DMA&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;#define PDM_SPI&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SSP0&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;/*&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;* Local Data&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;static uint16_t incoming_buffer_a[I2S_BUFFER_SIZE];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;static uint16_t incoming_buffer_b[I2S_BUFFER_SIZE];&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;// we're going to set them both up to ping-pong.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;static DMA_CHDESC_T dmaTXDesc[2] __attribute__ ((aligned(16)));&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;static DMA_CHDESC_T dmaRXDesc[2] __attribute__ ((aligned(16)));&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;callback_pointer_t callback_ptr;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;/*&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;* Global Function Definitions&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;void DMA_IRQHandler(void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_DMA_ClearActiveIntAChannel(LPC_DMA, DMA_PDM_TX);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_DMA_ClearActiveIntAChannel(LPC_DMA, DMA_PDM_RX);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (callback_ptr)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; callback_ptr(incoming_buffer_a);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Rrror interrupt on channel 0? */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ((Chip_DMA_GetIntStatus(LPC_DMA) &amp;amp; DMA_INTSTAT_ACTIVEERRINT) != 0)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* This shouldn't happen for this simple DMA example, so set the LED&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; to indicate an error occurred. This is the correct method to clear&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; an abort. */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_DMA_DisableChannel(LPC_DMA, DMA_PDM_TX);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_DMA_AbortChannel(LPC_DMA, DMA_PDM_TX);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_DMA_ClearErrorIntChannel(LPC_DMA, DMA_PDM_TX);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_DMA_EnableChannel(LPC_DMA, DMA_PDM_TX);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;void i2s_init(callback_pointer_t callback)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMA_CHDESC_T Initial_DMA_RX_Descriptor;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMA_CHDESC_T Initial_DMA_TX_Descriptor;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int i;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; callback_ptr = callback;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // we have no select line&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_IOCON_PinMuxSet(LPC_IOCON, SPI_SCK_PORT,&amp;nbsp; SPI_SCK_PIN,&amp;nbsp;&amp;nbsp; SPI_SCK_FUNCT&amp;nbsp; | IOCON_MODE_INACT | IOCON_DIGMODE_EN);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_IOCON_PinMuxSet(LPC_IOCON, SPI_MOSI_PORT, SPI_MOSI_PIN,&amp;nbsp; SPI_MOSI_FUNCT | IOCON_MODE_INACT | IOCON_DIGMODE_EN);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_IOCON_PinMuxSet(LPC_IOCON, SPI_MISO_PORT, SPI_MISO_PIN,&amp;nbsp; SPI_MISO_FUNCT | IOCON_MODE_INACT | IOCON_DIGMODE_EN);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // setup some markers to see what gets transmitted, and if anything is received.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i = 0; i &amp;lt; I2S_BUFFER_SIZE; i++)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; incoming_buffer_a[i] = 0x6000 + 0x100 * i + i;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; incoming_buffer_b[i] = 0xB000 + 0x100 * i + i;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // setup SPI&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Chip_SSP_Init(PDM_SPI);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_SSP_SetFormat(PDM_SPI, SSP_BITS_16, SSP_FRAMEFORMAT_SPI, SSP_CLOCK_MODE0);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_SSP_Set_Mode(PDM_SPI, SSP_MODE_MASTER);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_SSP_SetBitRate(PDM_SPI, PDM_BITRATE);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PDM_SPI-&amp;gt;CR1 = 3;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // added to set some mysterious bits that are &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // in the manual, but not in the driver code.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // it didn't help. (or hurt)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_SSP_Enable(PDM_SPI);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // turn on the DMA&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Chip_DMA_Init(LPC_DMA);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Chip_DMA_Enable(LPC_DMA);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Chip_DMA_SetSRAMBase(LPC_DMA, DMA_ADDR(Chip_DMA_Table));&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NVIC_SetPriority(DMA_IRQ_NUM, DMA_INTERRUPT_PRIORITY);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_DMA_ClearActiveIntAChannel(LPC_DMA, DMA_PDM_TX);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_DMA_ClearActiveIntAChannel(LPC_DMA, DMA_PDM_RX);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // first the receiver&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dmaRXDesc[0].source&amp;nbsp; = DMA_ADDR(&amp;amp;PDM_SPI-&amp;gt;DR);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dmaRXDesc[0].dest&amp;nbsp;&amp;nbsp;&amp;nbsp; = DMA_ADDR(incoming_buffer_a + sizeof(incoming_buffer_a) - 1);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dmaRXDesc[0].next&amp;nbsp;&amp;nbsp;&amp;nbsp; = DMA_ADDR(&amp;amp;dmaRXDesc[1]);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dmaRXDesc[0].xfercfg = DMA_XFERCFG_CFGVALID&amp;nbsp; | DMA_XFERCFG_SETINTA&amp;nbsp; |&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMA_XFERCFG_SRCINC_0&amp;nbsp; | DMA_XFERCFG_DSTINC_1 |&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMA_XFERCFG_WIDTH_16&amp;nbsp; | DMA_XFERCFG_RELOAD&amp;nbsp;&amp;nbsp; |&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMA_CFG_CHPRIORITY(2) | DMA_XFERCFG_XFERCOUNT(I2S_BUFFER_SIZE);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dmaRXDesc[1].source&amp;nbsp; = DMA_ADDR(&amp;amp;PDM_SPI-&amp;gt;DR);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dmaRXDesc[1].dest&amp;nbsp;&amp;nbsp;&amp;nbsp; = DMA_ADDR(incoming_buffer_b + sizeof(incoming_buffer_b) - 1);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dmaRXDesc[1].next&amp;nbsp;&amp;nbsp;&amp;nbsp; = DMA_ADDR(&amp;amp;dmaRXDesc[0]);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dmaRXDesc[1].xfercfg = dmaRXDesc[0].xfercfg;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // I honestly don't understand the point of this, but I'm following the example.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Initial_DMA_RX_Descriptor.source&amp;nbsp; = dmaRXDesc[0].source;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Initial_DMA_RX_Descriptor.dest&amp;nbsp;&amp;nbsp;&amp;nbsp; = dmaRXDesc[0].dest;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Initial_DMA_RX_Descriptor.next&amp;nbsp;&amp;nbsp;&amp;nbsp; = dmaRXDesc[0].next;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Initial_DMA_RX_Descriptor.xfercfg = dmaRXDesc[0].xfercfg;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_DMA_EnableChannel(LPC_DMA, DMA_PDM_RX);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_DMA_EnableIntChannel(LPC_DMA, DMA_PDM_RX);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* &lt;SPAN style="font-family: andale mono, monospace;"&gt;Chip_DMA_SetupChannelConfig&lt;/SPAN&gt;() seems to either do nothing, or in some cases break the process */&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Chip_DMA_SetupChannelConfig(LPC_DMA, DMA_PDM_RX,&amp;nbsp; DMA_CFG_HWTRIGEN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | DMA_CFG_TRIGBURST_BURST |&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMA_CFG_TRIGTYPE_EDGE | DMA_CFG_TRIGPOL_LOW&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMA_CFG_BURSTPOWER_1&amp;nbsp; | DMA_CFG_CHPRIORITY(0));&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_DMA_SetupTranChannel(LPC_DMA, DMA_PDM_RX, &amp;amp;Initial_DMA_RX_Descriptor);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_DMA_SetupChannelTransfer(LPC_DMA, DMA_PDM_RX, dmaRXDesc[0].xfercfg);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_DMA_SetValidChannel(LPC_DMA, DMA_PDM_RX);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // now the transmitter&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dmaTXDesc[0].source&amp;nbsp; = DMA_ADDR(incoming_buffer_a + I2S_BUFFER_SIZE - 1);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dmaTXDesc[0].dest&amp;nbsp;&amp;nbsp;&amp;nbsp; = DMA_ADDR(&amp;amp;PDM_SPI-&amp;gt;DR);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dmaTXDesc[0].next&amp;nbsp;&amp;nbsp;&amp;nbsp; = DMA_ADDR(&amp;amp;dmaTXDesc[1]);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dmaTXDesc[0].xfercfg = DMA_XFERCFG_CFGVALID&amp;nbsp; | DMA_XFERCFG_SETINTA&amp;nbsp; |&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMA_XFERCFG_SRCINC_1&amp;nbsp; | DMA_XFERCFG_DSTINC_0 |&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMA_XFERCFG_WIDTH_16&amp;nbsp; | DMA_XFERCFG_RELOAD&amp;nbsp;&amp;nbsp; |&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMA_CFG_CHPRIORITY(1) | DMA_XFERCFG_XFERCOUNT(I2S_BUFFER_SIZE);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dmaTXDesc[1].source&amp;nbsp; = DMA_ADDR(incoming_buffer_a + I2S_BUFFER_SIZE - 1);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dmaTXDesc[1].dest&amp;nbsp;&amp;nbsp;&amp;nbsp; = DMA_ADDR(&amp;amp;PDM_SPI-&amp;gt;DR);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dmaTXDesc[1].next&amp;nbsp;&amp;nbsp;&amp;nbsp; = DMA_ADDR(&amp;amp;dmaTXDesc[0]);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dmaTXDesc[1].xfercfg = dmaTXDesc[0].xfercfg;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Initial_DMA_TX_Descriptor.source&amp;nbsp; = dmaTXDesc[0].source;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Initial_DMA_TX_Descriptor.dest&amp;nbsp;&amp;nbsp;&amp;nbsp; = dmaTXDesc[0].dest;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Initial_DMA_TX_Descriptor.next&amp;nbsp;&amp;nbsp;&amp;nbsp; = dmaTXDesc[0].next;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Initial_DMA_TX_Descriptor.xfercfg = dmaTXDesc[0].xfercfg;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_DMA_EnableChannel(LPC_DMA, DMA_PDM_TX);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_DMA_DisableIntChannel(LPC_DMA, DMA_PDM_TX);&amp;nbsp;&amp;nbsp;&amp;nbsp; // We don't want a transmitter DMA interrupt.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enabling either of the following lines will break the transmitter. Why ? I don't care. */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Chip_DMA_SetupChannelConfig(LPC_DMA, DMA_PDM_TX, (DMA_XFERCFG_CFGVALID | DMA_XFERCFG_RELOAD | DMA_XFERCFG_SETINTA | DMA_XFERCFG_WIDTH_16 | DMA_XFERCFG_SRCINC_0 | DMA_XFERCFG_DSTINC_1 | DMA_XFERCFG_XFERCOUNT(128)));&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Chip_DMA_SetupChannelConfig(LPC_DMA, DMA_PDM_TX, (DMA_CFG_PERIPHREQEN | DMA_CFG_TRIGBURST_SNGL | DMA_CFG_CHPRIORITY(3)));&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_DMA_SetupTranChannel(LPC_DMA, DMA_PDM_TX, &amp;amp;Initial_DMA_TX_Descriptor);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_DMA_SetupChannelTransfer(LPC_DMA, DMA_PDM_TX, dmaTXDesc[0].xfercfg);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_DMA_SetValidChannel(LPC_DMA, DMA_PDM_TX);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* Enable the DMA IRQ */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;NVIC_EnableIRQ(DMA_IRQn);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // making this call causes the tx to stop, and an endless IRQ loop.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Chip_DMA_SWTriggerChannel(LPC_DMA, DMA_PDM_RX);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// This call is essential&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Chip_DMA_SetTrigChannel(LPC_DMA, DMA_PDM_TX);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: andale mono, monospace;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 02 Jun 2020 15:33:35 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U6x-DMA-and-SSP/m-p/1044854#M40563</guid>
      <dc:creator>chrispflieger</dc:creator>
      <dc:date>2020-06-02T15:33:35Z</dc:date>
    </item>
    <item>
      <title>Re: LPC11U6x - DMA and SSP</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U6x-DMA-and-SSP/m-p/1044855#M40564</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello &lt;A _jive_internal="true" class="" data-content-finding="Community" data-userid="305025" data-username="chrispflieger" href="https://community.nxp.com/people/chrispflieger"&gt;Chris Pflieger,&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Do you meaning DMA Ping-Pong mode?&lt;/P&gt;&lt;P&gt;If yes,&amp;nbsp; recommend you first refer to Jeremy's demo make sure the DMA memory to memory&amp;nbsp; in Ping-Pong mode&lt;/P&gt;&lt;P&gt;can work well on your side. Then can easy add I2S transmition data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&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:&lt;BR /&gt;- If this post answers your question, please click the "Mark Correct" button. Thank you!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;- We are following threads for 7 weeks after the last post, later replies are ignored&lt;BR /&gt; Please open a new thread and refer to the closed one, if you have a related question at a later point in time.&lt;BR /&gt;-------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 03 Jun 2020 02:37:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U6x-DMA-and-SSP/m-p/1044855#M40564</guid>
      <dc:creator>Alice_Yang</dc:creator>
      <dc:date>2020-06-03T02:37:58Z</dc:date>
    </item>
    <item>
      <title>Re: LPC11U6x - DMA and SSP</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U6x-DMA-and-SSP/m-p/1044856#M40565</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;"Then can easy add I2S transmition data."&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If it was that easy, then I wouldn't still be working on it after two weeks.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It's running transfers, but it seems to me that I'm missing something - like how the SSP peripheral triggers the DMA to initiate a move. Perhaps the transmitter is just blasting data in the data register, regardless of whether it's ready or not. Perhaps the SSP receiver getting a byte isn't triggering the DMA to move that received byte.&lt;/P&gt;&lt;P&gt;Like, should DMA_CFG_PERIPHREQEN play a part in this?&lt;/P&gt;&lt;P&gt;I tried:&lt;/P&gt;&lt;PRE&gt;&lt;SPAN style="font-family: courier new, courier, monospace;"&gt;Chip_DMA_SetupChannelConfig(LPC_DMA, DMA_PDM_RX, DMA_CFG_PERIPHREQEN | DMA_CFG_TRIGBURST_SNGL);&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;But that doesn't seem to make a difference.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 03 Jun 2020 15:54:06 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U6x-DMA-and-SSP/m-p/1044856#M40565</guid>
      <dc:creator>chrispflieger</dc:creator>
      <dc:date>2020-06-03T15:54:06Z</dc:date>
    </item>
    <item>
      <title>Re: LPC11U6x - DMA and SSP</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U6x-DMA-and-SSP/m-p/1044857#M40566</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Chris,&lt;/P&gt;&lt;P&gt;If you want to "&lt;STRONG&gt;it just needs to be continuous&lt;/STRONG&gt;", how abut use Burst transfer mode:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_1.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/112321i274DF1494D6655EE/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_1.png" alt="pastedImage_1.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The following example show how to configure the channel for peripheral&lt;BR /&gt;&amp;nbsp;*&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA requests, burst transfer size of 1 (in 'transfers', not bytes),&lt;BR /&gt;&amp;nbsp;*&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;continuous reading of the same source address, incrementing destination&lt;BR /&gt;&amp;nbsp;*&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;address, and highest channel priority.&amp;lt;br&amp;gt;&lt;BR /&gt;&amp;nbsp;*&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Example: Chip_DMA_SetupChannelConfig(pDMA, SSP0_RX_DMA,&lt;BR /&gt;&amp;nbsp;*&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;(DMA_CFG_PERIPHREQEN | DMA_CFG_TRIGBURST_BURST | DMA_CFG_BURSTPOWER_1 |&lt;BR /&gt;&amp;nbsp;*&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DMA_CFG_SRCBURSTWRAP | DMA_CFG_CHPRIORITY(0)));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;About detail you can check UM 10732 and DMA demo under LPCopen.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;TIC&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 09 Jun 2020 08:49:07 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U6x-DMA-and-SSP/m-p/1044857#M40566</guid>
      <dc:creator>Alice_Yang</dc:creator>
      <dc:date>2020-06-09T08:49:07Z</dc:date>
    </item>
    <item>
      <title>Re: LPC11U6x - DMA and SSP</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U6x-DMA-and-SSP/m-p/1044858#M40567</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Adding DMA_CFG_PERIPHREQEN doesn't seem to do anything. I get maybe one word stored. The only way to get it store anything and issue an interrupt is by calling Chip_DMA_SWTriggerChannel(), which isn't what I want.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;EDIT: The LPCopen11U68 has no example for SSP and DMA. There's a UART &amp;amp; DMA, which is exactly what I based my code on.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 23 Jun 2020 23:23:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U6x-DMA-and-SSP/m-p/1044858#M40567</guid>
      <dc:creator>chrispflieger</dc:creator>
      <dc:date>2020-06-23T23:23:57Z</dc:date>
    </item>
    <item>
      <title>Re: LPC11U6x - DMA and SSP</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U6x-DMA-and-SSP/m-p/1044859#M40568</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;After running, I paused to check the registers.&lt;/P&gt;&lt;P&gt;BUSY0 is 0x2 (transmitting, not receiving)&lt;/P&gt;&lt;P&gt;No active interrupts.&lt;/P&gt;&lt;P&gt;INTA0 is 0x2 (set for receive)&lt;/P&gt;&lt;P&gt;ERRINT0 is 0&lt;/P&gt;&lt;P&gt;ACTIVE0 is 0x3&lt;/P&gt;&lt;P&gt;CFG0 is 0x4041&lt;/P&gt;&lt;P&gt;CLSTAT0 is 0x0001&lt;/P&gt;&lt;P&gt;No data was ever transferred into the buffer.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Jun 2020 23:33:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U6x-DMA-and-SSP/m-p/1044859#M40568</guid>
      <dc:creator>chrispflieger</dc:creator>
      <dc:date>2020-06-24T23:33:13Z</dc:date>
    </item>
    <item>
      <title>Re: LPC11U6x - DMA and SSP</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U6x-DMA-and-SSP/m-p/1044860#M40569</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Chris,&lt;/P&gt;&lt;P&gt;There isn't a DMA+SSP demo exactly for LPC11u68, while you can refer to the demo under the thread:&lt;/P&gt;&lt;P&gt;&lt;A _jive_internal="true" class="link-titled" href="https://community.nxp.com/message/960058?commentID=960058#comment-960058" title="https://community.nxp.com/message/960058?commentID=960058#comment-960058"&gt;https://community.nxp.com/message/960058?commentID=960058#comment-960058&lt;/A&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 30 Jun 2020 07:34:06 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U6x-DMA-and-SSP/m-p/1044860#M40569</guid>
      <dc:creator>Alice_Yang</dc:creator>
      <dc:date>2020-06-30T07:34:06Z</dc:date>
    </item>
    <item>
      <title>Re: LPC11U6x - DMA and SSP</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U6x-DMA-and-SSP/m-p/1044861#M40570</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;So, I'm asking about a working with a low end M0+ MCU, but you're pointing me to an example for a high end M4?!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The drivers for these chips aren't even close.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So far, you've told me (1) it's easy, (2) read the manual, (3) look at a completely unrelated example.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 30 Jun 2020 19:05:14 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U6x-DMA-and-SSP/m-p/1044861#M40570</guid>
      <dc:creator>chrispflieger</dc:creator>
      <dc:date>2020-06-30T19:05:14Z</dc:date>
    </item>
    <item>
      <title>Re: LPC11U6x - DMA and SSP</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U6x-DMA-and-SSP/m-p/1044862#M40571</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;OK, I've actually got this running, through a lot of trial and error.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It seems there's two essential things:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_DMA_SetupChannelConfig(LPC_DMA, DMAREQ_SSP0_TX, (DMA_CFG_PERIPHREQEN |DMA_CFG_SRCBURSTWRAP));&lt;/P&gt;&lt;P&gt;then&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_DMA_SWTriggerChannel(LPC_DMA, DMAREQ_SSP0_TX);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm not sure about the xfercfg portion, but it seems to work.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There's also some errors in my original code that could cause hard faults, so in case someone else has this problem, I'm posting the receive setup portion.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: andale mono, monospace; font-size: 13px;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt; // setup SPI&lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt; Chip_SSP_Init(PDM_SPI); &lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt;Chip_SSP_SetFormat(PDM_SPI, SSP_BITS_16, SSP_FRAMEFORMAT_SPI, SSP_CLOCK_MODE0);&lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt;Chip_SSP_Set_Mode(PDM_SPI, SSP_MODE_MASTER); &lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt;Chip_SSP_SetBitRate(PDM_SPI, PDM_BITRATE); &lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt;PDM_SPI-&amp;gt;DMACR = 3; // added to set some mysterious bits that are in the manual, &lt;BR /&gt;&lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt;// but not in the driver code.&amp;nbsp; it didn't help.&lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt; Chip_SSP_Enable(PDM_SPI); &lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt;// turn on the DMA &lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt;Chip_DMA_Init(LPC_DMA); &lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt;Chip_DMA_Enable(LPC_DMA); &lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt;Chip_DMA_SetSRAMBase(LPC_DMA, DMA_ADDR(Chip_DMA_Table)); &lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt;NVIC_SetPriority(DMA_IRQ_NUM, DMA_INTERRUPT_PRIORITY); Chip_DMA_ClearActiveIntAChannel(LPC_DMA, DMA_PDM_TX); Chip_DMA_ClearActiveIntAChannel(LPC_DMA, DMA_PDM_RX); &lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt;// first the receiver &lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt;dmaRXDesc[0].source = DMA_ADDR(&amp;amp;PDM_SPI-&amp;gt;DR); &lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt;dmaRXDesc[0].dest = DMA_ADDR(incoming_buffer_a + I2S_BUFFER_SIZE - 1); &lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt;dmaRXDesc[0].next = DMA_ADDR(&amp;amp;dmaRXDesc[1]); &lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt;dmaRXDesc[0].xfercfg = DMA_XFERCFG_CFGVALID | DMA_XFERCFG_SETINTA | DMA_CFG_BURSTPOWER_1&amp;nbsp; |&lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMA_XFERCFG_SRCINC_0 | DMA_XFERCFG_DSTINC_1 | DMA_CFG_SRCBURSTWRAP |&lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMA_XFERCFG_WIDTH_16 | DMA_XFERCFG_RELOAD | DMA_CFG_PERIPHREQEN&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMA_CFG_CHPRIORITY(2)| DMA_XFERCFG_XFERCOUNT(I2S_BUFFER_SIZE); &lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt;dmaRXDesc[1].source = DMA_ADDR(&amp;amp;PDM_SPI-&amp;gt;DR); &lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt;dmaRXDesc[1].dest = DMA_ADDR(incoming_buffer_b + I2S_BUFFER_SIZE - 1); &lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt;dmaRXDesc[1].next = DMA_ADDR(&amp;amp;dmaRXDesc[0]); &lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt;dmaRXDesc[1].xfercfg = dmaRXDesc[0].xfercfg; &lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt;// I honestly don't understand the point of this, but I'm following the example.&lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt; Initial_DMA_RX_Descriptor.source = dmaRXDesc[0].source; &lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt;Initial_DMA_RX_Descriptor.dest = dmaRXDesc[0].dest; Initial_DMA_RX_Descriptor.next = dmaRXDesc[0].next; &lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt;Initial_DMA_RX_Descriptor.xfercfg = dmaRXDesc[0].xfercfg; &lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt;Chip_DMA_EnableChannel(LPC_DMA, DMA_PDM_RX); Chip_DMA_EnableIntChannel(LPC_DMA, DMA_PDM_RX);&lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt; Chip_DMA_SetupChannelConfig(LPC_DMA, DMA_PDM_RX, (DMA_CFG_PERIPHREQEN |DMA_CFG_SRCBURSTWRAP)); &lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt;Chip_DMA_SetupTranChannel(LPC_DMA, DMA_PDM_RX, &amp;amp;Initial_DMA_RX_Descriptor);&lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt; Chip_DMA_SetupChannelTransfer(LPC_DMA, DMA_PDM_RX, dmaRXDesc[0].xfercfg);&lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt; Chip_DMA_SetValidChannel(LPC_DMA, DMA_PDM_RX); &lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt;/* Enable the DMA IRQ */&lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13px;"&gt;&lt;CODE&gt; NVIC_EnableIRQ(DMA_IRQn);&lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&lt;SPAN style="font-size: 13px;"&gt; Chip_DMA_SWTriggerChannel(LPC_DMA, DMA_PDM_RX);&lt;/SPAN&gt; &lt;/CODE&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 01 Jul 2020 18:07:42 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U6x-DMA-and-SSP/m-p/1044862#M40571</guid>
      <dc:creator>chrispflieger</dc:creator>
      <dc:date>2020-07-01T18:07:42Z</dc:date>
    </item>
    <item>
      <title>Re: LPC11U6x - DMA and SSP</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U6x-DMA-and-SSP/m-p/1211382#M43562</link>
      <description>&lt;P&gt;Just in case some someone trying to do I2S on these chips ever stumbles across this... here's the code I got working.&lt;/P&gt;</description>
      <pubDate>Wed, 13 Jan 2021 23:58:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U6x-DMA-and-SSP/m-p/1211382#M43562</guid>
      <dc:creator>chrispflieger</dc:creator>
      <dc:date>2021-01-13T23:58:01Z</dc:date>
    </item>
  </channel>
</rss>

