Перейти к содержанию

Контроллер дисплея

Обзор

Контроллер дисплея (LCDC) передаёт подготовленные пиксели на панель через выбранный интерфейс. В поддерживаемых устройствах и конфигурациях он также распаковывает кадровый буфер TurboPixel при выводе. LCDC поддерживает ограниченное альфа-смешивание выходных слоёв поверх одноцветного фона. В документации указаны слои 0 и 1, однако SF32LB52x не поддерживает слой 1. Эта функция не заменяет отрисовку UI общего назначения или композицию изображений с помощью ePicasso. Декодирование ресурсов eZip остаётся отдельной операцией.

Первичный источник: документация SiFli LCDC HAL.

Приведённая выше ссылка закреплена за конкретным коммитом SiFli-SDK. Она описывает поведение HAL в этой ревизии, но не подтверждает доступность каждого интерфейса, слоя или функции на всех устройствах и корпусах SF32 и в других версиях SDK. Проверяйте точное сочетание устройства, корпуса и версии SDK, используемое в проекте.

Полный путь от ресурсов до панели описан в разделе Обзор графики. В этой статье рассматриваются контроллер, подключение панели и интеграция драйвера.

Обратитесь к этому материалу при выборе интерфейса панели, разработке тракта передачи пикселей LVGL или первичной проверке новой панели на оборудовании. Разделение вывода контроллера, декодирования ресурсов и композиции пикселей помогает искать неисправность на соответствующем уровне.

Выберите интерфейс дисплея

EPD и Memory-in-Pixel обозначают технологии панелей или способы обновления пикселей, а не взаимозаменяемые стандарты шин. Модуль EPD может подключаться по SPI к внешнему контроллеру; для SF32LB57x также документирован режим прямого управления EPD через LCDC. У JDI есть последовательный и параллельный режимы интерфейса с разными сигналами. Проверяйте электрический интерфейс и требования к обслуживанию панели, а не только её категорию.

Выбор панели влияет на пропускную способность, стратегию буферизации, число используемых выводов, энергопотребление, сложность инициализации и риски при проектировании платы. Уточните полный список интерфейсов для выбранного устройства и корпуса.

Варианты интерфейсов и технологий дисплейных панелей
Интерфейс или тип панели Типичное применение Особенности проектирования
3-/4-проводный SPI Небольшие панели TFT или AMOLED, простые HMI Требует мало выводов и несложной разводки, но пропускной способности может не хватить для полноэкранной анимации.
Dual-SPI / Quad-SPI Носимые устройства с AMOLED и компактными дисплеями Обеспечивает большую пропускную способность, чем обычный SPI, при умеренном числе выводов.
Интерфейс MCU 8080 Параллельные панели дисплея Пропускная способность выше, чем у последовательного SPI, но требуется больше выводов.
RGB / DPI Дисплеи большого размера или с высокой частотой обновления Непрерывный поток пикселей требует высокой пропускной способности, большего числа выводов и строгого соблюдения временных параметров.
MIPI DSI AMOLED высокой плотности пикселей или панели с расширенными возможностями Высокая пропускная способность при малом числе выводов, но более сложные инициализация и обеспечение целостности сигнала.
Технология панели EPD Электронная бумага и дисплеи с очень редким обновлением Интерфейс со стороны хоста зависит от модуля и контроллера. Статичное изображение может удерживаться при низком энергопотреблении панели; обновление медленное и требует специального управления формой сигнала и питанием.
JDI (последовательный или параллельный) Отражающие панели с низким энергопотреблением В режимах JDI используются разные сигналы; проверьте электрический интерфейс и требования к обслуживанию выбранной панели.
Технология панели Memory-in-Pixel Отражающие дисплеи с низким энергопотреблением, в том числе для постоянно включённого интерфейса или чтения при ярком освещении Память пикселей встроена в панель; режим обновления отличается от TFT/AMOLED. Следуйте документации панели.

Например, небольшая панель SPI/QSPI может эффективно работать с частичными обновлениями, а панели RGB/DPI требуется расчёт пропускной способности непрерывного сканирования. Выбирая интерфейс, учитывайте не только теоретическую скорость, но и формат пикселей, разрешение, режим обновления, GRAM панели и нагрузку от других потребителей PSRAM.

Матрица интерфейсов по устройствам

Матрица ниже предназначена для выбора семейства, а не для назначения выводов. В ней указаны документированные интерфейсы дисплея для приведённых семейств SF32 и вариантов кристалла. Тире означает, что интерфейс не указан в документации для этой строки; это не исключает внешний контроллер с управлением через GPIO или особую реализацию на конкретной плате. До утверждения схемы проверьте точный код заказа, корпус, мультиплексирование выводов, версию SDK и драйвер панели.

Матрица интерфейсов дисплея SF32
Семейство / вариант SF32 Документированные интерфейсы LCD / панели Ограничения корпуса или варианта Практическое направление выбора
SF32LB52x 3-/4-проводный SPI, Dual-SPI, Quad-SPI, MCU/8080 (MIPI DBI), последовательный/параллельный JDI; EPD через SPI-контроллер; в руководстве по аппаратной части SF32LB52B/D/E/G/J также описан 8-разрядный параллельный интерфейс сигналов EPD Перечисленные модели 52x используют корпус QFN68L. В руководстве по 52B/D/E/G/J перечислены сигналы и управление PMIC TPS, но это само по себе не подтверждает поддержку прямого режима EPD через LCDC. Проверьте драйвер и точный вариант. Компактные решения с SPI/QSPI, 8080 и JDI; для параллельного EPD проверьте реализацию GPIO, временных параметров и управления питанием TPS для выбранного варианта.
SF32LB55x 3-/4-проводный SPI, Dual-SPI, Quad-SPI, MCU/8080, DPI/RGB, последовательный/параллельный JDI, MIPI DSI (командный режим, command mode) Документированный двухлинейный интерфейс MIPI DSI доступен в корпусах BGA145/169; JDI и работа двух дисплеев через MIPI DSI + SPI/DSPI указаны только для 557VD3A6. Для командного режима нужен контроллер панели со встроенной SRAM/GRAM. Носимые устройства и другие подключённые устройства с дисплеем, совместимым корпусом BGA и панелью MIPI в командном режиме.
SF32LB56xU 3-/4-проводный SPI, Dual-SPI, Quad-SPI, последовательный JDI Для перечисленных вариантов U указан корпус QFN68L; проверьте точный код заказа и мультиплексирование выводов. Компактные устройства с последовательной панелью, где важны пропускная способность QSPI и меньшее число выводов.
SF32LB56xV 3-/4-проводный SPI, Dual-SPI, Quad-SPI, DBI 8080, DPI/RGB, последовательный/параллельный JDI Для перечисленных вариантов V указан корпус WBBGA175 (BGA175 в руководстве по моделям чипов); проверьте необходимые выводы и разводку для точного кода заказа. Дисплеи с высоким разрешением или частотой обновления, которым нужны 8080, DPI/RGB или параллельный JDI.
SF32LB57x 3-/4-проводный SPI, Dual-SPI, Quad-SPI, 8080/DBI (8/16 бит), DPI/RGB, JDI и прямой режим EPD Доступны варианты корпусов QFN68, QFN80 и BGA112; проверьте точный код заказа, доступность выводов и выбранный тракт управления панелью. Для устройств с насыщенным графическим интерфейсом и требованиями к параллельным или последовательным дисплеям, JDI либо EPD.
SF32LB58x 3-/4-проводный SPI, Dual-SPI, Quad-SPI, MCU/8080, DPI/RGB, последовательный/параллельный JDI, MIPI DSI с двумя линиями данных (командный режим и видеорежим) Перечисленные коды заказа используют корпус BGA256. Для командного режима нужен контроллер панели со встроенной SRAM/GRAM; видеорежим поддерживает также панели без RAM. В руководстве по моделям чипов также указана работа двух дисплеев через MIPI DSI + SPI/DSPI/QSPI. Для конкретной схемы проверьте LCD-контроллер и мультиплексирование выводов. Интерфейсы с высоким разрешением и требованиями к пропускной способности, включая конфигурации с двумя дисплеями и MIPI DSI-панели с RAM контроллера или без неё.

Для SF32LB56x варианты U и V не взаимозаменяемы. Для SF32LB55x и SF32LB58x не закладывайте MIPI DSI в схему, пока не подтвердите точный корпус, доступность выводов DSI и требования панели к числу линий данных и режиму работы. В частности, SF32LB55x поддерживает только командный режим, поэтому панель без RAM, работающая в видеорежиме, несовместима. При проектировании EPD также учитывайте требования конкретной панели к временным параметрам, форме сигнала и питанию: одного названия интерфейса недостаточно.

В руководстве SiFli по моделям чипов DPI/RGB указаны среди интерфейсов семейства SF32LB55x, однако в таблице отдельных кодов заказа DPI не назначен перечисленным SKU. Рассматривайте это только как сведения на уровне семейства; прежде чем полагаться на DPI, проверьте его поддержку и доступность нужных выводов для точного кода заказа. Разделение U/V для SF32LB56x основано на отдельных руководствах по аппаратной части, а не на общей таблице HAL для семейства.

В двух руководствах по аппаратной части SF32LB52x сведения о JDI расходятся: в обзоре указан последовательный JDI, а в подробных разделах приведена распиновка параллельного режима. Поэтому в матрице сохранены оба документированных варианта, но это не гарантирует доступность выводов у конкретного кода заказа. До фиксации проекта проверьте привязку LCDC, версию SDK/драйвера и сигналы панели для нужного варианта.

Для SF32LB52x различайте документированный 8-разрядный параллельный интерфейс сигналов EPD и прямой режим EPD через LCDC. В руководстве по аппаратной части SF32LB52B/D/E/G/J перечислены параллельные сигналы EPD и управление PMIC TPS; отдельно в примечаниях к выпуску SiFli-SDK v2.5.1 задокументирован прямой режим EPD через LCDC для SF32LB57x. Не следует считать, что в проекте 52x доступен тот же режим EPD через LCDC, что и в 57x; проверьте драйвер и реализацию временных параметров для конкретного варианта.

Источники сведений об интерфейсах: руководство SiFli по моделям чипов, руководство по аппаратной части SF32LB52x с питанием от аккумулятора, руководство по аппаратной части SF32LB52B/D/E/G/J, SF32LB55x, SF32LB56xU, SF32LB56xV, SF32LB58x и поддержка SF32LB57x в SDK.

Контроллер, буферы и тракты передачи

На справочной схеме LCDC показаны видимая область панели, окно обновления и область исходного буфера. Смещения столбцов и строк панели нужно применять согласованно. Окно обновления может перекрывать лишь часть исходного буфера; пиксели внутри окна, для которых в буфере нет исходных данных, отображаются цветом фона. Проверяйте координаты окна, начало буфера и шаг строки вместе, не считая буфер и окно одной и той же областью.

UI-фреймворк формирует изменившиеся пиксели, а драйвер дисплея и контроллер передают их на панель. Выбор тракта зависит от панели:

  • Драйвер SPI/QSPI или 8080 обычно задаёт окно панели и передаёт только изменившуюся область.
  • Контроллер, сканирующий кадровый буфер, считывает пиксели из памяти в соответствии с временными параметрами дисплея.
  • В тракте с TurboPixel сжатое итоговое изображение считывается и распаковывается на этапе контроллера дисплея.

В проекте на LVGL функция обратного вызова передачи дисплею (flush) служит границей между отрисовкой и выводом. Она должна учитывать обновляемую область, запускать нужную операцию DMA или контроллера и сообщать о завершении лишь тогда, когда фреймворк может безопасно использовать буфер отрисовки повторно. Если CPU и оборудование совместно используют буферы, явно определите операции очистки (clean) и инвалидации (invalidate) кэша.

Владение буфером должно соответствовать реальному тракту передачи. При передаче в память панели освобождайте буфер отрисовки только после того, как оборудование закончит его чтение. При непрерывном сканировании одно прерывание кадра не освобождает активный кадровый буфер: дождитесь подтверждённого переключения, после которого контроллер перестанет читать старый буфер. Завершение передачи и видимое обновление панели — разные события. Для предотвращения разрывов изображения при необходимости используйте сигнал TE или кадровую синхронизацию панели.

Если общая память кэшируется, очистите кэш исходных данных, записанных CPU, до их чтения оборудованием. Перед записью оборудования подготовьте целевой буфер по правилам обслуживания кэша платформы, чтобы последующая запись изменённых строк кэша не затёрла результат. После завершения операции оборудования инвалидируйте целевой диапазон перед чтением CPU. Соблюдайте выравнивание и правила владения строками кэша, учитывая соседние данные в той же строке.

Решения по тракту вывода изображения
Параметр Что проверить
Область передачи Передавайте только изменившиеся области, если это поддерживают панель и драйвер.
Буферизация Выберите частичную или полноэкранную буферизацию, одинарный или двойной буфер с учётом задержки и объёма памяти.
Синхронизация Освобождайте или повторно используйте буфер только после прекращения чтения оборудованием; при непрерывном сканировании подтвердите переключение буфера.
Формат пикселей Согласуйте форматы панели, драйвера, рендерера и ускорителя, чтобы избежать преобразования в критическом тракте.
Кэш Перед чтением оборудования очищайте кэш буферов, записанных CPU (clean); перед чтением CPU инвалидируйте кэш буферов, записанных оборудованием (invalidate).

Частичное обновление и изменившиеся области

Частичная отрисовка и частичная передача на панель — разные способы оптимизации. Непрерывный поток RGB/DPI или DSI в видеорежиме может по-прежнему передавать весь кадр, даже если изменилась лишь небольшая область памяти. Для EPD проверьте поддержку формы сигнала, зависимость от температуры, остаточные изображения и требуемые интервалы полного обновления. Не считайте, что меньшая область обновления всегда допустима.

В большинстве встраиваемых пользовательских интерфейсов нет необходимости перерисовывать весь экран на каждом кадре. LVGL отслеживает области, помеченные для обновления, а драйвер может передавать только изменившиеся области. Это особенно полезно для панелей SPI/QSPI, носимых устройств с питанием от аккумулятора, статичных экранов с небольшими меняющимися значениями, а также дисплеев EPD и JDI.

Полноэкранное обновление подходит для экранов с интенсивной анимацией, переходов или панелей, которые естественным образом считывают кадр целиком из кадрового буфера. Выбор зависит от пропускной способности интерфейса, поведения панели и бюджета памяти, а не только от настройки UI-фреймворка.

Последовательность первичной проверки панели

До отладки виджетов и поведения приложения проверьте панель поэтапно:

  1. Проверьте линии питания, временные параметры сброса, выводы подсветки и включения, а также базовый ток потребления.
  2. Передайте последовательность инициализации панели точно по указаниям производителя.
  3. Залейте экран сплошным цветом, чтобы выявить ошибки порядка байтов, формата пикселей и подключения интерфейса.
  4. Нарисуйте простые геометрические фигуры, чтобы проверить шаг строки (stride), адресацию окон и координаты.
  5. Добавьте изображения и текст, чтобы проверить преобразование цвета, шрифты и размещение ресурсов.
  6. Включайте по одному: частичное обновление, DMA, TurboPixel и графическое ускорение.
  7. Проверьте переходы в сон, отключение дисплея, пробуждение и повторную инициализацию.

Сначала проверьте заливки и узоры в минимальной конфигурации выбранного интерфейса панели. После добавления DMA, сжатия или ускорения повторите проверки на каждом новом тракте, прежде чем тестировать весь UI на LVGL.

Локализация неисправностей в тракте дисплея

Проверяйте каждый этап тракта отдельно. Не меняйте одновременно команды панели, код LVGL, размещение буферов и настройки DMA: иначе неисправность будет сложнее воспроизвести.

Диагностическая матрица тракта дисплея
Симптом Первый участок для проверки Целевая проверка Возможные причины
Панель остаётся пустой Питание, сброс и инициализация панели Измерьте линии питания и сброс; выполните инициализацию производителя; выведите сплошную заливку. Последовательность питания, полярность сброса, команды инициализации или физическое подключение интерфейса.
Сплошная заливка работает, но цвета неверны Формат пикселей от рендерера до панели Выведите тестовые полосы красного, зелёного, синего, чёрного и белого цветов. Порядок RGB/BGR или байтов, настройки глубины цвета либо преобразование формата.
Изображение смещено, обрезано или разрывается Адресация и синхронизация Выведите сетку, затем несколько раз обновите одну фиксированную область. Координаты окна, шаг строки (stride), временные параметры панели, повторное использование буфера или незавершённая синхронизация DMA.
Статичный UI работает, но анимация прерывается Этапы отрисовки, передачи и памяти Отдельно измерьте время отрисовки и завершения передачи (flush). Слишком большая область перерисовки, конкуренция за PSRAM, медленный интерфейс или неподходящая стратегия буферизации.
Артефакты появляются только после сна/пробуждения Переход между состояниями питания Повторите тест заливки/сетки после каждого поддерживаемого сценария отключения дисплея и пробуждения. Потеря состояния панели, пропущенный сброс/инициализация, последовательность включения питания или устаревшее состояние кэша/буфера.
Сбой возникает только при включении функции Конкретный дополнительный тракт Включайте по одному: DMA, частичное обновление, ePicasso или TurboPixel. Неподдерживаемая конфигурация, нарушение правил выравнивания/кэша или ошибка интеграции драйвера.

Рекомендации для разных типов панелей

SPI и QSPI AMOLED/TFT

Предпочитайте частичное обновление, RGB565 там, где он подходит, и небольшие области анимации. Не перерисовывайте весь экран из-за небольшого изменения: сначала отрисуйте и скомпонуйте изменившуюся область, затем передайте её на панель.

Панели RGB / DPI

Рассчитайте непрерывную пропускную способность сканирования с учётом нагрузки от CPU, ePicasso, DMA и других операций с памятью. Выберите стратегию кадрового буфера исходя из требуемой частоты обновления; при достаточном объёме памяти рассмотрите двойную буферизацию. В проекте платы учитывайте временные параметры и целостность сигналов.

Панели MIPI DSI

Выберите режим панели до окончательного выбора компонента. SF32LB55x поддерживает только командный режим (command mode) MIPI DSI, поэтому контроллер панели должен иметь внутреннюю SRAM/GRAM для хранения обновлённого изображения. SF32LB58x поддерживает командный и видеорежимы: панелям в командном режиме требуется RAM в контроллере, а в видеорежиме непрерывный поток пикселей позволяет работать с контроллером панели без RAM. Заранее проверьте инициализацию, испытайте режимы низкого энергопотребления и пробуждение, поддерживайте требуемую скорость передачи ниже полезной пропускной способности интерфейса, оставляя запас на служебные данные протокола, ограничения по времени и другие обращения к памяти.

Дисплеи EPD

Проектируйте систему для редких обновлений. Используйте режимы частичного обновления только при поддержке со стороны панели и приемлемом визуальном результате. Не рассчитывайте на анимацию; учтите требования PMIC дисплея, VCOM и формы сигнала.

Интерфейсы JDI и панели Memory-in-Pixel

В этой статье JDI обозначает последовательный или параллельный интерфейс панели, а Memory-in-Pixel — технологию панели. В некоторых энергоэффективных дисплеях они могут сочетаться, но эти термины не взаимозаменяемы. В панели MIP небольшие области обновления и подходящая компоновка UI позволяют использовать сохранение состояния пикселей при включённом питании панели. Это не означает энергонезависимого хранения изображения или нулевого энергопотребления всей системы в режиме ожидания. Выполняйте инверсию COM и другие операции обслуживания по документации конкретной панели, затем измерьте обновление, читаемость на открытом воздухе и энергопотребление в условиях эксплуатации устройства.

Контрольный список передачи в производство

Прежде чем считать тракт дисплея готовым, зафиксируйте параметры, которые нужны другому инженеру для воспроизведения результата:

  • Точное устройство SF32, корпус, версию SDK, ревизию платы, номер модели панели и ревизию контроллера панели.
  • Режим интерфейса, назначение выводов, формат пикселей, порядок байтов/цветов, целевой режим обновления и источник последовательности инициализации панели.
  • Расположение, размер и выравнивание буферов отрисовки и кадрового буфера, ответственность за обслуживание кэша и сигнал завершения от DMA/контроллера.
  • Политику частичного обновления, правила адресации окна панели и области, которые нужно обновлять вместе во избежание артефактов.
  • Измеренные время отрисовки и передачи, пиковый/средний трафик PSRAM (если применимо) и ток для типичных состояний UI.
  • Результаты проверки сна, отключения дисплея, пробуждения и восстановления, включая поведение после неудачной или прерванной передачи.

Такая запись превращает разовую проверку дисплея в воспроизводимую интеграцию продукта. Повторяйте проверку при изменении панели, SDK, организации памяти, формата пикселей или драйвера дисплея.

Основные выводы

  • Контроллер дисплея отвечает за вывод на панель; это отдельная функция от композиции пикселей ePicasso и декодирования ресурсов eZip.
  • Выбор интерфейса во многом определяет пропускную способность, буферы, энергопотребление, выводы и проектирование платы.
  • Тракт передачи, синхронизацию, обслуживание кэша и инициализацию панели следует считать важными задачами разработки прошивки.
  • Проверьте панель простыми узорами, прежде чем включать UI высокого уровня, DMA, TurboPixel или ускорение.
  • Ищите неисправности по одному участку тракта за раз, а проверенную конфигурацию и измерения сохраняйте для передачи в производство.

Последнее обновление: