4.5 KiB
4.5 KiB
Драйвер дисплея DS_ILI9341 (Параллельный интерфейс 8080)
Библиотека для управления цветными TFT-дисплеями на базе популярного контроллера ILI9341 (разрешение 240x320, 16-битный цвет RGB565).
В отличие от стандартных SPI-решений, данный драйвер использует 8-битную параллельную шину данных (Intel 8080), что обеспечивает максимальную скорость обновления кадров (FPS) за счет одновременной передачи целого байта за один такт линии WR.
📌 Особенности реализации
- Параллельная архитектура: Полноценное управление шиной данных через независимые пины
D0–D7. - ООП-стиль управления: Все дескрипторы портов и пинов инкапсулируются внутри единой структуры дисплея, позволяя гибко переназначать выводы без изменения кода самой библиотеки.
- Стабильный запуск: Встроенная аппаратная задержка
HAL_Delay(500)при инициализации гарантирует корректную стабилизацию внутренних цепей питания контроллера дисплея перед подачей конфигурационных команд.
🔌 Схема подключения (8-битный режим)
Драйвер требует для работы 13 свободных GPIO-выводов микроконтроллера STM32. Все пины настраиваются в CubeMX как GPIO_Output (High Speed).
| Вывод дисплея | Описание шины | Назначение |
|---|---|---|
| CS | Chip Select | Выбор чипа (активен в 0) |
| RS / DC | Register Select | Выбор: 0 — Команда, 1 — Данные |
| WR | Write Echo | Строб записи данных (по спаду/подъему) |
| RD / RQ | Read Request | Строб чтения данных (если используется) |
| RST | Reset | Аппаратный сброс контроллера дисплея |
| D0 ... D7 | Data Bus 0-7 | 8-битная параллельная шина данных |
💻 Пример использования в main.c
Из-за параллельного интерфейса вызов инициализации требует явного указания всех портов и пинов, выделенных под шину:
#include "DS_ILI9341.h"
DS_ILI9341 tft_display;
int main(void) {
// ... Автоматическая инициализация HAL, SystemClock, GPIO ...
/* Высокоуровневое связывание параллельного интерфейса дисплея с STM32 */
DS_ILI9341_Init(&tft_display,
GPIOC, GPIO_PIN_9, // Port & Pin CS
GPIOA, GPIO_PIN_0, // D0
GPIOA, GPIO_PIN_1, // D1
GPIOA, GPIO_PIN_2, // D2
GPIOA, GPIO_PIN_3, // D3
GPIOA, GPIO_PIN_4, // D4
GPIOA, GPIO_PIN_5, // D5
GPIOA, GPIO_PIN_6, // D6
GPIOA, GPIO_PIN_7, // D7
GPIOC, GPIO_PIN_10, // RQ (Read)
GPIOC, GPIO_PIN_11, // RS (Command/Data)
GPIOC, GPIO_PIN_12, // RST (Reset)
GPIOC, GPIO_PIN_8 // WR (Write)
);
// После инициализации можно вызывать функции заливки и вывода текста:
// DS_ILI9341_Clear(&tft_display, 0x0000);
while (1) {
// Основной цикл
}
}
📋 Справочник API функций
void DS_ILI9341_Init(DS_ILI9341 *Display, ... 25 пинов ...)
Выполняет первичную привязку структуры управления к физическим ножкам микроконтроллера STM32.
- Очищает линии связи и подготавливает шину к передаче параллельных данных.
- Содержит стартовую блокирующую задержку на 500 мс для безопасного включения экрана.