Part Number: TMS320F28P550SJ
Tool/software:
Dear all,
When I debug the TMS320F28P55 ADC sampling, an external 3.2V reference voltage is used. Call the library function ADC_setVREF(ADCA_BASE, ADC_REFERENCE_EXTERNAL, ADC_REFERENCE_3_3V), find that all the obtained samples are halved, for example, when the analog port measured 1.6V, and AD sampling should be 2048, However, the actual read AD sample is only 1024.
Is there any other configure to do ?
EALLOW;
ADC_setOffsetTrim(ADCA_BASE);
ADC_setOffsetTrim(ADCB_BASE);
ADC_setOffsetTrim(ADCC_BASE);
ADC_setOffsetTrim(ADCD_BASE);
ADC_setOffsetTrim(ADCE_BASE);
EDIS;
EALLOW;
ADC_setVREF(ADCA_BASE, ADC_REFERENCE_EXTERNAL, ADC_REFERENCE_3_3V);
ADC_setVREF(ADCB_BASE, ADC_REFERENCE_EXTERNAL, ADC_REFERENCE_3_3V);
ADC_setVREF(ADCC_BASE, ADC_REFERENCE_EXTERNAL, ADC_REFERENCE_3_3V);
ADC_setVREF(ADCD_BASE, ADC_REFERENCE_EXTERNAL, ADC_REFERENCE_3_3V);
ADC_setVREF(ADCE_BASE, ADC_REFERENCE_EXTERNAL, ADC_REFERENCE_3_3V);
EDIS;
EALLOW;
//
// Set ADCCLK divider to /4
//
AdcaRegs.ADCCTL2.bit.PRESCALE = 6;
AdcbRegs.ADCCTL2.bit.PRESCALE = 6;
AdccRegs.ADCCTL2.bit.PRESCALE = 6;
AdcdRegs.ADCCTL2.bit.PRESCALE = 6;
AdceRegs.ADCCTL2.bit.PRESCALE = 6;
//
// Set pulse positions to late
//
AdcaRegs.ADCCTL1.bit.INTPULSEPOS = 1;
AdcbRegs.ADCCTL1.bit.INTPULSEPOS = 1;
AdccRegs.ADCCTL1.bit.INTPULSEPOS = 1;
AdcdRegs.ADCCTL1.bit.INTPULSEPOS = 1;
AdceRegs.ADCCTL1.bit.INTPULSEPOS = 1;
//
// Power up the ADC and then delay for 1 ms
//
AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1;
AdcbRegs.ADCCTL1.bit.ADCPWDNZ = 1;
AdccRegs.ADCCTL1.bit.ADCPWDNZ = 1;
AdcdRegs.ADCCTL1.bit.ADCPWDNZ = 1;
AdceRegs.ADCCTL1.bit.ADCPWDNZ = 1;
EDIS;
DELAY_US(ADC_usDELAY); // Delay before converting ADC channels
EALLOW;