Files
2026-06-27 00:39:04 +03:00

75 lines
4.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Драйвер дисплея 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 мс для безопасного включения экрана.