<?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: LPC55 SPI and DMA</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55-SPI-and-DMA/m-p/1671086#M53055</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;If you write register directly, you have to enable the gated clock&lt;/P&gt;
&lt;P&gt;1)enable the DMA clock and spi clock&lt;/P&gt;
&lt;P&gt;SYSCON-&amp;gt;AHBCLKCTRL[0]|=1&amp;lt;&amp;lt;20; //enable DMA0&lt;/P&gt;
&lt;P&gt;SYSCON-&amp;gt;AHBCLKCTRL[1]|=1&amp;lt;&amp;lt;15; //enable FC4&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;2)For the SPI4, I suggest you initialize the SPI4 with line:&lt;/P&gt;
&lt;P&gt;SPI_MasterGetDefaultConfig(&amp;amp;userConfig);&lt;BR /&gt;srcFreq = EXAMPLE_SPI_MASTER_CLK_FREQ;&lt;BR /&gt;userConfig.sselNum = (spi_ssel_t)EXAMPLE_SPI_SSEL;&lt;BR /&gt;userConfig.sselPol = (spi_spol_t)EXAMPLE_SPI_SPOL;&lt;BR /&gt;SPI_MasterInit(SPI4, &amp;amp;userConfig, srcFreq);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The above code will enable spi4 clock and initialize PSIDE&lt;/P&gt;
&lt;P&gt;Pls have a try&lt;/P&gt;
&lt;P&gt;BR&lt;/P&gt;
&lt;P&gt;XiangJun Rong&lt;/P&gt;</description>
    <pubDate>Fri, 16 Jun 2023 11:04:54 GMT</pubDate>
    <dc:creator>xiangjun_rong</dc:creator>
    <dc:date>2023-06-16T11:04:54Z</dc:date>
    <item>
      <title>LPC55 SPI and DMA</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55-SPI-and-DMA/m-p/1670732#M53048</link>
      <description>&lt;P&gt;I'm working on trying to use SPI+DMA direct from registers. I have the code working through NXP's API for the LPC55S69, which works. But it takes 24.7us to excute the SPI_MasterTransferDMA() function. This means that I end up missing interrupts (which are coming in every 62.5 us) and there is little time for any other processing with this overhead.&amp;nbsp; To put this in context the part is running at 150MHz, so we are spending 3507 cycles executing an API function.&lt;/P&gt;&lt;P&gt;So I have extracted what I thought is the majority of the relevant code to directly talk to the registers, but I seem to be missing something.&lt;/P&gt;&lt;PRE&gt;FLEXCOMM4_DMA_Handle.&lt;SPAN&gt;state &lt;/SPAN&gt;= (&lt;SPAN&gt;uint8_t&lt;/SPAN&gt;)&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;SPAN&gt;; &lt;/SPAN&gt;&lt;SPAN&gt;// kSPI_Busy&lt;BR /&gt;&lt;/SPAN&gt;FLEXCOMM4_DMA_Handle.&lt;SPAN&gt;transferSize &lt;/SPAN&gt;= num_bytes&lt;SPAN&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;// Clear FIFOs.&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;FLEXCOMM4_PERIPHERAL&lt;/SPAN&gt;-&amp;gt;&lt;SPAN&gt;FIFOCFG &lt;/SPAN&gt;|= &lt;SPAN&gt;SPI_FIFOCFG_EMPTYTX_MASK &lt;/SPAN&gt;| &lt;SPAN&gt;SPI_FIFOCFG_EMPTYRX_MASK&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;FLEXCOMM4_PERIPHERAL&lt;/SPAN&gt;-&amp;gt;&lt;SPAN&gt;FIFOSTAT &lt;/SPAN&gt;|= &lt;SPAN&gt;SPI_FIFOSTAT_TXERR_MASK &lt;/SPAN&gt;| &lt;SPAN&gt;SPI_FIFOSTAT_RXERR_MASK&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;// Enable rx&amp;amp;tx dma&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;FLEXCOMM4_PERIPHERAL&lt;/SPAN&gt;-&amp;gt;&lt;SPAN&gt;FIFOCFG &lt;/SPAN&gt;|= &lt;SPAN&gt;SPI_FIFOCFG_DMARX_MASK &lt;/SPAN&gt;| &lt;SPAN&gt;SPI_FIFOCFG_DMATX_MASK&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;// base address is the same for TX&amp;amp;RX, so only need to set it once.&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;FLEXCOMM4_TX_DMA_BASEADDR&lt;/SPAN&gt;-&amp;gt;&lt;SPAN&gt;SRAMBASE &lt;/SPAN&gt;= (&lt;SPAN&gt;uint32_t&lt;/SPAN&gt;) &amp;amp;desc_table[&lt;SPAN&gt;0&lt;/SPAN&gt;]&lt;SPAN&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;// receive&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;// enable peripheral request&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;FLEXCOMM4_RX_DMA_BASEADDR&lt;/SPAN&gt;-&amp;gt;&lt;SPAN&gt;CHANNEL&lt;/SPAN&gt;[&lt;SPAN&gt;FLEXCOMM4_RX_DMA_CHANNEL&lt;/SPAN&gt;].&lt;SPAN&gt;CFG &lt;/SPAN&gt;|= &lt;SPAN&gt;DMA_CHANNEL_CFG_PERIPHREQEN_MASK&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;const &lt;/SPAN&gt;&lt;SPAN&gt;uint32_t &lt;/SPAN&gt;rxfercfg = &lt;SPAN&gt;DMA_CHANNEL_XFERCFG_CFGVALID&lt;/SPAN&gt;(&lt;SPAN&gt;1&lt;/SPAN&gt;)&lt;BR /&gt;| &lt;SPAN&gt;DMA_CHANNEL_XFERCFG_RELOAD&lt;/SPAN&gt;(&lt;SPAN&gt;0&lt;/SPAN&gt;)&lt;BR /&gt;| &lt;SPAN&gt;DMA_CHANNEL_XFERCFG_SWTRIG&lt;/SPAN&gt;(&lt;SPAN&gt;0&lt;/SPAN&gt;)&lt;BR /&gt;| &lt;SPAN&gt;DMA_CHANNEL_XFERCFG_CLRTRIG&lt;/SPAN&gt;(&lt;SPAN&gt;1&lt;/SPAN&gt;)&lt;BR /&gt;| &lt;SPAN&gt;DMA_CHANNEL_XFERCFG_SETINTA&lt;/SPAN&gt;(&lt;SPAN&gt;1&lt;/SPAN&gt;)&lt;BR /&gt;| &lt;SPAN&gt;DMA_CHANNEL_XFERCFG_SETINTB&lt;/SPAN&gt;(&lt;SPAN&gt;0&lt;/SPAN&gt;)&lt;BR /&gt;| &lt;SPAN&gt;DMA_CHANNEL_XFERCFG_WIDTH&lt;/SPAN&gt;(&lt;SPAN&gt;0&lt;/SPAN&gt;)&lt;BR /&gt;| &lt;SPAN&gt;DMA_CHANNEL_XFERCFG_SRCINC&lt;/SPAN&gt;(&lt;SPAN&gt;0&lt;/SPAN&gt;)&lt;BR /&gt;| &lt;SPAN&gt;DMA_CHANNEL_XFERCFG_DSTINC&lt;/SPAN&gt;(&lt;SPAN&gt;1&lt;/SPAN&gt;)&lt;BR /&gt;| &lt;SPAN&gt;DMA_CHANNEL_XFERCFG_XFERCOUNT&lt;/SPAN&gt;(num_bytes - &lt;SPAN&gt;1&lt;/SPAN&gt;)&lt;BR /&gt;&lt;SPAN&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;desc_table[&lt;SPAN&gt;FLEXCOMM4_RX_DMA_CHANNEL&lt;/SPAN&gt;].&lt;SPAN&gt;xfercfg &lt;/SPAN&gt;= rxfercfg&lt;SPAN&gt;;&lt;BR /&gt;&lt;/SPAN&gt;desc_table[&lt;SPAN&gt;FLEXCOMM4_RX_DMA_CHANNEL&lt;/SPAN&gt;].&lt;SPAN&gt;srcEndAddr &lt;/SPAN&gt;= &lt;SPAN&gt;DMA_DESCRIPTOR_END_ADDRESS&lt;/SPAN&gt;((&lt;SPAN&gt;uint32_t &lt;/SPAN&gt;*)&amp;amp;(FLEXCOMM4_PERIPHERAL-&amp;gt;&lt;SPAN&gt;FIFORD&lt;/SPAN&gt;)&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;)&lt;SPAN&gt;;&lt;BR /&gt;&lt;/SPAN&gt;desc_table[&lt;SPAN&gt;FLEXCOMM4_RX_DMA_CHANNEL&lt;/SPAN&gt;].&lt;SPAN&gt;dstEndAddr &lt;/SPAN&gt;= &lt;SPAN&gt;DMA_DESCRIPTOR_END_ADDRESS&lt;/SPAN&gt;((&lt;SPAN&gt;uint32_t &lt;/SPAN&gt;*)g_afe_data.&lt;SPAN&gt;recv_buffer&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;num_bytes&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;)&lt;SPAN&gt;;&lt;BR /&gt;&lt;/SPAN&gt;desc_table[&lt;SPAN&gt;FLEXCOMM4_RX_DMA_CHANNEL&lt;/SPAN&gt;].&lt;SPAN&gt;linkToNextDesc &lt;/SPAN&gt;= &lt;SPAN&gt;NULL&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;FLEXCOMM4_RX_DMA_BASEADDR&lt;/SPAN&gt;-&amp;gt;&lt;SPAN&gt;CHANNEL&lt;/SPAN&gt;[&lt;SPAN&gt;FLEXCOMM4_RX_DMA_CHANNEL&lt;/SPAN&gt;].&lt;SPAN&gt;XFERCFG &lt;/SPAN&gt;= rxfercfg&lt;SPAN&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;// transmit&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;// enable peripheral request&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;FLEXCOMM4_TX_DMA_BASEADDR&lt;/SPAN&gt;-&amp;gt;&lt;SPAN&gt;CHANNEL&lt;/SPAN&gt;[&lt;SPAN&gt;FLEXCOMM4_TX_DMA_CHANNEL&lt;/SPAN&gt;].&lt;SPAN&gt;CFG &lt;/SPAN&gt;|= &lt;SPAN&gt;DMA_CHANNEL_CFG_PERIPHREQEN_MASK&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;const &lt;/SPAN&gt;&lt;SPAN&gt;uint32_t &lt;/SPAN&gt;txfercfg = &lt;SPAN&gt;DMA_CHANNEL_XFERCFG_CFGVALID&lt;/SPAN&gt;(&lt;SPAN&gt;1&lt;/SPAN&gt;)&lt;BR /&gt;| &lt;SPAN&gt;DMA_CHANNEL_XFERCFG_RELOAD&lt;/SPAN&gt;(&lt;SPAN&gt;0&lt;/SPAN&gt;)&lt;BR /&gt;| &lt;SPAN&gt;DMA_CHANNEL_XFERCFG_SWTRIG&lt;/SPAN&gt;(&lt;SPAN&gt;0&lt;/SPAN&gt;)&lt;BR /&gt;| &lt;SPAN&gt;DMA_CHANNEL_XFERCFG_CLRTRIG&lt;/SPAN&gt;(&lt;SPAN&gt;1&lt;/SPAN&gt;)&lt;BR /&gt;| &lt;SPAN&gt;DMA_CHANNEL_XFERCFG_SETINTA&lt;/SPAN&gt;(&lt;SPAN&gt;1&lt;/SPAN&gt;)&lt;BR /&gt;| &lt;SPAN&gt;DMA_CHANNEL_XFERCFG_SETINTB&lt;/SPAN&gt;(&lt;SPAN&gt;0&lt;/SPAN&gt;)&lt;BR /&gt;| &lt;SPAN&gt;DMA_CHANNEL_XFERCFG_WIDTH&lt;/SPAN&gt;(&lt;SPAN&gt;0&lt;/SPAN&gt;)&lt;BR /&gt;| &lt;SPAN&gt;DMA_CHANNEL_XFERCFG_SRCINC&lt;/SPAN&gt;(&lt;SPAN&gt;1&lt;/SPAN&gt;)&lt;BR /&gt;| &lt;SPAN&gt;DMA_CHANNEL_XFERCFG_DSTINC&lt;/SPAN&gt;(&lt;SPAN&gt;0&lt;/SPAN&gt;)&lt;BR /&gt;| &lt;SPAN&gt;DMA_CHANNEL_XFERCFG_XFERCOUNT&lt;/SPAN&gt;(num_bytes - &lt;SPAN&gt;1&lt;/SPAN&gt;)&lt;BR /&gt;&lt;SPAN&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;desc_table[&lt;SPAN&gt;FLEXCOMM4_TX_DMA_CHANNEL&lt;/SPAN&gt;].&lt;SPAN&gt;xfercfg &lt;/SPAN&gt;= txfercfg&lt;SPAN&gt;;&lt;BR /&gt;&lt;/SPAN&gt;desc_table[&lt;SPAN&gt;FLEXCOMM4_TX_DMA_CHANNEL&lt;/SPAN&gt;].&lt;SPAN&gt;srcEndAddr &lt;/SPAN&gt;= &lt;SPAN&gt;DMA_DESCRIPTOR_END_ADDRESS&lt;/SPAN&gt;((&lt;SPAN&gt;uint32_t &lt;/SPAN&gt;*)g_afe_data.&lt;SPAN&gt;send_buffer&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;num_bytes&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;)&lt;SPAN&gt;;&lt;BR /&gt;&lt;/SPAN&gt;desc_table[&lt;SPAN&gt;FLEXCOMM4_TX_DMA_CHANNEL&lt;/SPAN&gt;].&lt;SPAN&gt;dstEndAddr &lt;/SPAN&gt;= &lt;SPAN&gt;DMA_DESCRIPTOR_END_ADDRESS&lt;/SPAN&gt;((&lt;SPAN&gt;uint32_t &lt;/SPAN&gt;*)&amp;amp;(FLEXCOMM4_PERIPHERAL-&amp;gt;&lt;SPAN&gt;FIFOWR&lt;/SPAN&gt;)&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;)&lt;SPAN&gt;;&lt;BR /&gt;&lt;/SPAN&gt;desc_table[&lt;SPAN&gt;FLEXCOMM4_TX_DMA_CHANNEL&lt;/SPAN&gt;].&lt;SPAN&gt;linkToNextDesc &lt;/SPAN&gt;= &lt;SPAN&gt;NULL&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;FLEXCOMM4_TX_DMA_BASEADDR&lt;/SPAN&gt;-&amp;gt;&lt;SPAN&gt;CHANNEL&lt;/SPAN&gt;[&lt;SPAN&gt;FLEXCOMM4_TX_DMA_CHANNEL&lt;/SPAN&gt;].&lt;SPAN&gt;XFERCFG &lt;/SPAN&gt;= txfercfg&lt;SPAN&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;FLEXCOMM4_DMA_Handle.&lt;SPAN&gt;rxInProgress &lt;/SPAN&gt;= &lt;SPAN&gt;true&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;BR /&gt;&lt;/SPAN&gt;FLEXCOMM4_DMA_Handle.&lt;SPAN&gt;txInProgress &lt;/SPAN&gt;= &lt;SPAN&gt;true&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;uint32_t &lt;/SPAN&gt;tmpData = &lt;SPAN&gt;0U&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;//tmpData |= ((txfercfg.configFlags &amp;amp; (uint32_t)kSPI_FrameDelay) != 0U) ? (uint32_t)kSPI_FrameDelay : 0U;&lt;BR /&gt;&lt;/SPAN&gt;tmpData |= (&lt;SPAN&gt;uint32_t&lt;/SPAN&gt;)&lt;SPAN&gt;kSPI_FrameAssert&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;spi_config_t &lt;/SPAN&gt;*spi_config_p = (&lt;SPAN&gt;spi_config_t &lt;/SPAN&gt;*)SPI_GetConfig(&lt;SPAN&gt;FLEXCOMM4_PERIPHERAL&lt;/SPAN&gt;)&lt;SPAN&gt;;&lt;BR /&gt;&lt;/SPAN&gt;tmpData |= ((&lt;SPAN&gt;uint32_t&lt;/SPAN&gt;)&lt;SPAN&gt;SPI_DEASSERT_ALL &lt;/SPAN&gt;&amp;amp; (~(&lt;SPAN&gt;uint32_t&lt;/SPAN&gt;)&lt;SPAN&gt;SPI_DEASSERTNUM_SSEL&lt;/SPAN&gt;((&lt;SPAN&gt;uint32_t&lt;/SPAN&gt;)spi_config_p-&amp;gt;&lt;SPAN&gt;sselNum&lt;/SPAN&gt;)))&lt;SPAN&gt;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;// set width of data - range asserted at entry&lt;BR /&gt;&lt;/SPAN&gt;tmpData |= &lt;SPAN&gt;SPI_FIFOWR_LEN&lt;/SPAN&gt;(&lt;SPAN&gt;kSPI_Data8Bits&lt;/SPAN&gt;)&lt;SPAN&gt;;&lt;BR /&gt;&lt;/SPAN&gt;*((&lt;SPAN&gt;uint16_t &lt;/SPAN&gt;*)((&lt;SPAN&gt;uint32_t&lt;/SPAN&gt;)&amp;amp;&lt;SPAN&gt;FLEXCOMM4_PERIPHERAL&lt;/SPAN&gt;-&amp;gt;&lt;SPAN&gt;FIFOWR&lt;/SPAN&gt;) + &lt;SPAN&gt;1&lt;/SPAN&gt;) = (&lt;SPAN&gt;uint16_t&lt;/SPAN&gt;)(tmpData &amp;gt;&amp;gt; &lt;SPAN&gt;16U&lt;/SPAN&gt;)&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;DIV&gt;Any help with why this isn't working would be appreciated. The desc_table variable is aligned to a 512 byte boundary as per the alignment requirement. The num_bytes is passed in as a parameter and calls to&lt;/DIV&gt;&lt;PRE&gt;DMA_StartTransfer(FLEXCOMM4_DMA_Handle.rxHandle);&lt;BR /&gt;DMA_StartTransfer(FLEXCOMM4_DMA_Handle.txHandle);&lt;/PRE&gt;&lt;P&gt;are done in a separate function.&lt;/P&gt;</description>
      <pubDate>Fri, 16 Jun 2023 03:23:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55-SPI-and-DMA/m-p/1670732#M53048</guid>
      <dc:creator>tim_simpson</dc:creator>
      <dc:date>2023-06-16T03:23:13Z</dc:date>
    </item>
    <item>
      <title>Re: LPC55 SPI and DMA</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55-SPI-and-DMA/m-p/1671086#M53055</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;If you write register directly, you have to enable the gated clock&lt;/P&gt;
&lt;P&gt;1)enable the DMA clock and spi clock&lt;/P&gt;
&lt;P&gt;SYSCON-&amp;gt;AHBCLKCTRL[0]|=1&amp;lt;&amp;lt;20; //enable DMA0&lt;/P&gt;
&lt;P&gt;SYSCON-&amp;gt;AHBCLKCTRL[1]|=1&amp;lt;&amp;lt;15; //enable FC4&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;2)For the SPI4, I suggest you initialize the SPI4 with line:&lt;/P&gt;
&lt;P&gt;SPI_MasterGetDefaultConfig(&amp;amp;userConfig);&lt;BR /&gt;srcFreq = EXAMPLE_SPI_MASTER_CLK_FREQ;&lt;BR /&gt;userConfig.sselNum = (spi_ssel_t)EXAMPLE_SPI_SSEL;&lt;BR /&gt;userConfig.sselPol = (spi_spol_t)EXAMPLE_SPI_SPOL;&lt;BR /&gt;SPI_MasterInit(SPI4, &amp;amp;userConfig, srcFreq);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The above code will enable spi4 clock and initialize PSIDE&lt;/P&gt;
&lt;P&gt;Pls have a try&lt;/P&gt;
&lt;P&gt;BR&lt;/P&gt;
&lt;P&gt;XiangJun Rong&lt;/P&gt;</description>
      <pubDate>Fri, 16 Jun 2023 11:04:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55-SPI-and-DMA/m-p/1671086#M53055</guid>
      <dc:creator>xiangjun_rong</dc:creator>
      <dc:date>2023-06-16T11:04:54Z</dc:date>
    </item>
    <item>
      <title>Re: LPC55 SPI and DMA</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55-SPI-and-DMA/m-p/1671426#M53058</link>
      <description>&lt;P&gt;Thanks but I have all the setup already configured and if I use the SPI_MasterTransferDMA() then everything works but the code path through the SPI_MasterTransferDMA() takes too long to execute. So I was manually trying to directly write the registers since it is the same buffers and transfer size every time it shouldn't be needed to configure absolutely everything again to do the same transfer again.&lt;/P&gt;</description>
      <pubDate>Sun, 18 Jun 2023 02:34:10 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55-SPI-and-DMA/m-p/1671426#M53058</guid>
      <dc:creator>tim_simpson</dc:creator>
      <dc:date>2023-06-18T02:34:10Z</dc:date>
    </item>
    <item>
      <title>Re: LPC55 SPI and DMA</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55-SPI-and-DMA/m-p/1671679#M53064</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;Because the DMA functions well in SDK package, I suggest you screen-copy the DMA register in debugger.&lt;/P&gt;
&lt;P&gt;For your register level code written manually, you also screen-copy the DMA register.&lt;/P&gt;
&lt;P&gt;Compare the DMA register and get the difference, maybe it is helpful.&lt;/P&gt;
&lt;P&gt;Hope it can help you&lt;/P&gt;
&lt;P&gt;BR&lt;/P&gt;
&lt;P&gt;XiuangJun Rong&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 19 Jun 2023 07:21:30 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55-SPI-and-DMA/m-p/1671679#M53064</guid>
      <dc:creator>xiangjun_rong</dc:creator>
      <dc:date>2023-06-19T07:21:30Z</dc:date>
    </item>
    <item>
      <title>Re: LPC55 SPI and DMA</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55-SPI-and-DMA/m-p/1671706#M53068</link>
      <description>&lt;P&gt;Thanks for the reply, that is basically what I ended up doing in the end.&lt;/P&gt;&lt;P&gt;The issue was in not having a linked DMA transfer for the last byte being sent so that the SSEL was de-asserted at the end of transmission.&lt;/P&gt;&lt;P&gt;I appreciate all the help.&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Tim.&lt;/P&gt;</description>
      <pubDate>Mon, 19 Jun 2023 07:53:12 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC55-SPI-and-DMA/m-p/1671706#M53068</guid>
      <dc:creator>tim_simpson</dc:creator>
      <dc:date>2023-06-19T07:53:12Z</dc:date>
    </item>
  </channel>
</rss>

