Hi,
I am working on 12 bit ADC with custom board which has MK22FX512AVLQ controller. When I am giving a constant voltage to ADC, I am observing a considerable fluctuation in the samples.
The 3.3 V supply to the controller is stable. The voltage at the ADC input pin is also constant.
On the hardware side:
I have a RC on the ADC pin with R = 100Ohm and C = 220pF. I have also tried changing this capacitor to 1uF keeping R the same. I also tried adding 100nF Capacitor on VREF_OUT pin (pin number 37). But no improvement was observed.
On software side:
Clock configuration is as follows :
Core clock : 80MHz
Bus clock: 40MHz
ADC configuration is as follows:
adc16_config_t s_adc_config;
EnableIRQ(ADC0_IRQn);
ADC16_GetDefaultConfig(&s_adc_config);
s_adc_config.clockSource = kADC16_ClockSourceAlt0;/*Bus clock 40 Mhz*/
s_adc_config.clockDivider = kADC16_ClockDivider4;/*Divided by 4*/
s_adc_config.longSampleMode = kADC16_LongSampleDisabled;
uint32_t ui32_freq;
ui32_freq = CLOCK_GetFreq(kCLOCK_BusClk);
ADC16_Init(ADC_BASE, &s_adc_config);
while(kStatus_Success != ADC16_DoAutoCalibration( ADC_BASE ));
if(ADC16_GetStatusFlags(ADC_BASE))
{
printf("Failed");
}
uint32_t ui32_temp;
ui32_temp = ADC16_GetChannelConversionValue(ADC_BASE, ADC_CHANNEL_GROUP);
ADC16_EnableHardwareTrigger(ADC_BASE, false); /* Make sure the software trigger is used. */
ADC16_EnableDMA(ADC_BASE, true);
I have tried doing following modification on the software side,
- Changing Buc clock frequency
- Changing prescaler of the ADC clock
- Changing the sampling period (long sampling enabled)
- Adding an intentional delay after the auto caliberation function returns Success status
Still the fluctations persist.
I have attached the schematic and test results data for the reference.
Please help in resolving the issue.
Thanks and Best Regards,
Vaibhavi