Работа с контроллером экрана происходит так же как и со множеством других устройств работающих под управлением микроконтроллера,
а именно записью данных в определенный регистр, либо, в случае простых команд, без параметров, просто обращением к регистру.
Большая часть недорогих дисплеев на контроллерах ILI, SSD имеют одинаковые адреса базовых регистров. Поэтому библиотеке без разницы с каким дисплеем работать,
тем не менее, чем свежее модель тем больше вероятность что будут различия. К примеру контроллер экрана SSD1963 (800х480px) имеет иной адрес регистра определяющий
формат пикселя, и ко всему прочему принимает получаемые данные о цвете "задом на перед" То есть, в формате BGR. А так же требует небольших предварительных настроек.
Что требует отдельных предпусковых инструкций. В целом, общие регистры, включая принимаемые ими параметры,
совпадают примерно до адреса 0x45.
Возможна так же ситуация, когда у некоторых контроллеров, не доступны некоторые, как правило не очень важные,
общие регистры. Например, в достаточно близких и по характеристикам и по содержанию регистров ILI9341(320х240) имеется регистр Gamma_Set_(0x26), в области общих регистров,
а ILI9486(480х320) его уже не имеет, и настройки гаммы выведены в расширенные регистры.
Несколько простых правил при работе с регистрами.
Если регистр не имеет параметров, как например команды включения дисплея, то необходимо только обращения по адресу. Если регистр имеет 2 и более параметров,
то должны быть перезаписаны все параметры. При чтении из регистров предназначенных только для чтения, первый принимаемый параметр (байт) является "мусорным"
зачастую он содержит те же данные что и второй байт. То есть при чтении регистра происходит получение параметров на 1 больше.
В даташитах все команды (адреса регистров) предварительно сведены в таблицу, далее идет более подробный разбор каждой команды и её параметров,
но зачастую не достаточно подробный для быстрого понимания её работы.
Запись в регистр производится следующим образом:
uint8_t data[8]={0,}; // создаем байтовый массив, в ячейках которого укажем адрес регистра, количество передаваемых параметров и их содержание.
data [0]=0x01; // В данную ячейку пишется количество передаваемых в регистр параметров. Если ни одного - 0х00.
data [1]=0x3A; // Адрес регистра контроллера дисплея.
data [2]=0b00000101; // Параметр команды. Режим 16 бит на пиксель (5-6-5)
//data [2]=0b00000110; // Параметр команды. Режим 18 бит на пиксель (6-6-6)
Display_Command (data); // передаем в функцию заполненный массив.
О подключении дисплеев к микроконтроллерам, о функциях и методах библиотеки Display_Lib в статье :
Библиотека для LCD экранов.
| (No Operation) Пустая команда, не выполняет никаких действий. |
| Команда вызывает сброс содержимого регистров на значения по умолчанию.
Дисплей сразу же становится пустым.
Необходимо подождать 5 мсек, прежде чем отправлять новую команду после команды Soft reset.
В течении этих 5 мсек, контроллер загружает все заводские значения регистров.
Если сброс программного обеспечения применяется во время спящего
режима, необходимо будет подождать 120 мсек, прежде чем отправлять команду на вход в спящий режим. |
Чтение идентификационной информации дисплея
1-й параметр - это фиктивные данные.
2-й параметр (ID1 [7:0]): идентификатор производителя ЖК-модуля.
3-й параметр (ID2 [7:0]): идентификатор версии ЖК-модуля/драйвера.
4-й параметр (ID3 [7:0]): идентификатор ЖК-модуля/драйвера.
|
Чтение статуса дисплея.
| 2й параметр |
| 7 |
Booster |
Состояние напряжения усилителя:
0 - Выкл
1 - Вкл
|
| 6 |
Row address order |
Порядок следования адресов строк при записи данных в выбранную область.
0 - Сверху вниз (MADCTL Бит 7 = 0)
1 - Снизу вверх (MADCTL Бит 7 = 1)
|
| 5 |
Column address order |
Порядок следования адресов столбцов при записи данных в выбранную область.
0 - Слева направо (MADCTL Бит 6 = 0)
1 - Справа налево (MADCTL Бит 6 = 1)
|
| 4 |
Row/column exchange |
Смена следования столбцов со строками.
0 - Обычный режим (MADCTL Бит 5 = 0).
1 - Обратный режим (MADCTL Бит 5 = 1).
|
| 3 |
Vertical refresh |
Порядок вертикального обновления (сканирования) памяти дисплея.
0 - Обновление сверху вниз (MADCTL Бит 4 = 0)
1 - Обновление снизу вверх (MADCTL Бит 4 = 1)
|
| 2 |
RGB/BGR order |
Режим передачи цвета.
0 - RGB (MADCTL Бит 3 = 0)
1 - BGR (MADCTL Бит 3 = 1)
|
| 1 |
Horizontal refresh order |
Порядок горизонтального обновления (сканирования) памяти дисплея.
0 - Обновление слева направо (MADCTL Бит 2 = 0)
1 - Обновление справа налево (MADCTL Бит 2 = 1)
|
| 0 |
Not used |
---
|
| 3й параметр |
| 7 |
Not used |
---
|
| 6:4 |
Pixel format |
Формат пикселя цвета интерфейса.
011 12 бит/пиксель
101 16 бит/пиксель
110 18 бит/пиксель
Типы форматах могут отличаться в различных моделях дисплея.
|
| 3 |
Idle mode ON/OFF |
Режим бездействия.
0 - Режим ВЫКЛ
1 - Режим ВКЛ
|
| 2 |
Partial mode ON/OFF |
Режим использования частичного экрана
0 - Частичный режим Выключен
1 - Частичный режим Включен.
|
| 1 |
Sleep IN/OUT |
Спящий режим
0 - В спящем режиме
1 - Вне спящего режима
|
| 0 |
Display normal mode ON/OFF |
Включение нормального режима (Частичный режим выключен).
0 - Нормальный режим выключен
1 - Нормальный режим включен
|
| 4й параметр |
| 7 |
Vertical scrolling status |
Состояние вертикальной прокрутки (скроллинга)
0 - Выкл
1 - Вкл
|
| 6 |
Not used |
---
|
| 5 |
Inversion status |
Состояние инверсии цвета.
0 - Выкл
1 - Вкл
|
| 4 |
All pixel ON |
Не определено |
| 3 |
All pixel OFF |
Не определено |
| 2 |
Display ON/OFF |
Display ON/OFF.
0 - Выкл
1 - Вкл
|
| 1 |
Tearing effect line ON/OFF |
Режим линии с эффектом разрыва
0 - Режим Выкл
1 - Режим Вкл
|
0 |
Gamma curve selection |
Бит GC 0
|
| 5й параметр |
| 7 |
Gamma curve selection |
Бит GC 1
|
| 6 |
Gamma curve selection |
Бит GC 2
000 Кривая гаммы 1
001 Кривая гаммы 2
010 Кривая гаммы 3
011 Кривая гаммы 4
|
| 5 |
Tearing effect line mode |
0 - Mode 1, V-Blanking only
1 - Mode 2, both H-Blanking and V-Blanking.
|
| 4 |
Not used |
---
|
| 3 |
Not used |
---
|
| 2 |
Not used |
---
|
| 1 |
Not used |
---
|
| 0 |
Not used |
--- |
|
Чтение режима питания дисплея.
| 2й параметр |
| 7 |
Booster Voltage Status |
0 - Бустер отключен
1 - Бустер включен
|
| 6 |
Idle Mode On/Off |
Режим ожидания
0 - Режим ожидания отключен.
1 - Режим ожидания включен.
|
| 5 |
Partial Mode On/Off |
Частичный режим отображения
0 - Режим ожидания отключен.
1 - Режим ожидания включен.
|
| 4 |
Sleep In/Out |
Спящий режим.
0 - Спящий режим включен.
1 - Спящий режим выключен.
|
| 3 |
Display Normal Mode On/Off |
Нормальный режим
0 - Режим отключен (Частичный режим включен).
1 - В нормальном режиме.
|
| 2 |
Display On/Off |
Дисплей включен.
|
| 1 |
Not used |
---
|
| 0 |
Not used |
---
|
|
Чтение режима питания дисплея.
| 2й параметр |
| 7 |
Page Address Order |
Порядок адресов строк
0 Сверху вниз
1 Снизу вверх
|
| 6 |
Column Address Order |
Порядок адресов столбцов
0 Слева направо
1 Справа налево
|
| 5 |
Page/Column Order |
Порядок страниц / столбцов
0 Обычный режим
1 Обратный режим
|
| 4 |
Line Address Order |
Порядок адресов строк
0 Обновление сверху вниз
1 Обновление снизу вверх
|
| 3 |
RGB/BGR Order |
0 - RGB
1 - BGR
|
| 2 |
Display Data Latch Data Order |
Обновление данных
0 - Обновление слева направо
1 - Обновление справа налево
|
| 1 |
Not used |
---
|
| 0 |
Not used |
---
|
|
Чтение формата пикселя.
| 2й параметр |
| 7:4 |
RGB Interface Format |
0101 16 bits / pixel
0110 18 bits / pixel
|
| 3 |
Not used |
---
|
| 2:0 |
CPU Interface Format |
101 16 bits / pixel
110 18 bits / pixel
|
|
.
| 2й параметр |
| 7 |
Vertical Scrolling Status |
Состояние режима вертикальной прокрутки
0 Вертикальная прокрутка выключена
1 Вертикальная прокрутка включена
|
| 6 |
Not used |
---
|
| 5 |
Inversion On/Off |
Включение/выключение инвертированного режима
0 - Инверсия выключена
1 - Инверсия включена
|
| 4 |
Not used |
---
|
| 3 |
Not used |
---
|
| 2:0 |
Gamma Curve Selection |
000 Кривая гаммы 1
001 Кривая гаммы 2
010 Кривая гаммы 3
011 Кривая гаммы 4
|
|
Чтение сигнального режима дисплея.
| 2й параметр |
| 7 |
Tearing Effect Line |
0 Эффект Выкл
1 Эффект Вкл
|
| 6 |
Tearing Effect Line Mode |
0 - режим 1
1 - режим 2
|
| 5 |
Horizontal Sync (RGB interface) |
Горизонтальная синхронизация
0 - Выкл
1 - Вкл
|
| 4 |
Vertical Sync (RGB interface) |
Вертикальная синхронизация
0 - Выкл
1 - Вкл
|
| 3 |
Pixel Clock (DOTCLK, RGB interface) |
0 - Выкл
1 - Вкл
|
| 2 |
Data Enable (DE, RGB interface) |
0 - Off
1 - On
|
| 1 |
Not used |
---
|
| 0 |
Error on DSI |
Error on Display System Interface
0 - Ошибок нет
1 - Ошибки есть
|
|
| Выключение экрана и переход в спящий режим. |
Включение экрана и выход из спящего режима.
Главный процессор должен подождать 5 мс после отправки этой команды, прежде чем отправлять другую команду. |
Включение режима частичного отображения.
Область частичного отображения задается в регистре Set Partial Area (0x30). |
| Выключение режима частичного отображения и скроллинга
|
| Выключение режима инверсии цветов.
|
| Включение режима инверсии цветов.
|
Передача в контроллер экрана начального и конечного столбца области для рисования. (Координаты X1 и X2 области.)
| 1й параметр |
| 7:0 |
SC |
Start Colum. Старший байт начального столбца.
|
| 2й параметр |
| 7:0 |
SC |
Start Colum. Младший байт начального столбца.
|
| 3й параметр |
| 7:0 |
EC |
End Colum. Старший байт конечного столбца.
|
| 4й параметр |
| 7:0 |
EC |
End Colum. Младший байт конечного столбца.
|
|
Передача в контроллер экрана начальной и конечной строки области для рисования. (Координаты Y1 и Y2 области.)
| 1й параметр |
| 7:0 |
SP |
Start Page. Старший байт начальной строки.
|
| 2й параметр |
| 7:0 |
SP |
Start Page. Младший байт начальной строки.
|
| 3й параметр |
| 7:0 |
EP |
End Page. Старший байт конечной строки.
|
| 4й параметр |
| 7:0 |
EP |
End Page. Младший байт конечной строки.
|
|
Передача в контроллер данных о цвете пикселя, в область экрана предварительно
указанную в регистрах set_column_address (0x2A) и set_page_address (0x2B), в зависимости от выбранного формата пикселя и
от выбранных правил заполнения области изображения.
Дойдя до конца строки, значение внутреннего указателя строки увеличится на 1ед и он переместится на следующую строку.
| 1й параметр |
| 7:0 |
Data 1 |
Первая часть данных цвета пикселя...
|
| N-й параметр |
| 7:0 |
Data N |
N-ая часть данных цвета пикселя.
|
|
Получение из контроллера данных о цвете пикселя, из области экрана предварительно
указанной в регистрах set_column_address (0x2A) и set_page_address (0x2B), в зависимости от выбранного формата пикселя и
от выбранных правил заполнения области изображения.
Дойдя до конца строки, значение внутреннего указателя строки увеличится на 1ед и он переместится на следующую строку.
| 1й параметр |
| 7:0 |
Data 1 |
Первая часть данных цвета пикселя...
|
| N-й параметр |
| 7:0 |
Data N |
N-ая часть данных цвета пикселя.
|
|
Регистр позволяет выбрать область частичного отображения. Передаваемые параметры позволяют выбрать
начальную и конечную строку области. Если значение конечной строки меньше начальной, то будет выбрано две области. От края экрана, до наименьшего
значения параметра, и от строки с большим значением до конца экрана.
Область экрана которая будет, которая подлежит сканированию видеопамяти.
| 1й параметр |
| 7:0 |
Start Row |
Старший байт начальной строки.
|
| 2й параметр |
| 7:0 |
Start Row |
Младший байт начальной строки.
|
| 3й параметр |
| 7:0 |
End Row |
Старший байт конечной строки.
|
| 4й параметр |
| 7:0 |
End Row |
Младший байт конечной строки.
|
|
Выбор области вертикального скроллинга.
| 1й параметр |
| 7:0 |
TFA |
Старший байт окончания верхней фиксированной области вертикального скроллинга.
|
| 2й параметр |
| 7:0 |
TFA |
Младший байт окончания верхней фиксированной области вертикального скроллинга.
|
| 3й параметр |
| 7:0 |
VSA |
Длинна области скроллинга в линиях. Старший байт.
|
| 4й параметр |
| 7:0 |
VSA |
Длинна области скроллинга в линиях. Младший байт.
|
| 5й параметр |
| 7:0 |
BFA |
Старший байт начала нижней фиксированной области вертикального скроллинга.
|
| 6й параметр |
| 7:0 |
BFA |
Младший байт начала нижней фиксированной области вертикального скроллинга.
|
|
| Выключение Tearing Effect.
|
Включение Tearing Effect.
В зависимости от выбранной строки в регистре Write Tear Scan Line (0х44), при сканировании памяти, контроллер экрана установит высокий уровень
на выводе (TE), когда дойдет до указанной строки.
В большинстве случаев, на готовых платах с экраном, данный вывод не выведен.
|
Настройки обращения к памяти дисплея.
| 1й параметр |
| 7 |
Row Address Order |
Смена направления чтения строк.
|
| 6 |
Column Address Order |
Смена направления чтения столбцов.
|
| 5 |
Row / Column Exchange |
Смена столбцов со строками местами.
0 - Выкл
1 - Вкл
|
| 4 |
Vertical Refresh Order |
Вертикальное обновление экрана.
0 - Выкл
1 - Вкл
|
| 3 |
RGB-BGR Order |
0 - RGB
1 - BGR
|
| 2 |
Horizontal Refresh Order |
Горизонтальное обновление экрана.
|
| 1 |
Not used |
---
|
| 0 |
Not used |
---
|
|
Указатель на строку, на которую смещается выбранная для вертикальной прокрутки область,
предварительно описанная в регистре Vertical Scrolling Definition (33h)
| 1й параметр |
| 7:0 |
VSP |
Vertical Start Address. Старший бит.
|
| 2й параметр |
| 7:0 |
VSP |
Vertical Start Address. Младший бит.
|
|
| Включение упрощенного отображения. В данном режиме срезаются все биты передаваемых цветов, кроме
самого старшего.
|
| Выключение упрощенного отображения..
|
Выбор формата пикселя.
| 1й параметр |
| 7:4 |
RGB Формат пикселя |
0 1 0 1 - 16 bits / pixel
0 1 1 0 - 18 bits / pixel
Формат пикселей может отличаться в различных дисплеях.
|
| 3 |
Not used |
---
|
| 2:0 |
CPU Interface Format |
1 0 1 - 16 bits / pixel
1 1 0 - 18 bits / pixel
|
|
| 1й параметр |
| 7:0 |
Data 1 |
Эта команда используется для передачи данных из микроконтроллера в кадровую память, если требуется продолжить
запись в память после Команды “Memory Write (0х2C)”.
|
|
| 1й параметр |
| 7:0 |
Data 1 |
Эта команда используется для чтения данных из микроконтроллера в кадровую память, если требуется продолжить
запись в память после Команды “Memory Write (0х2E)”.
|
|
Записать номер строки для эффекта Tear Scan Line
| 1й параметр |
| 7:0 |
Data |
Передать строку, после сканирования которой микроконтроллер установит высокий уровень на выводе TE.
Старший байт номера строки.
|
| 2й параметр |
| 7:0 |
Data |
Младший байт номера строки.
|
|
Прочесть текущую строку эффекта Tear Scan Line.
| 1й параметр |
| 7:0 |
Data |
Прочесть текущую строку, после сканирования которой микроконтроллер установит высокий уровень на выводе TE.
Старший байт номера строки.
|
| 2й параметр |
| 7:0 |
Data |
Прочесть текущую строку, после сканирования которой микроконтроллер установит высокий уровень на выводе TE.
Младший байт номера строки.
|
|