Files
DS_Library_Docs/docs/DS_ILI9341.md
T
2026-06-27 00:39:04 +03:00

4.5 KiB
Raw Blame History

Драйвер дисплея DS_ILI9341 (Параллельный интерфейс 8080)

Библиотека для управления цветными TFT-дисплеями на базе популярного контроллера ILI9341 (разрешение 240x320, 16-битный цвет RGB565).

В отличие от стандартных SPI-решений, данный драйвер использует 8-битную параллельную шину данных (Intel 8080), что обеспечивает максимальную скорость обновления кадров (FPS) за счет одновременной передачи целого байта за один такт линии WR.

📌 Особенности реализации

  • Параллельная архитектура: Полноценное управление шиной данных через независимые пины D0D7.
  • ООП-стиль управления: Все дескрипторы портов и пинов инкапсулируются внутри единой структуры дисплея, позволяя гибко переназначать выводы без изменения кода самой библиотеки.
  • Стабильный запуск: Встроенная аппаратная задержка 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 мс для безопасного включения экрана.