Colibri iMX7 eMMC - ADC Inaccuracies

Hi

I am testing the ADC behavior on different Colibri modules. Unfortunately, it seems as if on the Colibri iMX7 module, the ADC binary values ( /sys/bus/iio/devices/iio\:device0/in_voltage#_raw ) are incorrect.

If I connect an ADC SODIMM pin to GND, the corresponding 12-bit ADC value on a Colibri iMX7 reads values in the range of 67-77, whereas on a Colibri iMX6ULL (on the exact same carrier board) it reads 0-3 (as expected). Also with other voltages (0-1.8V) supplied to the ADC the readings on the iMX7 seem inaccurate.

Do you have any idea, where this inaccuracy is coming from?

Thanks and best regards,

Tonio

Hi @tgsell

Could you provide the Software version of your module?
Which carrier board are you using?

Best regards,
Jaski

Hi @jaski.tx

We are using Toradex Yocto/OpenEmbedded Bsp 3.0 on our in-house developed carrier board. But I expect you to be able to reproduce this issue on any carrier board.

Best regards,

Tonio

Colibri iMX7 has 1.8V range ADC while all other Colibri module have 3.3V range ADS. So there are 10k series resistors placed in the ADC lines in order to protect the iMX7 SoC. As a result when ADC pin connected to ground some voltage drops on that resistor due to pin leakage current. That’s why you are reading raw value around 60-70. And Vref for internal iMX7 ADC came not from V3.3_analog as on IMX6ULL but from filtered internal V1.8 rail. That rail is common for all ICs on module. This creates an additional source of inaccuracy. Please note that internal SOM ADC was never intended to be used for high accuracy measurements. If you need better precision please use an external ADC.

Hi @alex.tx

Thanks for you explanation, I missed that part in the datasheet.

Can you please point me to the corresponding series resistors on the Colibri iMX7, such that I can replace them to increase ADC accuracy. Or do you see any problems with removing them (on our board max. 1.8V are guaranteed on the ADC pins)?

Best regards,

Tonio

Yes you can replace resistors R186-R189 by zero Ohm resistors or wire jumpers. This way iMX7 balls adc1_in0 - adc1_in3 will be directly wired to X1 pins 8,6,4,2. But be aware - such a modification will void a warranty.

SOM bottom view:

alt text

@alex.tx

Thanks.

Unfortunately, your attached pictures is not available (only alternative text displayed).

Sorry, fixed.