请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320F28P550SJ 工具与软件:
尊敬的所有人:
在调试 TMS320F28P55 ADC 采样时、使用了外部3.2V 基准电压。 调用库函数 ADC_setVREF (ADCA_BASE、ADC_reference_external、ADC_reference_3_3V)后、发现所获取的所有样本都将减半、例如、当测得的模拟端口 为1.6V 时、AD 采样应为2048、但实际的读取 AD 样本仅为1024。
是否有任何其他配置要执行?
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;