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 }
Sounds to me this problem is not firmware problem but hardware unstable problem.
"But some times it is giving digital values which are equivalent to more than 3V." How long the "more than 3V" last? When the ADC gives values equivalent to more than 3V, what is the voltage measured by Multimeter?
My question is, eventhough there is no noise in the analog input channels, supply and ground, Just as I mentioned above, how can you confirm there is no noise? The "more than 3V" last how long? Can you use oscilloscope to capture what is happening when the ADC gives values equivalent to more than 3V?
Note that the ADC measures relative to a reference voltage. So if that reference voltage makes a dip, the ADC reading will show a too high value. Are your input signal always lower than VDDA? Are your input signal always inside VREFN and VREFP?
Next thing is that there is a potential that a short, but high, voltage spike could result in a latchup of the input, which can result in high readings.
Hi,
My firmaware is starting ADC conversion once for every 10 mSec. After about 5 Secs or 10Secs, I am observing this error. At that time I have checked using oscilloscope, it shows 2V only. As I have already mentioned there is nothing mentionable noise observed (it is only 15mV).
regards Lingaraju
But have you looked at all signals? Is ground stable? Is VDDA stable? What sampling rate on the scope - fast enough to catch a short spike?
My firmaware is starting ADC conversion once for every 10 mSec. After about 5 Secs or 10Secs, I am observing this error. do you, after some seconds get a 'blip' (one or two wrong readings) or ar all readings thereafter wrong?
if it is a 'blip' does it repeat and how frequently, is the time between blip 1 and blip 2 about the same as the time between blip 2 and blip 3? do some statistics on blip intervals.
Erik
I am using a 200MHz oscilloscope. the time interval between the blips is not linear, some times it is 5 Secs and sometimes it is around 1 minute.
ok, so it is blips. just to lead you on your way I have had a case of enormous blips when an elevator in the building started. if you have the possibility to temporarily change to battery power that would be a great diagnostic