I am using internal ADC of the iMX6UL.
It shows a strange non-linearity where the conversion seems to increase the error up to mid scale (where error of conversion is 100mV, huge!) then the error decreases and conversion returns correct values when invput voltge approaches 3V and towards 3V3 which is both ADC supply and ADC Vref.
ADC supply and ADC Vref are well filtered and readings are very stable but I see such behavior, like the ADC seems to follow not a straight line but a broken line.
Maybe there are errors in the device tree programming?
I am using ADC1 and channels 9 7 6 5.
Any support & suggestion welcome.
Attached: graphic of ADC behavior. Both ADC Vref and ADC supply are filtered and stable 3.3V. The black line of the graphic is the voltage applied to the ADC channel input. We measured with 1mV steps using Fluke meter. For each 1mV step we read the ADC conversion (RED line). Codes from ADC seem to differ from the ideal conversion line up to about 1.8V input voltage: at this point the conversion jumps over the ideal line (the gap corresponds to 100mV more or less). Then the conversion error diminishes and to the end of the range it matches the ideal line.
We have disabled the Touch ADC2 driver.
After deep inspection the boot-loader does nothing else than setting the pins used by ADC as inputs.
We are using the standard ADC driver.
This phenomenon happens on all CPU boards we are using now.