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.

TM4F123 ADC精度问题

大家好!我最近在Keil MDK调试TM4F123的ADC功能时,用的是PE0口作为ADC输入口,配置代码如下,

这代码主要是TI给的官方例程,12bitADC采样,3.3V供电。外部输入的电压经过采样转化,发现计算值和输入值误差很大。输入电压较低时有0.7V的误差,输入电压较高误差也有0.3v左右。很奇怪,大家帮忙看看,有什么办法提高精度?谢谢了。

int main(void)

 {        unsigned long ulADC0_Value[1];    

         unsigned long addr;    

         SysCtlClockSet(SYSCTL_SYSDIV_10 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |

                       SYSCTL_XTAL_16MHZ);    

           SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);    

           SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);  

           GPIOPinTypeADC(GPIO_PORTE_BASE, GPIO_PIN_0);

           ADCSequenceConfigure(ADC0_BASE, 3, ADC_TRIGGER_PROCESSOR, 0); 

           ADCSequenceStepConfigure(ADC0_BASE, 3, 0, ADC_CTL_CH3 | ADC_CTL_IE |                           

                              ADC_CTL_END);   

           ADCSequenceEnable(ADC0_BASE, 3);    

           ADCIntClear(ADC0_BASE, 3);   

             while(1)       

                   {         

                             ADCProcessorTrigger(ADC0_BASE, 3);         

                              while(!ADCIntStatus(ADC0_BASE, 3, false))        

                                   { 

                                   }         

                             ADCSequenceDataGet(ADC0_BASE, 3, ulADC0_Value);        

                             addr=ulADC0_Value[0];      

                             SysCtlDelay(SysCtlClockGet() / 12);    

                     }

  }