您好,
我正在使用 TMS320F 28377S ADC。 当以10mV 为单位输入 ADC 的输入电压时、ADC 的结果需要是线性的、但在我使用的系统中、ADC 结果值不是线性的、而是级联的。 出什么问题了?
ADC 转换周期为10ms、所有通道均可立即读取
测试结果如下。
< ADC 结果>
3.40 2501
3.41 2511.
3.42 2517.
3.43 2518
3.44 2533
3.45 2543
我的系统设置如下
{
EALLOW;
AdcaRegs.ADCCTL2.bit.prescale = 15;
AdcbRegs.ADCCTL2.bit.prescale = 15;
AdcSetMode (ADC_ADCA、ADC_resolution_12位、ADC_SIGNALMODE_SINGLE);
AdcSetMode (ADC_ADCB、ADC_Resolution、12位、ADC_SIGNALMODE_SINGLE);
//将脉冲位置设置为晚期
AdcaRegs.ADCCTL1.bit.INTPULSEPOS=1;
AdcbRegs.ADCCTL1.bit.INTPULSEPOS = 1;
//为 ADC 加电
AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1;
AdcbRegs.ADCCTL1.bit.ADCPWDNZ = 1;
//延迟1ms 以允许 ADC 加电时间
DELAY_US (1000);
//选择要转换的通道和转换结束标志
//ADCA
AdcaRegs.ADCSOC2CTL.bit.CHSEL = 2;
AdcaRegs.ADCSOC3CTL.bit.CHSEL = 3;
AdcaRegs.ADCSOC4CTL.bit.CHSEL = 4;
AdcaRegs.ADCSOC5CTL.bit.CHSEL = 5;
AdcaRegs.ADCSOC2CTL.bit.ACQPS = 30;
AdcaRegs.ADCSOC3CTL.bit.ACQPS = 30;
AdcaRegs.ADCSOC4CTL.bit.ACQPS = 30;
AdcaRegs.ADCSOC5CTL.bit.ACQPS = 30;
AdcaRegs.ADCINTSEL1N2.bit.INT1E = 1;
AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = 5;
AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;
//ADCB
AdcbRegs.ADCSOC0CTL.bit.CHSEL = 0;
AdcbRegs.ADCSOC2CTL.bit.CHSEL = 2;
AdcbRegs.ADCSOC3CTL.bit.CHSEL = 3;
AdcbRegs.ADCSOC0CTL.bit.ACQPS = 30;
AdcbRegs.ADCSOC2CTL.bit.ACQPS = 30;
AdcbRegs.ADCSOC3CTL.bit.ACQPS = 30;
AdcbRegs.ADCINTSEL1N2.bit.INT1E = 1;
AdcbRegs.ADCINTSEL1N2.bit.INT1SEL = 3;
AdcbRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;
EDIS;
}
ADC 结果如下所示
{
AdcaRegs.ADCSOCFRC1.ALL = 0x003C;//SOC2、3、4、5
while (AdcaRegs.ADCINTFlG.bit.ADCINT1 = 0);
AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;
US_resulta2 = AdcaResultRegs.ADCRESULT2;
US_resulta3 = AdcaResultRegs.ADCRESULT3;
US_resulta4 = AdcaResultRegs.ADCRESULT4;
US_resulta5 = AdcaResultRegs.ADCRESULT5;
AdcbRegs.ADCSOCFRC1.ALL = 0x000D;//SOC0、2、3
//等待 ADCB 完成,然后确认标志
while (AdcbRegs.ADCINTFlG.bit.ADCINT1 = 0);
AdcbRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;
US_resultb0 = AdcbResultRegs.ADCRESULT0;
US_resultb2 = AdcbResultRegs.ADCRESULT2;
US_resultb3 = AdcbResultRegs.ADCRESULT3;
}
请给我们一点意见、了解问题是什么
谢谢、Steven Kim