请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: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;