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.

[参考译文] TMS320F28335:F28335 ADC 和 DMA 配置

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/591480/tms320f28335-f28335-adc-and-dma-configuration

器件型号:TMS320F28335

您好!

我尝试使用 ADC 配置和 DMA 的示例、其中包括以下配置:


//配置 DMA 通道
DMADest =&DMABUF1[0];//将 DMA 目标指向数组的开头
DMASSOURCE =&AdcMirror.ADCRESULT0;//点 DMA 源到 ADC 结果寄存器基址
DMACH1AddrConfig (DMADest、DMASource);
DMACH1BurstConfig (3、1、10);
DMACH1TransferConfig (9、1、0);
DMACH1WrapConfig (1、0、0、1);
DMACH1ModeConfig (DMA_SEQ1INT、PERINT_ENABLE、OneShot_disable、CONT_disable、SYNC_disable、SYNC_SRC、
OVRFLOW_DISABLE、十六位、CHINT_END、CHINT_ENABLE);

它应采集4个通道、每个通道10个样本。

当尝试更改此配置时、例如2个通道、每个通道1024个样本时、它会失败。

我更新如下:

MACH1BurstConfig (2-1、1024);
DMACH1TransferConfig (1024-1、1、0);
DMACH1WrapConfig (1、0、0、1);

此配置是否适用于2个通道?

谢谢你

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

    您能更详细地描述一下它是如何发生故障的吗? 程序崩溃了吗? 您的缓冲区大小是否足够大、足以处理所有数据?
    配置正确。 我刚刚在工作台设置中验证了它。 DMA 配置为进行1024个2字的突发、并将在突发中的每个字之间跳转1024个字。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    感谢您的 anwer。

    问题是,当我检查缓冲器是否应该获得2个不同的 ADC 输入(B0和 B1)时,内容无效。

    我的目标是获取这2个 ADC 输入、并将其收集到缓冲器中、其中第一个通道的所有采样都存储在上部、以及样本中

    第二个通道的相位噪声。

    例如,在从0到1023的缓冲区中,样本编号1... 到 ADCIN B0的采样编号1023、

    在从1024到2047的缓冲区中,样本编号1... 高达 ADCIN B1的样本编号1023、

    是否更清晰?

    此致

    Stephane

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在这里提供我使用的 ADC 连接:
    AdcRegs.ADCTRL3.ALL = 0x00E0u;
    DELAY_US (100);
    AdcRegs.ADCTRL1.bit.SUSMOD = 3U;
    AdcRegs.ADCTRL1.bit.CPS =0U;
    AdcRegs.ADCTRL1.bit.ACQ_PS = 0;
    AdcRegs.ADCTRL3.bit.ADCCLKPS= 0x1;

    AdcRegs.ADCTRL1.bit.SEQ_OVRD =1;


    AdcRegs.ADCTRL1.bit.CONT_RUN= 1U;
    AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 0x1;

    AdcRegs.ADCTRL1.bit.SEQ_CASC = 0; // 0非级联模式

    AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 0x1;
    AdcRegs.ADCTRL2.bit.RST_SEQ1 = 0x1;
    AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x8;
    AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x8;
    AdcRegs.ADCMAXCONV.BIT.MAX_CONV1 = 1;//设置 ADC 以对每个 SOC 执行2次转换