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.

[参考译文] TMS320F280023C:ADC 设置问题

Guru**** 2520310 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1074575/tms320f280023c-problems-with-adc-setup

部件号:TMS320F280023C
“线程:C2000WARE”中讨论的其它部件

您好,

我在  微控制器上设置了 SOC2,以触发 ePWM1 SOCA 输出信号。

我的输入引脚(A2)上有不同的电压,但尽管 ISR 经常被输入(使用计数器变量检查),ADC 结果寄存器的值不会改变。 它只在2045-2046时保持固定状态。

这是我的初始化代码和 ISR 代码。 请帮我弄清楚我错过了什么。

void init_adc(void)
{
    EALLOW;
    CpuSysRegs.PCLKCR13.bit.ADC_A=1;
    EDIS;
    ADC_setVREF(ADCA_BASE, ADC_REFERENCE_INTERNAL, ADC_REFERENCE_3_3V);

    EALLOW;
    AdcaRegs.ADCCTL1.bit.ADCPWDNZ=1;        // Power on the ADC

    AdcaRegs.ADCCTL2.bit.PRESCALE = 2;      // ADCCLK=50MHz for SYSCLK=100MHz

    //SOC2: triggered by EPWM1-SOCA, 270ns acquisition window, sampling on channel 2
    AdcaRegs.ADCSOC2CTL.bit.TRIGSEL = 0x5;
    AdcaRegs.ADCSOC2CTL.bit.ACQPS = 26;
    AdcaRegs.ADCSOC2CTL.bit.CHSEL = 2;

    AdcaRegs.ADCCTL1.bit.INTPULSEPOS=1;     // Interrupt pulse generation occurs at the end of conversion, 1 cycle before result latching on to the result reg
    AdcaRegs.ADCINTSEL1N2.bit.INT2SEL=2;    // Set EOC2 as interrupt trigger for ADCINT2
    AdcaRegs.ADCINTSEL1N2.bit.INT2CONT=0;
    AdcaRegs.ADCINTSEL1N2.bit.INT2E=1;
    EDIS;

    DEVICE_DELAY_US(5000);
}

__interrupt void ADC2_ISR(void)
{
    adcval_raw = AdcaResultRegs.ADCRESULT2;
    adcval = 3.3*(((float)adcval_raw)/4096);
    soaCurrent = ((1.65-adcval)/(20*0.004));
    EPwm1Regs.ETCLR.bit.SOCA=1;
    AdcaRegs.ADCINTFLGCLR.bit.ADCINT2=1;
    PieCtrlRegs.PIEACK.bit.ACK10=1;
}

请提前感谢。

此致,

维什努

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

    您好,Vishnu,

    即使您没有使用 ADC-C,您 仍可能需要配置 ADC-C 参考,因为它与此设备上的 ADC-A 共享一个参考引脚。  我认为这不是问题,但这绝对 是最好的做法。

    除此之外,我没有发现任何明显的缺失。  您可能会尝试切换频道选择 以尝试另一个频道以查看您的 A2频道是否可能损坏。  我还建议您尝试一下 C2000ware 中包含的一些 ADC 软件示例(既未修改也未修改,只能将通道选择更改为 A2)。   还值得在某个时间点暂停执行,并使用表达式窗口检查 AdcaRegs 的状态,以确保总体上 Adca 和 SOC2的配置符合预期。   

    您运行的是什么硬件? 这是 TI controlCARD 还是 Launchpad,还是您开发的定制 PCB?