GPIO

В: Как настроить интерфейсы UART, I2C, SPI на определённые выводы модуля?

О: Соответствие физических выводов модуля и сигналов задокументировано в пинауте (pinout).

Пинаут доступен по ссылке https://files.diasom.ru/ds-rk3568_v3_pinout.xlsx

Конфигурация интерфейсов выполняется через Device Tree: в файле .dts найдите узел &pinctrl — внутри него определяются все возможные конфигурации мультиплексирования выводов. DTS-файл от отладочной платы DS-RK3568-EVB можно использовать как референс.

В: Как пересчитать bank/pin в Linux GPIO-номер?

О: Формула: GPIO_NUM = BANK × 32 + PIN_IN_BANK, где PIN_IN_BANK = группа (A=0,B=8,C=16,D=24) + номер в группе.

Примеры:

  • GPIO2_D1 → 2×32 + 24 + 1 = 89

  • GPIO1_A5 → 1×32 + 0 + 5 = 37

В DTS-нотации: reset-gpios = <&gpio2 RK_PD1 GPIO_ACTIVE_LOW>;

В: Как переназначить функцию пинов через DTS? Например, CAN2 → I2C2

О: Отключить CAN и включить I2C в DTS:

/* Если отдельный DTB — строку для CAN можно не добавлять вовсе */ &can2 { status = "disabled"; }; &i2c2 { pinctrl-0 = <&i2c2m1_xfer>; status = "okay"; };

Аналогично для других интерфейсов — смотрите таблицу мультиплексирования пинов в документации RK3568.