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.

[参考译文] MSPM0G3507:ADC DMA 第一次传输似乎执行三次传输?

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1521297/mspm0g3507-adc-dma-first-transfer-seems-to-do-three-transfers

器件型号:MSPM0G3507
主题:SysConfig 中讨论的其他器件

工具/软件:

ADC DMA 设置为填充 mem0中的缓冲区(单字节)。

ADC 在外部触发、设置正常、为8位。

我会执行单个外部 ADC 触发器-这可以在我的逻辑分析仪上看到。

如果我看看第一个传输似乎有三字节传输到我的缓冲区!

缓冲区初始化为零。

有任何线索?

//配置 ADC DMA
DL_DMA_disableChannel (dma、ADC0_CHAN_ID);
DL_DMA_disableChannel (DMA、ADC1_CHAN_ID);
DL_ADC12_disableDMA (ADC12_0_INST);
DL_ADC12_disableDMA (ADC12_1_INST);
DL_ADC12_disableDMATOR (ADC12_0_INST、(DL_ADC12_DMA_MEM0_RESULT_LOADED);
DL_ADC12_disableDMATOR (ADC12_1_INST、(DL_ADC12_DMA_MEM0_RESULT_LOADED);
DL_ADC12_clearDMATriggerStatus (ADC12_0_INST、DL_ADC12_DMA_MEM0_RESULT_LOADED);
DL_ADC12_clearDMATriggerStatus (ADC12_1_INST、DL_ADC12_DMA_MEM0_RESULT_LOADED);
DL_DMA_setSrcAddr (DMA、ADC0_CHAN_ID、DL_ADC12_getMemResultAddress (ADC12_0_INST、DL_ADC12_MEM_IDX_0));
DL_DMA_setSrcAddr (DMA、ADC1_CHAN_ID、DL_ADC12_getMemResultAddress (ADC12_1_INST、DL_ADC12_MEM_IDX_0));
DL_DMA_setDestAddr (DMA、ADC0_CHAN_ID、(unsigned int) ptr8_buffer0);
DL_DMA_setDestAddr (DMA、ADC1_CHAN_ID、(unsigned int) ptr8_buffer1);
DL_DMA_setTransferSize (DMA、ADC0_CHAN_ID、65);
DL_DMA_setTransferSize (DMA、ADC1_CHAN_ID、65);
// ADC DMA 启用
DL_ADC12_clearDMATriggerStatus (ADC12_0_INST、DL_ADC12_DMA_MEM0_RESULT_LOADED);
DL_ADC12_clearDMATriggerStatus (ADC12_1_INST、DL_ADC12_DMA_MEM0_RESULT_LOADED);
DL_ADC12_enableDMATOR (ADC12_0_INST、(DL_ADC12_DMA_MEM0_RESULT_LOADED);
DL_ADC12_enableDMATOR (ADC12_1_INST、(DL_ADC12_DMA_MEM0_RESULT_LOADED);
DL_DMA_setDestAddr (DMA、ADC0_CHAN_ID、(unsigned int) ptr8_buffer0);
DL_DMA_setDestAddr (DMA、ADC1_CHAN_ID、(unsigned int) ptr8_buffer1);
DL_DMA_enableChannel (DMA、ADC0_CHAN_ID);
DL_DMA_enableChannel (DMA、ADC1_CHAN_ID);
DL_ADC12_enableDMA (ADC12_0_INST);
DL_ADC12_enableDMA (ADC12_1_INST);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这似乎与 CTL2:SAMPCNT (以某种方式)设置为=3一致。 尽管您设置了 SYSCONFIG (DMA 样本计数=1)、您可能希望在断点处检查 SAMPCNT。

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

    如果您可以尝试将源长度更改为 Word (或调用的任何16位)、将目标保留为字节。 是的,你有什么"应该"的工作,但你可能是第一个人(永远)尝试 DMA 读取一个 MEMRES 寄存器按字节。

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

    发现了虫子……谢谢