Для удобства схема GPIO и разъемов Orange Pi 4 LTS вынесена в отдельный пост. Все схемы и datasheet доступны в репозитории GitHub OrangePi4-LTS. Что такое GPIO и для каких задач используется, пост Работа с GPIO на примере Banana Pi BPI-M64. Часть 1. Интерфейс sysfs LED и DS18B20. Datasheet на процессор Rockchip RK3399 репозиторий GitHub Rockchip-SoC/Rockchip RK3399
Интерфейсы
На плате доступны интерфейсы:
- 26-контактный GPIO разъем с шагом 2.54 мм;
- 24-контактный разъем FPC включающий в себя линию PCIe (необходим переходник на стандартный разъем mini PCIe). Позволяет подключать mini PCIe карты расширения функциональности. Например, можно установить диск NVMe M.2 SSD через дополнительный адаптер;
- 2x разъема MIPl-DSI (4 линии на канал), один из них комбинированный LCD2/Camera2;
- 2x разъема MIPI-CSI с поддержкой 2-х линий и разрешением до 4Kp30, один из них комбинированный LCD2/Camera2;
- 3-pin UART разъем (3.3V) для отладки;
- Кнопка восстановления (Upgrade/Recovery Key), 1x пользовательский LED.
Необходимые аксессуары для подключения рассмотрены в посте Аксессуары для одноплатных компьютеров, microSD, FTDI адаптер, HDMI Video Capture, USB Wi-Fi, мини-клавиатура Rii X1.
GPIO (26-контактный разъем 2.54 мм)
26-контактный разъем с шагом 2.54 мм. В отличие от аналогичного разъема GPIO на Raspberry Pi физически зеркально развернут. Начальная позиция Pin 1 начинается справа от края платы, возле порта отладки (Debug).
Расположение начальной позиции Pin 1
Диаграмма THE UNOFFICIAL Orange Pi 4 LTS (r.04.06.2024) PINOUT DIAGRAM в формате PNG (png), MS Visio (vsd)
Напряжение для всех контактов GPIO не более 3.0v, за исключением контакта GPIO2_D4 для которого определен максимальный уровень в 1.8V.
Формула для вычисления номера GPIOXX
Обращение к контактам GPIO выполняется по их порядковому номеру физической дорожки процессора SoC, эти данные в спецификациях Datasheet отсутствуют, т.к. порядковый номер получается путем расчета.
Для управления GPIO используется библиотека Libgpiod или виртуальная файловая система sysfs, посредством каталога /sys/class/gpio путём обращения к файлам-устройствам.
Все контакты GPIO процессора Rockchip RK3399 разбиты на 5 банков (banks) GPIO0~GPIO4, всего 122 контакта.
Для обращения к контактам GPIO необходимо определить такие характеристики как:
- банк (bank);
- группа (group);
- номер X (X).
Например, из схемы возьмем 8-контакт на разъеме 26-pin GPIO header. Название контакта GPIO4_C6, определим характеристики:
- bank = 4; //GPIO4_C6 => 4, bank ∈ [0,4]
- group = 2; //GPIO4_C6 => 2, group ∈ {(A=0), (B=1), (C=2), (D=3)}
- X = 6; //GPIO4_C6 => 6, X ∈ [0,7]
Управление контактом GPIO с помощью библиотеки Libgpiod
Для управления контактом GPIO с помощью библиотеки Libgpiod необходимо знать номер банка и номер контакта в банке.
- Номер банка: bank = 4
Номер контакта в банке рассчитывается по формуле:
Название группы A~D заменяется на соответствующий порядковый номер 0~3.
Выполним расчет:
number = (group = 2) * 8 + (X = 6) = 2 * 8 + 6 = 22
- Номер контакта в банке: number = 22
Для подачи логической «1» на контакт GPIO4_C6 необходимо выполнить команду:
gpioset --banner --hold-period 200ms -t0 --chip 4 22=1
где 4 — номер банка, 22 — номер контакта в банке.
Для выключения контакта, логический «0», выполнить команду:
gpioset --banner --hold-period 200ms -t0 --chip 4 22=0
Управление контактом GPIO с помощью Sysfs
Для управления контактом GPIO4_C6 с помощью Sysfs необходимо получить общий номер контакта на процессоре Rockchip RK3399. Формула для расчета следующая:
GPIO pin calculation formula:pin = bank * 32 + number
Несложно заметить, что первая строка расчета повторяет формулу расчета контакта в банке. Для расчета общего номера контакта на процессоре сначала рассчитывается номер контакта в банке, затем выполняется расчет по второй формуле. Номер контакта в банке уже известен и равен 22. Теперь необходимо выполнить расчет по второй формуле:
pin = (bank = 4) * 32 + (number = 22) = 4 * 32 + 22 = 150
Для GPIO4_C6 общий номер контакта равен 150.
Так же как и выше включим и выключим контакт:
echo 150 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio150/direction echo 1 > /sys/class/gpio/gpio150/value echo 0 > /sys/class/gpio/gpio150/value echo 150 > /sys/class/gpio/unexport
Более подробно как работать с контактами GPIO с использованием Sysfs пост
Работа с GPIO на примере Banana Pi BPI-M64. Часть 1. Интерфейс sysfs LED и DS18B20.
Выполнив команду cat /sys/kernel/debug/gpio получим список задействованных линий GPIO:
В выводе перечислены банки gpiochip0~gpiochip4. Линия gpio-11 из gpiochip0 используется для управления светодиодом LED, метка status_led.
Официальная схема разъема 26-pin GPIO header
PCIe (24-контактный разъем FPC)
На плате разведен 24-контактный разъем типа FPC для гибкого кабеля с шагом 0.5 мм B TYPE включающий в себя линию PCIe 2.1 (необходим переходник на стандартный разъем mini PCIe). Позволяет подключать mini PCIe карты расширения функциональности. Например, можно установить диск NVMe M.2 SSD через дополнительный адаптер.
PCIE Socket для Orange Pi 4 LTS/4B
Разъемы MIPI-DSI и MIPI-CSI
Плата позволяет одновременно подключать две панели типа MIPI LCD. Разъемы для подключения типа FPC для гибкого кабеля с шагом 0.5 мм B TYPE, 30 контактов.
UART DEBUG (3-контактный разъем 3.3V для отладки)
Интерфейс UART предназначен для проверки работоспособности системы и получение отладочной информации (log message). В случае использования Armbian дистрибутива, скорость порта — 115200 bits/s или 1500000 bits/s.
На плате Orange Pi 4 LTS размещены три контакта GND, RXD, TXD которые и образуют порт отладки.
Контакт питания на адаптере подключать не требуется. Контакты RXD, TXD подключаются крест-накрест, т.е. RXD (адаптер) <-> TXD (Debug порт), TXD (адаптер) <-> RXD (Debug порт).
Подключение USB-UART FTDI адаптера к плате Orange Pi 4 LTS
Upgrade/Recovery Key button (кнопка восстановления)
Кнопка Upgrade/Recovery Key (на оборотной стороне платы) предназначена для перевода платы в режим flash-firmware mode (загрузки прошивки). Прошивка загружается с ПК использую программу RKDevTool по USB-cоединению. Если по каким то причинам плата не распознается по USB соединению (память eMMC не загружается), то доступен режим MaskRom mode, для его включения необходимо дополнительно замкнуть два контакта на оборотной стороне платы, более подробно в руководстве How to enter MaskRom mode.
LED (на плате)
На плате размещен пользовательский светодиод зеленого цвета и красный светодиод.
- Красный LED включается аппаратно при подачи питания;
- Зеленый LED включается программно, обычно если мигает (heartbeat), то ОС успешно запустилась и работает.
Heartbeat — сердцебиение, пульсация от событий ядра, говорящая что система «жива», работает, и не нуждается в принудительной перезагрузке (hard reset).
В документации указано, что зеленый LED подключен к контакту GPIO0_B5/LED1_OUT, но это неверно.
- Зеленый LED (status_led) подключен к контакту GPIO0_B3. Путь в sysfs /sys/class/leds/status_led
Ресурсы
- Orangepi – Orange Pi 4 LTS Overview
- Orangepi – Orange Pi 4 LTS Download
- Wiki-Orange Pi – Orange Pi 4 LTS
- GitHub – orangepi-xunlong/wiringOP
- GitHub – devdotnetorg/OrangePi4-LTS
- GitHub – devdotnetorg/Rockchip-SoC
- 6. GPIO ROC-RK3566-PC — Firefly Wiki
- Rock4_hardware_gpio — Radxa Wiki