Настройка SPI экрана для Repka Pi 4

IvanS

New member
16.02.2026
2
0
1
Кто-то может показать рабочий пример настройки SPI-экрана (особенно интересно драйвер ST7796) для Repka Pi 4 (Repka OS)? В блоге находил только примеры настройки экранов через Device Tree для Repka Pi 3, но для Repka Pi 4 по аналогии почему-то не срабатывает.

Если что, вот это у меня на Repka Pi 4 (Repka OS) не работает (в ОС включен вариант 2):

MISO - PH6
SCK - PH4
MOSI - PH5
DC - PL3
RESET - PL4
CS - PH3

/dts-v1/;
/plugin/;

/ {
compatible = "allwinner,sun50i-h6-spi";

fragment@0 {
target = <&pio>;
__overlay__ {
st7796s_pins: st7796s_pins {
pins = "PL4", "PL3"; /* RESET, DC */
function = "gpio_out", "gpio_out";
};
};
};

fragment@1 {
target = <&spi1>;
__overlay__ {
/* CS0 PH3 */
cs-gpios = <&pio 7 3 0>;
status = "okay";
#address-cells = <1>;
#size-cells = <0>;

st7796s: st7796s@0{
compatible = "sitronix,st7796s";
reg = <0>;
pinctrl-names = "default";
pinctrl-0 = <&st7796s_pins>;
spi-max-frequency = <16000000>;
fps = <30>;
buswidth = <8>;
reset-gpios = <&pio 11 4 1>; /* PL4 */
dc-gpios = <&pio 11 3 0>; /* PL3 */
rotate = <270>;
debug = <1>;
};
};
};



};

Компилируется в sun50i-h6-st7796s.dtbo без ошибок. В repkaEnv.txt прописано:
overlays=i2c1 sun50i-h6-st7796s

Модуль fb_st7796s присутствует в списке загруженных (если смотреть командой lsmod).

При этом dmesg после перезагрузки выдает такую информацию:
[ 23.521428] sun50i-h6-pinctrl 300b000.pinctrl: unknown pin PL4
[ 23.527303] sun50i-h6-pinctrl 300b000.pinctrl: unknown pin PL3
[ 23.533168] fb_st7796s spi0.0: there is not valid maps for state default
[ 23.533279] fb_st7796s spi0.0: fbtft_property_value: buswidth = 8
[ 23.533289] fb_st7796s spi0.0: fbtft_property_value: debug = 1
[ 23.533296] fb_st7796s spi0.0: fbtft_property_value: rotate = 270
[ 23.533304] fb_st7796s spi0.0: fbtft_property_value: fps = 30
[ 23.536188] spi spi0.0: deferred probe pending: fb_st7796s: Failed to request reset GPIO


На SPI-экран ничего не выводится, в системе присутствует один fb0 связанный с hdmi-монитором.
 
Последнее редактирование:
300b000.pinctrl: unknown pin PL4
Смею предположить, что драйвер pinctrl имеет какие-то другие названия пинов из банка R_GPIOL (в исходниках ядра есть два файла pinctrl-sun50i-h6.c и pinctrl-sun50i-h6-r.c). Попробуйте перевесить DC и RESET на другие пины, например из банков D или G (скажем на PD16 и PD17).

----
Upd: см. следующий ответ про подсистему R_GPIO у H6. Вероятно из-за её неправильного указания pinctrl не находит нужные пины. Решение из текущего сообщения вероятно тоже может сработать.
 
Последнее редактирование:
Upd нашел обозначение подсистемы R_GPIO в sun50i-h6.dtsi и в pinctrl-sun50i-h6-r.c:

Или в
Код:
fragment@0 {
   target = <&pio>;
   __overlay__ {
       st7796s_pins: st7796s_pins {
           pins = "PL4", "PL3"; /* RESET, DC */
           function = "gpio_out", "gpio_out";
       };
   };
};

Пропишите r_pio вместо pio, например
Код:
fragment@0 {
   target = <&r_pio>;
   __overlay__ {
       st7796s_pins: st7796s_pins {
           pins = "PL4", "PL3"; /* RESET, DC */
           function = "gpio_out", "gpio_out";
       };
   };
};


Также поменяйте две ссылки в fragment@1 на r_pio:
Код:
reset-gpios = <&r_pio 11 4 1>;  /* PL4 */
dc-gpios = <&r_pio 11 3 0>;     /* PL3 */
 
Последнее редактирование:
Кто-то может показать рабочий пример настройки SPI-экрана (особенно интересно драйвер ST7796) для Repka Pi 4 (Repka OS)? В блоге находил только примеры настройки экранов через Device Tree для Repka Pi 3, но для Repka Pi 4 по аналогии почему-то не срабатывает.
Пользуюсь Repka Pi 3 но подразумеваю оверлей для Repka Pi 4 надо писать основываясь на туже логику что и в Pi3



1. Всё же первичен сам дисплей, а уже потом рассматриваются какие драйвера он поддерживает.
Для примера есть дисплеи которые работают и на драйверах st7789 и ili9341

Нужна ссылка на Ваш дисплей, а там уже разбираться дальше.

2. Далее смотрим какие драйвера он поддерживает.

3. Проверяем какие из них есть в системе

4. Если нужных драйверов нет устанавливаем.

5 А уже потом собственно разбираемся с нужными pins - особенно cs ( хотелось бы точно знать один дисплей будет висеть на SPI или ещё какое устройство и какое именно SPI : SPI0 или SPI1



Собственно, что за дисплей то?
 
  • Like
Реакции: fe-ti