# Драйвер дисплея 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` Из-за параллельного интерфейса вызов инициализации требует явного указания всех портов и пинов, выделенных под шину: ```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 мс для безопасного включения экрана.