Почему у одной и той же платы бывает разный контроллер
Недорогие дисплейные платы собирают из панелей, закупленных на открытом рынке. Когда партия меняет поставщика, может смениться и контроллер, а название платы, печатная плата и распиновка остаются прежними. ESP32-2432S028R (Cheap Yellow Display) и ESP32-2432S024 существуют в версиях с ILI9341 и ST7789.
Определение по симптомам
Что вы видите с настройкой ILI9341 | Вероятная причина | Решение |
|---|---|---|
Белый или пустой экран, подсветка горит | Контроллер — ST7789 | Переключиться на драйвер ST7789 |
Изображение есть, цвета в негативе | Панели ST7789 нужна инверсия | Переключить инверсию ( |
Красный и синий перепутаны | Порядок цветов | Задать порядок BGR ( |
Изображение зеркальное или смещённое | Настройка поворота / доступа к памяти | Изменить поворот (MADCTL) |
Всё тёмное | Неверный или повторно используемый вывод подсветки | Проверить GPIO подсветки |
Меняйте по одной настройке за раз и держите рабочий пример для сравнения.
Определение чтением ID
Если плата подключает линию MISO панели, можно прочитать ID контроллера, а не гадать. ILI9341 отвечает 0x9341 на команду Read ID4 (0xD3). В TFT_eSPI tft.readcommand8(0xD3, n) читает байт n регистра. Если вы не получаете 0x93 и 0x41, попробуйте драйвер ST7789. Платы без MISO прочитать нельзя, поэтому пользуйтесь таблицей симптомов.
Различающиеся настройки
Параметр | ILI9341 | ST7789 |
|---|---|---|
Драйвер TFT_eSPI | | |
LovyanGFX | | |
ESP-IDF | | |
Инверсия | обычно выключена | часто включена |
Шаблоны для обоих — на страницах ILI9341 и ST7789V.
Как избежать этого в продукте
Для продукта выбирайте модуль, в даташите которого указан контроллер, а поставщик фиксирует его для каждой производственной партии, чтобы прошивка не ломалась от партии к партии. Наш SPI-модуль 2,8 дюйма 240×320 использует заданный ST7789V; образцы от 1 шт.
Частые вопросы
Будет ли код для ILI9341 работать на ST7789?
Не надёжно. Оба — контроллеры 240×320, но последовательность инициализации различается, поэтому смените драйвер, а не латайте код ILI9341.
Почему на дисплее ST7789 инвертированы цвета?
Многим панелям ST7789 нужна инверсия дисплея (INVON). Включите TFT_INVERSION_ON или вызовите tft.invertDisplay(true).
Как прочитать ID контроллера?
При подключённом MISO прочитайте регистр 0xD3 (Read ID4): ILI9341 возвращает 0x93 0x41. Без MISO определяйте по симптомам.

