This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSPM0G1106:MSPM0G1106 使用 DMA 读取 GPIO

Guru**** 2378650 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1527962/mspm0g1106-mspm0g1106-read-gpio-with-dma

器件型号:MSPM0G1106

工具/软件:

我想使用 DMA 在上升沿从 GPIO 读取端口 A。

为此、我按如下方式配置了 DMA:

 uint32_t testSource = 1553
 /*配置 DMA 源、目标和大小*/

 DL_DMA_setSrcAddr (DMA、DMA_CH0_RX_CHAN_ID、
          (uint32_t)&GPIOA->DIN31_0);// DIN31_0 = DIN 引脚 31 bis 引脚 0
 // DL_DMA_setSrcAddr (DMA、DMA_CH0_RX_CHAN_ID、  (uint32_t)&testSource);
 //// DIN31_0 = DIN 引脚 31 bis 引脚 0
 DL_DMA_setDestAddr (DMA、DMA_CH0_RX_CHAN_ID、(uint32_t)&gDesRxDmaData[0]);
 DL_DMA_setTransferSize (DMA、DMA_CH0_RX_CHN_ID、
             sizeof (gDesRxDmaData)/ sizeof (uint32_t));
 DL_DMA_enableChannel (DMA、DMA_CH0_RX_CHAN_ID);

 TEST = DL_DMA_getSrcAddr (DMA、DMA_CH0_RX_CHAN_ID);
 __ BKPT (0);
但是、使用此代码时、我始终读回值 0。 尽管某些引脚始终为高电平(并且在使用调试器读回寄存器时也设置正确)。
如果将源 addr 设置为测试变量、则也会使用 DMA 正确读取变量的值。

因此、DMA 初始化实际上是有效的、但 GPIOA->DIN31_0 上的源地址有问题。
此地址有问题吗?