Экраны на двух SPI заработали
С помощью ценной подсказки Романа Соколова и ещё нескольких часов времени удалось-таки запустить два двухдюймовых TFT-экрана с разрешением 240x320 и контроллером ST778 на ESP32, подключив их к двум раздельным шинам SPI.
Первое, что позволило решить проблему — переход на библиотеку Arduino_GFX, ещё одну альтернативу для Adafruit GFX и LovyanGFX. Она оказалась более гибкой в конфигурации.
Второе — обычная проблема с ESP32, правильный выбор пинов для подключения устройств. Дело в том, что хотя пины ESP32 и называются GPIO, фактически они не равнозначны и у них есть множество скрытых ограничений, особенностей и альтернативных применений. Например, пин GPIO14 в момент сброса выдаёт сигнал PWM. Нужно ориентироваться по списку этих ограничений, а также по описанию конкретных плат.
И ещё мелкий подводный камень — не получилось повесить линии сброса обоих дисплеев на один пин, так как процедура инициализации второго дисплея сбрасывает первый и он перестаёт принимать команды. Пришлось сделать отдельную линию сброса.
Я не планирую использовать в этом проекте другие SPI-устройства, но избавиться от линий CS при одном устройстве на шине в общем случае нельзя — устройства могут выполнять смену внутреннего состояния по фронту CS. Можно конечно поэкспериментировать, возможно эти конкретные дисплеи и заработают. Но позже, пока пинов хватает.
Теоретически две раздельные шины должны дать повышенную производительность, хотя использование переназначения пинов для второй шины (HSPI, её пины не выведены наружу на используемой плате) должно понизить максимальную скорость работы с 80 до 40 МГц, но всё же обе шины должны заработать в нормальном аппаратном, а не софтовом режиме, и это уже плюс.
Тесты на производительность ещё предстоят, как и исследование возможностей по оптимизации (например, параллельный рендер на двух ядрах ESP32).
diy
vr32
дисплеи
РоманC
Или можно одно ядро для формирования большой картинки в буфере, а второе для вывода на два экрана. Интересно, там же вроде DMA еще должен быть, это еще быстрее. В эти IPS 2'' дисплеи самые классные, это да. Из всех перепробованных штук 30 они самые приятные.
Aug 02 2024 16:46 

1
shiru8bit
Роман Соколов, вот, я думаю поэкспериментировать, попробовать выжать максимум FPS на двух экранах, как-то распараллелить на ядрах ESP32, возможно по твоей схеме. И как раз думаю, что за счёт DMA это вполне может прокатить.
Aug 02 2024 16:49
РоманC
учитывай еще, что на быстром SPI 80Mhz да и на 40Mhz длина проводов к дисплеям критична
Aug 02 2024 19:19 
1
Санёк Сушка | Саня, Тащи!
Спасибо Роману за совет!
Aug 07 2024 02:46 
1