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.

[参考译文] LP-MSPM0G3507:MSPM0G3507 DMA SPI AMC131M03不工作、在100SPS 以上的速率下采样困难

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1502757/lp-mspm0g3507-mspm0g3507-dma-spi-amc131m03-not-working-and-difficulties-in-sampling-at-more-than-100-sps

器件型号:LP-MSPM0G3507
Thread 中讨论的其他器件:MSPM0G3507、AMC131M03、 SysConfig

工具/软件:

您好、

关于设置:MSPM0G3507 Launchpad 通过电线连接到 AMC131M03 EVM、代码基于 TI 示例、并使用了驱动程序库。 一切接线均正确、因为我们可以在使用 driverlib 时通过 SPI 成功通信和配置 AMC。


我们正在尝试使用 DMA 通过 SPI 从 AMC131M03读取数据、这似乎不起作用、因为即使我尝试使用 DL_DMA_startTransfer 函数、DMA 传输也无法开始。 我们首先尝试使用 DMA 的一个相邻问题是、当我们使用 driverlib 进行 SPI 传输时、我们得到的样本量大大减少(160SPS 左右)。 我们将 AMC 配置为4kSPS、但是每当我们使用 MCU 内核执行某些操作时、AMC 提供的准备数据量明显减少。

对这两个问题的建议深表感谢

我们按如下方式配置 DMA:我还附加了 SysConfig 文件。

DL_DMA_setSrcAddr (DMA、DMA_CH2_CHAN_ID、(uint32_t)&txBuf[0]);
DL_DMA_setDestAddr (DMA、DMA_CH2_CHAN_ID、(uint32_t)(&SPI_0_INST->TXDATA));
DL_DMA_setTransferSize (DMA、DMA_CH2_CHAN_ID、len);

//为此突发运行 DMA
DL_SPI_clearInterruptStatus (SPI_0_INST、DL_SPI_INTERRUPT_DMA_DONE_RX);
/*
*配置从 RXDATA 到 gRxPacket 的 DMA 源、目标和大小。
*当设置了 RX 中断时,DMA 传输将开始,这是发生的
*当设备接收数据时。
*/
DL_DMA_setSrcAddr (DMA、DMA_CH1_CHAN_ID、(uint32_t)(&SPI_0_INST->RXDATA);
DL_DMA_setDestAddr (DMA、DMA_CH1_CHAN_ID、(uint32_t)&dataRxDMA[0]);
DL_DMA_setTransferSize (DMA、DMA_CH1_CHAN_ID、len);


DL_DMA_enableChannel (DMA、DMA_CH1_CHAN_ID);
DL_DMA_enableChannel (DMA、DMA_CH2_CHAN_ID);
DL_DMA_startTransfer (DMA、DMA_CH2_CHAN_ID);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Mattias:

    我们使用 SPI 和 DMA 与电能计量库中的 AMC131M0x 进行通信。 设置功能看起来正确、启用也是如此。 对于起始传输、您是否有理由直接使用 startTransfer 来执行此操作、而不是在 TX FIFO 为空的情况下触发? 如果您将触发条件设置为空 SPI TX、则一旦启用通道、DMA 事务就应该开始。

    下面是具有3个 AMC131M03的三相隔离式电能计量示例、在我们的代码中、我们此处使用相同的2个 DMA 通道、并对其进行重新配置以与 AMC 器件通信。 该过程实际上从来自 AMC131M0x 的 DRDY 引脚的 GPIO 触发器开始、然后进入设置 DMA 和启动 SPI 通信。

    https://dev.ti.com/tirex/explore/node?node=A__ADFPq0XMISIxw61BDpIFxA__MSPM0-SDK__a3PaaoK__LATEST

    此致、
    Luke

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

    我建议查看 irq_handler.c 以了解 GPIO 和 DMA 中断、并查看.syscfg 以了解 SPI 配置。