Интерфейс SPI (англ. Serial Peripheral Interface, SPI bus — последовательный периферийный интерфейс, шина SPI) — это последовательный четырёх-проводной интерфейс передачи данных, предназначенный для обеспечения простого и недорогого высокоскоростного сопряжения микроконтроллеров и периферии.
Сколько SPI портов на Orange Pi
Если брать классический Orange Pi с GPIO на 40 пин, то мы имеем полтора SPI порта. Смотрим распиновку Orange Pi PC:
отсюда видно, что на гребёнке только один полноценный SPI порт — это SPI0.
Номер пина CPU | SPI0 |
---|---|
PC0 | MOSI |
PC1 | MISO |
PC2 | CLK |
PC3 | CS |
Порт SPI1 присутствует только в виде CLK и CS, что явно недостаточно. Если открыть документ-схему платы, то мы обнаружим следующее:
Номер пина CPU | SPI1 |
---|---|
PA13 | CS |
PA14 | CLK |
PA15 | MOSI |
PA16 | MISO |
MOSI идёт на индикатор состояния (STATUS-LED),
а MISO идёт на комбинированный разъём Mini-Jack 3.5 мм и отключает звук при подключении провода.
В таком случае, только если вы очень настойчив и вам «очень нужен» этот SPI1 порт, можете распаять светодиодный индикатор и разъём Mini-Jack 3.5 мм и припаять нужное вам устройство. Но это не рекомендуется делать.
Включение шины SPI на Orange Pi
По умолчанию шина SPI0 на Orange Pi отключена. Для включения выполните следующие действия.
Включение шины SPI на ядре 3.4 (Ubuntu 16.04)
Чтобы включить шину SPI на ядре 3.4, нужно редактировать script.bin
файл. script.bin — главный конфигурационный файл ядра использующийся при загрузке ОС на платах Orange Pi (и остальных, базирующихся на sunxi). Это скомпилированный бинарный файл, внесение правок в который — невозможно.
Файл создается при помощи утилиты fex2bin из набора sunxi-tools из текстового файла имя_файла.fex
.
- Не забывайте сделать резервную копию script.bin, чтобы смогли вернуть обратно все настройки, в случае не правильного редактирования файла:
sudo cp /boot/script.bin /boot/script.bak
- Декомпилируйте бинарный файл script.bin в редактируемый файл fex:
sudo bin2fex /boot/script.bin /boot/script.fex
- Теперь отредактируйте файл script.fex с помощью утилиты nano, но можете использовать и другой текстовый редактор, к примеру pluma:
sudo nano /boot/script.fex
- Теперь вам нужно перейти в раздел
[spi0]
или[spi1]
и включить интерфейс, изменив значение строкиspi_used
из «0» в «1»:spi_used = 1
В результате вы должны поличить примерно такой результат:
[spi0] spi_used = 1 spi_cs_bitmap = 1 spi_mosi = port:PC00<3><default><default><default> spi_miso = port:PC01<3><default><default><default> spi_sclk = port:PC02<3><default><default><default> spi_cs0 = port:PC03<3><1><default><default> [spi1] spi_used = 1 spi_cs_bitmap = 1 spi_cs0 = port:PA13<2><1><default><default> spi_sclk = port:PA14<2><default><default><default> spi_mosi = port:PA15<2><default><default><default> spi_miso = port:PA16<2><default><default><default>
Если вы планируете использовать только одну шину 0 (spi0), тогда выключите шину
[spi1]
, изменив значение строкиspi_used
из «1» в «0». - В разделе
[spi_devices]
вам нужно будет указать количество SPI шин, если вы планируете использовать только одну шину, просто введите 1:[spi_devices] spi_dev_num = 1
или 2, если нужны обе шины:
[spi_devices] spi_dev_num = 2
- Теперь нужно задать параметры последовательного периферийного интерфейса в разделе
[spi_board0]
:[spi_board0] modalias = "spidev" max_speed_hz = 33000000 bus_num = 0 chip_select = 0 mode = 0 full_duplex = 1 manual_cs = 0
а если надумали настроить и spi1, тогда добавьте раздел
[spi_board1]
.[spi_board1] modalias = "spidev" max_speed_hz = 33000000 bus_num = 1 chip_select = 0 mode = 0 full_duplex = 1 manual_cs = 0
главное, чтобы значения bus_num были разными: для
[spi_board0]
значениеbus_num = 0
, а для[spi_board1]
—bus_num = 1
. - Сохраните и закройте файл:
Ctrl+X, Y (Yes), Enter
- Компилируйте измененный script.fex в script.bin:
sudo fex2bin /boot/script.fex /boot/script.bin
- Перезагрузите систему:
sudo reboot
- Список SPI портов:
ls -l /dev/*spi*
Настройка SPI на ядре 3.4 с armbian-config
Редактировать .fex
файл можно и с помощью armbian-config
.
- Запустите armbian-config:
sudo armbian-config
- Выберите System — System and security settings:
- Выберите Fexedit — Board (fex) settings editor:
- Редактируйте SPI, как показано выше:
- Нажмите на < Save >, чтобы сохранить изменения.
- Перезагрузите систему.
sudo reboot
Включение шины SPI на ядре 4.14 (Ubuntu 18.04)
В ядре linux 4.14 Вам нужно редактировать не файл .fex
, а файл /boot/armbianEnv.txt
(на Armbian) или /boot/uEnv.txt
. Данные файлы можно редактировать в ручную и с помощью armbian-config, последний вариант подойдёт только для тех, у кого установлено ОС от Armbian.
- Отредактируйте файл
/boot/armbianEnv.txt
с помощью nano или другого текстового редактора.nano /boot/armbianEnv.txt
- Добавьте
spi-spidev
через пробел вoverlays
.overlays=w1-gpio uart1 i2c0 spi-spidev
- Добавьте, если отсутствуют, следующие параметры:
param_spidev_spi_bus=0 param_spidev_spi_cs=0cs=0 param_spidev_max_freq=1000000
- Вы должны получить примерно такой результат:
verbosity=1 console=serial overlay_prefix=sun8i-h3 rootdev=UUID=bd0ded76-1188-4b52-a20a-64f326c1f193 rootfstype=ext4 overlays=w1-gpio uart1 i2c0 spi-spidev param_w1_pin=PA20 param_w1_pin_int_pullup=1 param_uart1_rtscts=1 param_spidev_spi_bus=0 param_spidev_spi_cs=0 param_spidev_max_freq=1000000
- Сохраните файл:
Ctrl+X, Y (Yes), Enter
- Перезагрузите систему:
sudo reboot
Lleva el casino contigo con 1xslots mobile y juega a tus favoritos en cualquier lugar.