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.
使用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模块的问题。