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.

TMS320F280049C: ADC采样问题

Part Number: TMS320F280049C

使用ADC采样带有偏置的交流输入电压,交流输入的偏置是外部的运放电路加上去的,实际测试不会随着交流输入的增大而增大,但是我使用DAC输出了程序内的ADCResult寄存器的值,发现该寄存器输出的波形是对的,但是偏置会随着输入电压的增大而增大。综合来说就是ADC采样引脚的输入与内部寄存器采集到的值不相符,正是由于该问题导致了整流器的输入控制较差。

void initADC(void)
{
//
// Setup VREF as internal
//
SetVREF(ADC_ADCA, ADC_INTERNAL, ADC_VREF3P3);
SetVREF(ADC_ADCB, ADC_INTERNAL, ADC_VREF3P3);
SetVREF(ADC_ADCC, ADC_INTERNAL, ADC_VREF3P3);
EALLOW;
//
// Set ADCCLK divider to /4
//
AdcaRegs.ADCCTL2.bit.PRESCALE = 6;
//
// Set pulse positions to late
//
AdcaRegs.ADCCTL1.bit.INTPULSEPOS = 1;
//
// Power up the ADC and then delay for 1 ms
//
AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1;
EDIS;
DELAY_US(1000);
}

void Init_DAC(void)
{
EALLOW;
DacbRegs.DACCTL.bit.DACREFSEL = 1; //选择基准电压
DacbRegs.DACOUTEN.bit.DACOUTEN = 1; //DAC output is enabled
//DacbRegs.DACLOCK.bit.DACOUTEN = 0; //DACOUTEN register is not locked.
//DacbRegs.DACLOCK.bit.DACVAL = 0; //DACVALS register is not locked
//DacbRegs.DACLOCK.bit.DACCTL = 0; //DACCTL register is not locked
DacbRegs.DACCTL.bit.LOADMODE = 0; //choose the Sysclk
DacbRegs.DACCTL.bit.MODE = 1; //MAX DAC OUTPUT = 3.3V
EDIS;
}

这是我的ADC和DAC初始化的函数,不知道是哪里配置出了问题还是本身ADC模块的问题。

  • 1. ADC的采样率是多少?S-H配置的是多少?

    2. 也不能完全排除DAC的问题。要排除DAC的问题,首先要保证DAC的输出与ADC结果寄存器的值一致。

x 出现错误。请重试或与管理员联系。