This article explains how to use the built-in 4-channel @ 10 bit A/D converter lines
The A/D converter input lines are available on the following pins:
Signal |
Description |
CORE9G25 |
3.3V |
3.3 volt power line |
W24 |
AVDD |
Clean 3.24V out for A/D circuitry |
|
VREF |
A/D voltage reference input |
W19 |
AGND |
Analog GND |
|
AD0 |
Analog input 0 |
W20 |
AD1 |
Analog input 1 |
W21 |
AD2 |
Analog input 2 |
W22 |
AD3 |
Analog input 3 |
W23 |
GND |
Digital GND |
W1 |
Test the Module
Loading the module should have created a sysfs directory in /sys/bus/iio/devices/iio:deviceN
, N being between 0 and 255. It is most likely to be 0, but you can be sure by looking into the name file in that directory.
root@at91sam9g20ek:~# ls -l /sys/bus/iio/devices/iio\:device0/
drwxr-xr-x 2 root root 0 Mar 10 02:24 buffer
-r--r--r-- 1 root root 4096 Mar 10 02:24 dev
-r--r--r-- 1 root root 4096 Mar 10 02:24 in_voltage0_raw
-r--r--r-- 1 root root 4096 Mar 10 02:24 in_voltage1_raw
-r--r--r-- 1 root root 4096 Mar 10 02:24 in_voltage2_raw
-r--r--r-- 1 root root 4096 Mar 10 02:24 in_voltage3_raw
-rw-r--r-- 1 root root 4096 Mar 10 02:24 in_voltage_scale
-r--r--r-- 1 root root 4096 Mar 10 02:24 name
drwxr-xr-x 2 root root 0 Mar 10 02:24 power
drwxr-xr-x 2 root root 0 Mar 10 02:24 scan_elements
lrwxrwxrwx 1 root root 0 Mar 10 02:24 subsystem -> ../../../../bus/iio
drwxr-xr-x 2 root root 0 Mar 10 02:24 trigger
-rw-r--r-- 1 root root 4096 Mar 10 02:24 uevent
If you have devtmpfs, it will also have created an iio:deviceN
file under /dev
.
Software Triggers
Software triggers are an ADC operating mode where the software starts the conversion.
This feature is exposed by IIO through the following files:
in_voltageX_raw
: raw value of the channel X of the ADC
in_voltage_scale
: value you have to multiply in_voltageX_raw with to have a value in microvolts
Reading into in_voltageX_raw
will perform a software trigger on the ADC, then block until the conversion is completed, and finally return the value of this conversion.
Please note that conversions are done one channel at a time.
Here is the output on the AT91SAM9 console that shows an ADC measure when a 3V
DC power supply is connected between analog ground AGND
and ADC input 0 AD0
pins:
root@at91sam9g20ek:~# cat /sys/bus/iio/devices/iio\:device0/in_voltage0_raw
948
root@at91sam9g20ek:~# cat /sys/bus/iio/devices/iio\:device0/in_voltage_scale
3222.000000
We can calculate the result: 948 x 3222
= 3.0V
More Details, Reading the A/D converter lines: