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.

[参考译文] CCS/MSP430FR5847:如何使用DMA从ADC12通道序列传输数据

Guru**** 2508465 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/581853/ccs-msp430fr5847-how-to-transfer-data-from-adc12-sequence-of-channels-using-dma

部件号:MSP430FR5847

工具/软件:Code Composer Studio

大家好,

我使用16位表对ADC12的4个模拟输入进行过采样和过滤。 目前我正在使用中断和序列结束来进行所有计算。 但现在我想使用DMA将原始数据从ADC传输到表中,然后在需要时每秒只进行几次计算。

我的第一个想法是使用2个DMA通道。 第一个将使用“固定地址”将数据从ADC写入表到地址块。 第二个DMA将修改第一个DMA的源地址,因此在下一个DMA请求中,它将复制下一个通道。

结果表将如下所示:ch0_sample0,ch1_sample0,ch2_sample0,ch3_sample0,ch0_sample1, CH1_sample1,CH2_sample1,CH3_sample1,CH1_sample2,...

第二个DMA的表:CH0的地址,CH1的地址,CH2的地址,CH3的地址

它应该起作用,但它似乎有点复杂.... 有没有更简单的方法来实现这一目的?

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

    这似乎是一条逻辑路由,但有DMA的限制。 由于ADC43勘误表的原因,您应该期望在每次ADC转换结束时(与序列结束相比)进行DMA传输,并且很可能需要使用单传输模式(而不是块传输)。 两者都将从ADC12IFG触发,第一个DMA的大小可以尽可能长,但第二个将限制为4,然后您必须重复源地址。

    此致,
    Ryan