<?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 LPC1768+SSP0+GPDMA some problem in LPC Microcontrollers</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1768-SSP0-GPDMA-some-problem/m-p/2261516#M59065</link>
    <description>&lt;P&gt;Why is it that after opening DMACR in SSP0 and transmitting some data&amp;nbsp;to BUF, DMACR is reset to zero, SSP0DR keeps changing, but BUF data remains unchanged.I also tried to reopen DMACR during the interrupt, but there was still no change in the BUF data.&lt;BR /&gt;Below is the code configuration:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;#define SPI_RX_LEN 5386&lt;/P&gt;&lt;P&gt;extern U8 SPIRXBUF[SPI_RX_LEN];&lt;/P&gt;&lt;DIV&gt;void DMAInit_SPI_RX(U8 *destAddr, U32 len)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;U32 part1 = (len &amp;gt; 4095) ? 4095 : len;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; U32 part2 = (len &amp;gt; 4095) ? (len - 4095) : 0;// 拆分传输（单通道最大4095字节）&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; LPC_SC-&amp;gt;PCONP |= (1 &amp;lt;&amp;lt; 29); // 使能GPDMA时钟&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; LPC_GPDMA-&amp;gt;DMACConfig |= (1 &amp;lt;&amp;lt; 0);//使能GPDMA&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; LPC_GPDMA-&amp;gt;DMACIntTCClear |= 0x01; // 清除通道0传输完成标志&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; LPC_GPDMA-&amp;gt;DMACIntErrClr |= 0x01;&amp;nbsp; // 清除通道0错误标志&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;// 链表项1：传输part1字节&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; lli[0].srcAddr = (U32)&amp;amp;LPC_SSP0-&amp;gt;DR; // 源：SPI0数据寄存器&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; lli[0].destAddr = (U32)destAddr;&amp;nbsp; &amp;nbsp; &amp;nbsp;// 目的：缓冲区起始&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; lli[0].control = (part1 &amp;amp; 0x0FFF)&amp;nbsp; &amp;nbsp; // 传输大小（字节数）&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| (0x00 &amp;lt;&amp;lt; 12)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 源突发大小&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| (0x00 &amp;lt;&amp;lt; 15)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 目的发大小&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| (0x00 &amp;lt;&amp;lt; 18)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //源数据宽度&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| (0x00 &amp;lt;&amp;lt; 21)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //目的数据宽度&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| (0x00 &amp;lt;&amp;lt; 26)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //源地址不变（外设寄存器）&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| (0x01 &amp;lt;&amp;lt; 27)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //目的地址自增&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| (1U &amp;lt;&amp;lt; 31);&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// 使能中断&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; // 链表项2：传输part2字节（若需要）&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; if (part2 &amp;gt; 0)&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;lli[0].nextLLI = (U32)&amp;amp;lli[1]; // 指向链表项2&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; lli[1].srcAddr = (U32)&amp;amp;LPC_SSP0-&amp;gt;DR;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; lli[1].destAddr = (U32)(destAddr + part1); // 缓冲区偏移&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; lli[1].control = (part2 &amp;amp; 0x0FFF)&amp;nbsp; &amp;nbsp; // 传输大小（字节数）&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| (0x00 &amp;lt;&amp;lt; 12)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 源突发大小&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| (0x00 &amp;lt;&amp;lt; 15)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 目的发大小&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| (0x00 &amp;lt;&amp;lt; 18)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //源数据宽度&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| (0x00 &amp;lt;&amp;lt; 21)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //目的数据宽度&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| (0x00 &amp;lt;&amp;lt; 26)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //源地址不变（外设寄存器）&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| (0x01 &amp;lt;&amp;lt; 27)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //目的地址自增&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| (1U &amp;lt;&amp;lt; 31);&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// 使能中断&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; lli[1].nextLLI = 0; // 结束链表&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;else&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;lli[0].nextLLI = 0;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; // 配置DMA通道0&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;LPC_GPDMACH0-&amp;gt;DMACCConfig = 0;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; LPC_GPDMACH0-&amp;gt;DMACCLLI = (U32)&amp;amp;lli[0]; // 链表起始地址&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; LPC_GPDMACH0-&amp;gt;DMACCSrcAddr = lli[0].srcAddr; // 源地址（SPI0 DR）&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; LPC_GPDMACH0-&amp;gt;DMACCDestAddr = lli[0].destAddr;&amp;nbsp; &amp;nbsp; &amp;nbsp;// 目的地址&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; LPC_GPDMACH0-&amp;gt;DMACCControl = lli[0].control;&amp;nbsp; &amp;nbsp; &amp;nbsp; // 控制字&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; LPC_GPDMACH0-&amp;gt;DMACCConfig = (0x01 &amp;lt;&amp;lt; 15) //中断错误&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;| (0x01 &amp;lt;&amp;lt; 14) //终端计数中断&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;| (0x02 &amp;lt;&amp;lt; 11)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 传输类型：外设到内存&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;| (0x00 &amp;lt;&amp;lt; 6)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//目的外设：存储器&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&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; | (0x01 &amp;lt;&amp;lt; 1)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 源外设：SSP0 RX（参考手册）&lt;/DIV&gt;&lt;DIV&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; | (0x01 &amp;lt;&amp;lt; 0); // 通道使能&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;GPDMAEnabe();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void DMA_IRQHandler(void)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if(LPC_GPDMA-&amp;gt;DMACIntTCStat &amp;amp; 0x01) // 通道0传输完成&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;LPC_GPDMA-&amp;gt;DMACIntTCClear = 0x01; // 清除标志&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;//SSPSlave_Init();&lt;/DIV&gt;&lt;DIV&gt;// &amp;nbsp; RUN_LAMP_GLITTER;&lt;/DIV&gt;&lt;DIV&gt;// LPC_SSP0-&amp;gt;DMACR |= (1 &amp;lt;&amp;lt; 0);&lt;/DIV&gt;&lt;DIV&gt;// LPC_GPDMACH0-&amp;gt;DMACCConfig |= (0x01 &amp;lt;&amp;lt; 0);&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;LPC_GPDMA-&amp;gt;DMACConfig |= (1 &amp;lt;&amp;lt; 0);//使能GPDMA&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;time++;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; if(LPC_GPDMA-&amp;gt;DMACIntErrStat &amp;amp; 0x01) // 通道0错误&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;LPC_GPDMA-&amp;gt;DMACIntErrClr = 0x01; // 清除标志&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;BR /&gt;&lt;DIV&gt;void&amp;nbsp; SSPSlave_Init(void)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; LPC_SC-&amp;gt;PCONP&amp;nbsp; &amp;nbsp;|= (1 &amp;lt;&amp;lt; 21);&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* 打开SSP电源&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; */&lt;/DIV&gt;&lt;DIV&gt;/*****************************************************************&lt;/DIV&gt;&lt;DIV&gt;* 初始化SSP的通讯方式,设置数据长度为8bit,帧格式为SPI,SCK 为低有效,&lt;/DIV&gt;&lt;DIV&gt;* 数据在SCK 的第二个时钟沿采样,设置位速率。&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;******************************************************************/&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; LPC_SSP0-&amp;gt;CR0&amp;nbsp; = (0x00 &amp;lt;&amp;lt; &lt;LI-EMOJI id="lia_smiling-face-with-sunglasses" title=":戴墨镜微笑:"&gt;&lt;/LI-EMOJI&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;/* SCR&amp;nbsp; 设置SPI位速率&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*/&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(0x01 &amp;lt;&amp;lt; 7) |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* CPHA 时钟输出相位&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(0x00 &amp;lt;&amp;lt; 6) |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* CPOL 时钟输出极性&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(0x00 &amp;lt;&amp;lt; 4) |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* FRF&amp;nbsp; 帧格式 00=SPI，01=SSI,&amp;nbsp; */&lt;/DIV&gt;&lt;DIV&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;/* 10=Microwire，11=保留&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(0x07 &amp;lt;&amp;lt; 0);&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* DSS&amp;nbsp; 数据长度,0000-0010=保留 */&lt;/DIV&gt;&lt;DIV&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; /* 0011=4位，0111=8位，1111=16位*/&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;LPC_SSP0-&amp;gt;CPSR = 2; /* 时钟分频寄存器*/&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;LPC_SSP0-&amp;gt;CR1&amp;nbsp; = (0x00 &amp;lt;&amp;lt; 3) |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* SOD&amp;nbsp; 从机输出禁能，0=允许&amp;nbsp; &amp;nbsp; */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(0x01 &amp;lt;&amp;lt; 2) |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* MS&amp;nbsp; &amp;nbsp;主从选择，1=从机&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(0x01 &amp;lt;&amp;lt; 1) |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* SSE&amp;nbsp; SSP使能，1=使能 */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(0x00 &amp;lt;&amp;lt; 0);&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* LBM&amp;nbsp; 回写模式&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;sysTimeDlay(5);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;LPC_SSP0-&amp;gt;DMACR |= (1 &amp;lt;&amp;lt; 0);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;/DIV&gt;</description>
    <pubDate>Sat, 13 Dec 2025 04:06:49 GMT</pubDate>
    <dc:creator>Lee_Lee</dc:creator>
    <dc:date>2025-12-13T04:06:49Z</dc:date>
    <item>
      <title>LPC1768+SSP0+GPDMA some problem</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1768-SSP0-GPDMA-some-problem/m-p/2261516#M59065</link>
      <description>&lt;P&gt;Why is it that after opening DMACR in SSP0 and transmitting some data&amp;nbsp;to BUF, DMACR is reset to zero, SSP0DR keeps changing, but BUF data remains unchanged.I also tried to reopen DMACR during the interrupt, but there was still no change in the BUF data.&lt;BR /&gt;Below is the code configuration:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;#define SPI_RX_LEN 5386&lt;/P&gt;&lt;P&gt;extern U8 SPIRXBUF[SPI_RX_LEN];&lt;/P&gt;&lt;DIV&gt;void DMAInit_SPI_RX(U8 *destAddr, U32 len)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;U32 part1 = (len &amp;gt; 4095) ? 4095 : len;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; U32 part2 = (len &amp;gt; 4095) ? (len - 4095) : 0;// 拆分传输（单通道最大4095字节）&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; LPC_SC-&amp;gt;PCONP |= (1 &amp;lt;&amp;lt; 29); // 使能GPDMA时钟&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; LPC_GPDMA-&amp;gt;DMACConfig |= (1 &amp;lt;&amp;lt; 0);//使能GPDMA&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; LPC_GPDMA-&amp;gt;DMACIntTCClear |= 0x01; // 清除通道0传输完成标志&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; LPC_GPDMA-&amp;gt;DMACIntErrClr |= 0x01;&amp;nbsp; // 清除通道0错误标志&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;// 链表项1：传输part1字节&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; lli[0].srcAddr = (U32)&amp;amp;LPC_SSP0-&amp;gt;DR; // 源：SPI0数据寄存器&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; lli[0].destAddr = (U32)destAddr;&amp;nbsp; &amp;nbsp; &amp;nbsp;// 目的：缓冲区起始&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; lli[0].control = (part1 &amp;amp; 0x0FFF)&amp;nbsp; &amp;nbsp; // 传输大小（字节数）&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| (0x00 &amp;lt;&amp;lt; 12)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 源突发大小&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| (0x00 &amp;lt;&amp;lt; 15)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 目的发大小&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| (0x00 &amp;lt;&amp;lt; 18)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //源数据宽度&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| (0x00 &amp;lt;&amp;lt; 21)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //目的数据宽度&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| (0x00 &amp;lt;&amp;lt; 26)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //源地址不变（外设寄存器）&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| (0x01 &amp;lt;&amp;lt; 27)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //目的地址自增&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| (1U &amp;lt;&amp;lt; 31);&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// 使能中断&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; // 链表项2：传输part2字节（若需要）&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; if (part2 &amp;gt; 0)&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;lli[0].nextLLI = (U32)&amp;amp;lli[1]; // 指向链表项2&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; lli[1].srcAddr = (U32)&amp;amp;LPC_SSP0-&amp;gt;DR;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; lli[1].destAddr = (U32)(destAddr + part1); // 缓冲区偏移&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; lli[1].control = (part2 &amp;amp; 0x0FFF)&amp;nbsp; &amp;nbsp; // 传输大小（字节数）&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| (0x00 &amp;lt;&amp;lt; 12)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 源突发大小&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| (0x00 &amp;lt;&amp;lt; 15)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 目的发大小&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| (0x00 &amp;lt;&amp;lt; 18)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //源数据宽度&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| (0x00 &amp;lt;&amp;lt; 21)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //目的数据宽度&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| (0x00 &amp;lt;&amp;lt; 26)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //源地址不变（外设寄存器）&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| (0x01 &amp;lt;&amp;lt; 27)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //目的地址自增&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| (1U &amp;lt;&amp;lt; 31);&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// 使能中断&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; lli[1].nextLLI = 0; // 结束链表&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;else&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;lli[0].nextLLI = 0;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; // 配置DMA通道0&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;LPC_GPDMACH0-&amp;gt;DMACCConfig = 0;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; LPC_GPDMACH0-&amp;gt;DMACCLLI = (U32)&amp;amp;lli[0]; // 链表起始地址&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; LPC_GPDMACH0-&amp;gt;DMACCSrcAddr = lli[0].srcAddr; // 源地址（SPI0 DR）&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; LPC_GPDMACH0-&amp;gt;DMACCDestAddr = lli[0].destAddr;&amp;nbsp; &amp;nbsp; &amp;nbsp;// 目的地址&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; LPC_GPDMACH0-&amp;gt;DMACCControl = lli[0].control;&amp;nbsp; &amp;nbsp; &amp;nbsp; // 控制字&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; LPC_GPDMACH0-&amp;gt;DMACCConfig = (0x01 &amp;lt;&amp;lt; 15) //中断错误&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;| (0x01 &amp;lt;&amp;lt; 14) //终端计数中断&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;| (0x02 &amp;lt;&amp;lt; 11)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 传输类型：外设到内存&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;| (0x00 &amp;lt;&amp;lt; 6)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//目的外设：存储器&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&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; | (0x01 &amp;lt;&amp;lt; 1)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 源外设：SSP0 RX（参考手册）&lt;/DIV&gt;&lt;DIV&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; | (0x01 &amp;lt;&amp;lt; 0); // 通道使能&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;GPDMAEnabe();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void DMA_IRQHandler(void)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if(LPC_GPDMA-&amp;gt;DMACIntTCStat &amp;amp; 0x01) // 通道0传输完成&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;LPC_GPDMA-&amp;gt;DMACIntTCClear = 0x01; // 清除标志&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;//SSPSlave_Init();&lt;/DIV&gt;&lt;DIV&gt;// &amp;nbsp; RUN_LAMP_GLITTER;&lt;/DIV&gt;&lt;DIV&gt;// LPC_SSP0-&amp;gt;DMACR |= (1 &amp;lt;&amp;lt; 0);&lt;/DIV&gt;&lt;DIV&gt;// LPC_GPDMACH0-&amp;gt;DMACCConfig |= (0x01 &amp;lt;&amp;lt; 0);&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;LPC_GPDMA-&amp;gt;DMACConfig |= (1 &amp;lt;&amp;lt; 0);//使能GPDMA&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;time++;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; if(LPC_GPDMA-&amp;gt;DMACIntErrStat &amp;amp; 0x01) // 通道0错误&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;LPC_GPDMA-&amp;gt;DMACIntErrClr = 0x01; // 清除标志&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;BR /&gt;&lt;DIV&gt;void&amp;nbsp; SSPSlave_Init(void)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; LPC_SC-&amp;gt;PCONP&amp;nbsp; &amp;nbsp;|= (1 &amp;lt;&amp;lt; 21);&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* 打开SSP电源&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; */&lt;/DIV&gt;&lt;DIV&gt;/*****************************************************************&lt;/DIV&gt;&lt;DIV&gt;* 初始化SSP的通讯方式,设置数据长度为8bit,帧格式为SPI,SCK 为低有效,&lt;/DIV&gt;&lt;DIV&gt;* 数据在SCK 的第二个时钟沿采样,设置位速率。&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;******************************************************************/&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; LPC_SSP0-&amp;gt;CR0&amp;nbsp; = (0x00 &amp;lt;&amp;lt; &lt;LI-EMOJI id="lia_smiling-face-with-sunglasses" title=":戴墨镜微笑:"&gt;&lt;/LI-EMOJI&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;/* SCR&amp;nbsp; 设置SPI位速率&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*/&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(0x01 &amp;lt;&amp;lt; 7) |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* CPHA 时钟输出相位&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(0x00 &amp;lt;&amp;lt; 6) |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* CPOL 时钟输出极性&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(0x00 &amp;lt;&amp;lt; 4) |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* FRF&amp;nbsp; 帧格式 00=SPI，01=SSI,&amp;nbsp; */&lt;/DIV&gt;&lt;DIV&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;/* 10=Microwire，11=保留&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(0x07 &amp;lt;&amp;lt; 0);&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* DSS&amp;nbsp; 数据长度,0000-0010=保留 */&lt;/DIV&gt;&lt;DIV&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; /* 0011=4位，0111=8位，1111=16位*/&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;LPC_SSP0-&amp;gt;CPSR = 2; /* 时钟分频寄存器*/&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;LPC_SSP0-&amp;gt;CR1&amp;nbsp; = (0x00 &amp;lt;&amp;lt; 3) |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* SOD&amp;nbsp; 从机输出禁能，0=允许&amp;nbsp; &amp;nbsp; */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(0x01 &amp;lt;&amp;lt; 2) |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* MS&amp;nbsp; &amp;nbsp;主从选择，1=从机&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(0x01 &amp;lt;&amp;lt; 1) |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* SSE&amp;nbsp; SSP使能，1=使能 */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(0x00 &amp;lt;&amp;lt; 0);&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* LBM&amp;nbsp; 回写模式&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;sysTimeDlay(5);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;LPC_SSP0-&amp;gt;DMACR |= (1 &amp;lt;&amp;lt; 0);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Sat, 13 Dec 2025 04:06:49 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1768-SSP0-GPDMA-some-problem/m-p/2261516#M59065</guid>
      <dc:creator>Lee_Lee</dc:creator>
      <dc:date>2025-12-13T04:06:49Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1768+SSP0+GPDMA some problem</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1768-SSP0-GPDMA-some-problem/m-p/2264665#M59071</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/257968"&gt;@Lee_Lee&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I think&amp;nbsp;DMA is' reading empty SSP FIFO ', but due to an incorrect access width, data has not been written correctly into memory.&lt;/P&gt;
&lt;P&gt;What are you currently configuring&lt;/P&gt;
&lt;P&gt;(0x00&amp;lt;&amp;lt;18)//&lt;SPAN&gt;源数据宽度&lt;/SPAN&gt;&lt;BR /&gt;(0x00&amp;lt;&amp;lt;21)//&lt;SPAN&gt;目的数据宽度&lt;/SPAN&gt;&lt;BR /&gt;But in LPC:&lt;/P&gt;
&lt;P&gt;The DR register of SSP is a 16 bit register&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Harry_Zhang_0-1765963833177.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/370400i16B1A49DD3D19B21/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Harry_Zhang_0-1765963833177.png" alt="Harry_Zhang_0-1765963833177.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Even if you are using 8-bit SPI mode, DMA access to SSP0-&amp;gt;DR must still be 16 bit access.&lt;/P&gt;
&lt;P&gt;DMA did not actually write data correctly into memory&lt;BR /&gt;The result is that BUF remains unchanged.&lt;/P&gt;
&lt;P&gt;So i think you can try to change the source&amp;nbsp;and des width to 16.&lt;/P&gt;
&lt;P&gt;BR&lt;/P&gt;
&lt;P&gt;Harry&lt;/P&gt;</description>
      <pubDate>Wed, 17 Dec 2025 09:32:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1768-SSP0-GPDMA-some-problem/m-p/2264665#M59071</guid>
      <dc:creator>Harry_Zhang</dc:creator>
      <dc:date>2025-12-17T09:32:54Z</dc:date>
    </item>
  </channel>
</rss>

