Hi all,
I am using LPC1768 for our custom board. ADC is main functionality for our requirement. I have given regulated 3.3V for VDDA and Vrefp and provided 0.1uF ceramic X7F capacitors as bypass capacitors. I have amplifiers and Low pass filters in line with the input. When measured there is no noise as such (only 15mV max) in supply and grounds. My input voltage is 2V. When read, the ADC is giving the correct with accuracy. But often the voltage read is coming more than 3V. I have tried with different ADC clocks from 1MHz to 6MHz. The problem is not resolved. Please check the code given below. My code is developed using keil RL-ARM RTOS. Please help me to resolve this problem.
#define ADC_Control 0x00200800 //ADC Initialised with 1MHz clock, Power Enabled U32 ADC_Read(U32 channel) { U32 temp_adc_done=0, temp_adc_data=0 ; if(( 0 <= channel) && (7 >= channel)) { LPC_ADC -> ADCR = ADC_Control | (1 << channel); LPC_ADC -> ADCR |= ADC_STACONV; //ADC conversion start while(!((temp_adc_done = LPC_ADC -> ADGDR)& ADC_Done)) temp_adc_data = LPC_ADC -> ADGDR; //Read the Converted data temp_adc_data = (temp_adc_data >> 4) & 0x00000FFF;//Right shifted by 4 since the data is from bits 15:4 bits return temp_adc_data; //return the digital value } else return 0; //Return 0 }