ads1256_rpi_driver
Дисклеймер
Модуль ядра (драйвер) для получения данных с АЦП ADS1256 в режиме внешней синхронизации - АЦП тактируется внешним импульсным сигналом строго 50 Гц (от лабораторного генератора, GPS-приемника). Гарантируется работа на одноплатном компьютере Raspberry Pi 3 Model B, операционная система Raspberry Pi OS, версия ядра 5.10
Подготовка к использованию
Необходимо установить пакет raspberrypi-kernel-headers:
sudo apt install raspberrypi-kernel-headers
Если планируете управлять модулем в Python 2.7, проверьте наличие пакетов pyserial, RPi.GPIO, sh (последний, обычно, обязательно отсутствует):
pip list | grep sh
sudo apt install python-sh
Обязательно нужно отключить драйвер, обслуживающий шину SPI - spidev. Не нашел другого способа, кроме как вмешаться в дерево устройств (Device-Tree). Перейдите в директорию spidev_disabler, выполните:
cd spidev_disabler
dtc spidev_disabler.dts -O dtb >spidev_disabler.dtbo
После компиляции вы получите другой файл, с расширением “.dtbo”. Можно либо сразу выполнить изменение в дереве устройств, либо, что еще лучше, поместить данную запись в автозагрузку - открыть /etc/rc.local и записать данную строку перед “exit 0”:
sudo dtoverlay -d . spidev_disabler
Разумеется, нужно убедиться, что служба rc.local активна:
systemctl status rc.local
Сборка модуля spirev
Перейдите в директорию spirev, соберите модуль:
cd spirev
make
Не обращайте внимания на предупреждения по поводу некоторых переменных. Чтобы загрузить модуль в ядро, выполните:
sudo insmod spirev.ko
Для выгрузки модуля:
sudo rmmod spirev.ko
По умолчанию АЦП пишет 1 несимметричный канал AIN0-AINCOM без программного усиления, но эти параметры можно легко менять. Частоту дисркетизации менять только в том случае, если вы понимаете, что делаете.
Описание
Модуль ядра (драйвер) для получения данных с АЦП ADS1256.