BBB имеет восемь встроенных пинов АЦП. Для того, чтобы на BBB появились соответствующие устройства, надо включить сборку следующих модулей при конфигурировании ядра (у меня 4.1.0-rc1-bone0):
1) ti_am335x_tscadc.ko(CONFIG_MFD_TI_AM335X_TSCADC);
2) ti_am335x_adc.ko(CONFIG_TI_AM335X_ADC).
Модули лучше сделать встроенными (build-in): соответствующие опции будут выделены звездочкой (*). Модуль adc зависит от tscadc, поэтому настойки типа сборки касаются сразу всех модулей.
2) ti_am335x_tscadc.ko(CONFIG_MFD_TI_AM335X_TSCADC)
1) ti_am335x_tscadc.ko(CONFIG_MFD_TI_AM335X_TSCADC);
2) ti_am335x_adc.ko(CONFIG_TI_AM335X_ADC).
Модули лучше сделать встроенными (build-in): соответствующие опции будут выделены звездочкой (*). Модуль adc зависит от tscadc, поэтому настойки типа сборки касаются сразу всех модулей.
Необходимые опции menuconfig:
1) ti_am335x_adc.ko(CONFIG_TI_AM335X_ADC)
Device Drivers ---> [*] Industrial I/O support ---> [*] Enable buffer support within IIO <*> Industrial I/O lock free software ring Analog to digital converters ---> <*> TI's AM335X ADC driver
Device Drivers ---> Multifunction device drivers ---> <*> TI ADC / Touch Screen chip support
В device tree для корректной работы adc надо внести следующие исправления:
1) файл bb-kernel/KERNEL/arch/arm/boot/dts/am33xx.dtsi :
...
tscadc: tscadc@44e0d000 { compatible = "ti,am3359-tscadc"; reg = <0x44e0d000 0x1000>; interrupt-parent = <&intc>; interrupts = <16>; ti,hwmods = "adc_tsc"; status = "okay"; tsc { compatible = "ti,am3359-tsc"; }; adc { compatible = "ti,am3359-adc"; ti,adc-channels = <0 1 2 3 4 5 6 7>; }; };
...
В результате после загрузки в директории /sys/bus/iio/devices/iio:device0 должны появиться устройства in_voltage0_raw, in_voltage1_raw ... , in_voltage7_raw:
cd /sys/bus/iio/devices/iio:device0
ls -la
Вывод:
root@arm:/sys/bus/iio/devices/iio:device0# ls -la
total 0
drwxr-xr-x 5 root root 0 Jan 1 00:03 .
drwxr-xr-x 4 root root 0 Jan 1 00:03 ..
drwxr-xr-x 2 root root 0 Jan 1 00:03 buffer
-r--r--r-- 1 root root 4096 Jan 1 00:03 dev
-rw-r--r-- 1 root root 4096 Jan 1 00:03 in_voltage0_raw
-rw-r--r-- 1 root root 4096 Jan 1 00:03 in_voltage1_raw
-rw-r--r-- 1 root root 4096 Jan 1 00:03 in_voltage2_raw
-rw-r--r-- 1 root root 4096 Jan 1 00:03 in_voltage3_raw
-rw-r--r-- 1 root root 4096 Jan 1 00:03 in_voltage4_raw
-rw-r--r-- 1 root root 4096 Jan 1 00:03 in_voltage5_raw
-rw-r--r-- 1 root root 4096 Jan 1 00:03 in_voltage6_raw
-rw-r--r-- 1 root root 4096 Jan 1 00:03 in_voltage7_raw
-r--r--r-- 1 root root 4096 Jan 1 00:03 name
lrwxrwxrwx 1 root root 0 Jan 1 00:03 of_node -> ../../../../../../firmware/devicetree/base/ocp/tscadc@44e0d000/adc
drwxr-xr-x 2 root root 0 Jan 1 00:03 power
drwxr-xr-x 2 root root 0 Jan 1 00:03 scan_elements
lrwxrwxrwx 1 root root 0 Jan 1 00:03 subsystem -> ../../../../../../bus/iio
-rw-r--r-- 1 root root 4096 Jan 1 00:03 uevent
total 0
drwxr-xr-x 5 root root 0 Jan 1 00:03 .
drwxr-xr-x 4 root root 0 Jan 1 00:03 ..
drwxr-xr-x 2 root root 0 Jan 1 00:03 buffer
-r--r--r-- 1 root root 4096 Jan 1 00:03 dev
-rw-r--r-- 1 root root 4096 Jan 1 00:03 in_voltage0_raw
-rw-r--r-- 1 root root 4096 Jan 1 00:03 in_voltage1_raw
-rw-r--r-- 1 root root 4096 Jan 1 00:03 in_voltage2_raw
-rw-r--r-- 1 root root 4096 Jan 1 00:03 in_voltage3_raw
-rw-r--r-- 1 root root 4096 Jan 1 00:03 in_voltage4_raw
-rw-r--r-- 1 root root 4096 Jan 1 00:03 in_voltage5_raw
-rw-r--r-- 1 root root 4096 Jan 1 00:03 in_voltage6_raw
-rw-r--r-- 1 root root 4096 Jan 1 00:03 in_voltage7_raw
-r--r--r-- 1 root root 4096 Jan 1 00:03 name
lrwxrwxrwx 1 root root 0 Jan 1 00:03 of_node -> ../../../../../../firmware/devicetree/base/ocp/tscadc@44e0d000/adc
drwxr-xr-x 2 root root 0 Jan 1 00:03 power
drwxr-xr-x 2 root root 0 Jan 1 00:03 scan_elements
lrwxrwxrwx 1 root root 0 Jan 1 00:03 subsystem -> ../../../../../../bus/iio
-rw-r--r-- 1 root root 4096 Jan 1 00:03 uevent
Получение данных с первого из восьми встроенных АЦП:
cd /sys/bus/iio/devices/iio:device0
cat ./in_voltage0_raw
Вывод:
6
Источники:
1) http://processors.wiki.ti.com/index.php/AM335x_ADC_Driver's_Guide
2) http://beagleboard.org/support/BoneScript/potentiometer/
3) https://www.linux.com/learn/how-get-analog-input-beaglebone-black
4) https://www.youtube.com/watch?v=ncHVFsxGy9w
Комментариев нет:
Отправить комментарий