Difference between revisions of "I.MX6UL internal ADC"

From ArmadeusWiki
Jump to: navigation, search
(Created page with "== Introduction == This description uses Linux kernel > 3.7. i.MX6UL (processor of OPOS6UL has an integrated 12 bits 16 channels Analog to Digital Converter. Only chann...")
 
(Introduction)
Line 1: Line 1:
 
== Introduction ==
 
== Introduction ==
  
This description uses Linux kernel > 3.7.
+
This description uses Linux kernel >= 4.8.
  
 
i.MX6UL (processor of [[OPOS6UL]] has an integrated 12 bits 16 channels Analog to Digital Converter.
 
i.MX6UL (processor of [[OPOS6UL]] has an integrated 12 bits 16 channels Analog to Digital Converter.
Line 7: Line 7:
 
Only channels 0-6 may be used to generic conversions and channels 2, 3, 4, 5 are used for the touchscreen on [[OPOS6ULDev]].
 
Only channels 0-6 may be used to generic conversions and channels 2, 3, 4, 5 are used for the touchscreen on [[OPOS6ULDev]].
  
* Channel 0 is available on J10 pin 38 of [[APF28Dev]]
+
* Channel 1 is available on J21 pin 40 of [[OPOS6ULDev]] (AIN1/YNLR: muxed with touchscreen)
* Channel 1 is available on J10 pin 36 of [[APF28Dev]]
+
* Channel 2 is available on J21 pin 38 of [[OPOS6ULDev]] (AIN2/YPLL: muxed with touchscreen)
* Channel 6 is available on J10 pin 35 of [[APF28Dev]]
+
* Channel 3 is available on J21 pin 39 of [[OPOS6ULDev]] (AIN3/XNUR: muxed with touchscreen)
 +
* Channel 4 is available on J21 pin 37 of [[OPOS6ULDev]] (AIN4/XPUL: muxed with touchscreen)
  
 
== Driver ==
 
== Driver ==

Revision as of 18:24, 19 December 2016

Introduction

This description uses Linux kernel >= 4.8.

i.MX6UL (processor of OPOS6UL has an integrated 12 bits 16 channels Analog to Digital Converter.

Only channels 0-6 may be used to generic conversions and channels 2, 3, 4, 5 are used for the touchscreen on OPOS6ULDev.

  • Channel 1 is available on J21 pin 40 of OPOS6ULDev (AIN1/YNLR: muxed with touchscreen)
  • Channel 2 is available on J21 pin 38 of OPOS6ULDev (AIN2/YPLL: muxed with touchscreen)
  • Channel 3 is available on J21 pin 39 of OPOS6ULDev (AIN3/XNUR: muxed with touchscreen)
  • Channel 4 is available on J21 pin 37 of OPOS6ULDev (AIN4/XPUL: muxed with touchscreen)

Driver

Driver is by default included if you choose an OPOS6UL as target.

Otherwise, you can select it that way:

[  ] $ make linux-menuconfig
Device Drivers  --->
    ...
    <*> Industrial I/O support  --->
            ...
            Analog to digital converters
                ...
                <*> Freescale vf610 ADC driver

Then compile the distribution :

[  ] $ make linux && make

Use it

Read channels value

# cd /sys/bus/iio/devices/iio:device0
# ls
buffer                   in_voltage11_raw  in_voltage2_raw   name
dev                       in_voltage12_raw  in_voltage3_raw   power
in_temp8_raw      in_voltage13_raw  in_voltage4_raw   scan_elements
in_temp9_raw      in_voltage14_raw  in_voltage5_raw   subsystem
in_voltage0_raw   in_voltage15_raw  in_voltage6_raw   trigger
in_voltage10_raw in_voltage1_raw   in_voltage7_raw   uevent

To read ADC value just «cat» the corresponding input file:

# cat in_voltage0_raw       for channel 0
4095

All values are not converted (ie. directly show the register content). To have the mV value, you must doi: value_mV = read_value * 1850/4095

Links