
Я пытаюсь заставить SPI работать на моей плате. Вот что у меня получилось:
- SPI по умолчанию не включен в armbian, сначала его нужно включить (включить соответствующий оверлей DT)
- в Linux доступ к SPI возможен только через файлы /dev/spidev*.*
- если я не вижу никаких устройств spi в папке dev, значит SPI не включен на моей плате
- в последних версиях armbian spi можно включить в armbain-config (в разделе System/Hardware/spi-spidev)
- в предыдущих версиях нужно было декомпилировать
/boot/script.bin
в fex-файл, включать там SPI и компилировать обратно
Я выполнил чистую установку Armbian Bionic (ранее я также пробовал Stretch), обновил его и включил spi-spidev, перезапустил плату, но файлы spidev так и не появились.
Вот мойarmbianmonitor
бревно. Вот как я проверяю, включен ли SPI:
dima@orangepipcplus:~$ cat /boot/armbianEnv.txt
verbosity=1
logo=disabled
console=both
disp_mode=1920x1080p60
overlay_prefix=sun8i-h3
rootdev=UUID=09e9478d-c7f2-4b16-a2d7-66f5313ff813
rootfstype=ext4
overlays=spi-add-cs1 spi-jedec-nor spi-spidev
usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u
dima@orangepipcplus:~$ ls /dev/*spi*
ls: cannot access '/dev/*spi*': No such file or directory
Кстати, моя цель — создать проект умного дома с использованием связи nrf24l01, но я застрял на ошибке скрипта, которая гласит could not open /dev/spidev0.0
(не точная вставка)
Итак, мой вопрос:как включить spi чтобы /dev/spidev*.*
файлы появились?
решение1
Ладно, это было действительно глупо. Мне просто нужно было прочитать оНаложения дерева устройствосторожно.
Я не установил требуемый параметр SPI param_spidev_spi_bus
. Вот мой armbianEnv.txt
текущий:
verbosity=1
logo=disabled
console=both
disp_mode=1920x1080p60
overlay_prefix=sun8i-h3
rootdev=UUID=09e9478d-c7f2-4b16-a2d7-66f5313ff813
rootfstype=ext4
overlays=spi-spidev
param_spidev_spi_bus=0
usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u
Обратите внимание, чтоarmbain-configне устанавливает этот параметр, поэтому вы не сможете заставить SPI работать, используя только этот инструмент. Так что на данный момент проще просто редактировать armbianEnv.txt
напрямую.
решение2
У меня есть Orange Pi Lite сАрмянскийустановлен. У меня есть аналого-цифровой преобразователь MCP3208, получающий данные с некоторых датчиков, и я сделал то, что сказал rattrapper, но в моем случае интерфейс SPI не работал. Я, наконец, решил это следующим образом:
- В командной строке:
sudo armbian-config -> system -> hardware -> enable spi-spidev
- Проверьте параметр SPI,
param_spidev_spi_bus = 0
как объяснил rattraper в файле /boot/armbianEnv.txt. В оверлеях должно быть написано spi-spidev. - Убедитесь, что библиотека spidev установлена, выполнив следующую команду:
sudo pip3 install spidev
- Наконец, убедитесь, что вы импортируете библиотеку spidev в свой скрипт:
import spidev
Это то, что сработало у меня, поэтому я надеюсь, что это сработает и у вас.