Подключение TFT-дисплея MI0283QT-9A к ESP32

Я приобрел TFT-дисплей MI0283QT-9A (https://download.mikroe.com/documents/add-on-boards/other/display/tft-proto/tft-proto-manual-v200.pdf), который управляется контроллером дисплея ILI9341.

Мне удалось найти следующую спецификацию платы: http://pub.ucpros.com/download/tft_320_240_mi0283qt_9a_v1_3_spec. PDF

Во-первых, контакты названы иначе, чем во всех примерах подключения к моему микроконтроллеру ESP32, которые я могу найти. Например, спецификации TFT описывают:

33 SDO Serial Output Signal
34 SDI Serial Input Signal
35 RD Read execution control pin
36 WRX(D/CX) Write execution control pin ; Serial Register select s Signal
37 D/CX(SCL) Register select signal; Serial Interface Clock
38 CSX Chip Select Signal
39 TE Tearing effect out pin synchronize MPU to frame writng

Но этот пример Adafruit ILI9341 (https://github.com/adafruit/Adafruit_ILI9341 /blob/master/examples/graphicstest/graphicstest.ino) рассказывает о CS, DC, MOSI, CLK, RST и MISO.

Я думаю, что это следующая карта. Может ли кто-нибудь это подтвердить?

ESP32 = TFT
--------------
DC    = RS
CLK   = WR, although maybe it should connect to DC???
CS    = CSX
MOSI  = SDI
RST   = RST
MISO  = SDO

Я действительно не уверен насчет первых двух!

Во-вторых, в PDF-файле это ссылка на примечание 1 на странице 11:

Насколько я могу судить, мне нужно установить высокое/низкое напряжение на четырех контактах IM*, в зависимости от интерфейса, который я хочу использовать. Итак, второй вопрос: какой интерфейс использует библиотека Adafruit ILI9341?

, 👍0

Обсуждение

Схема подключения зависит от того, в каком режиме вы используете плату - какой режим вы выбираете из таблицы режимов, которую вы показываете (какие настройки даете IM0-IM3)., @Majenko


2 ответа


Лучший ответ:

1

Похоже, вам нужен 4-проводной 8-битный последовательный интерфейс, совместимый с SPI. Для этого вам необходимо установить контакты IMx в правильное состояние, чтобы включить этот интерфейс. Это означает:

  • IM0 = НИЗКИЙ
  • IM1 = ВЫСОКИЙ
  • IM2 = ВЫСОКИЙ
  • IM3 = ВЫСОКИЙ

Вы можете жестко подключить их к GND для НИЗКОГО уровня и к +3,3 В для ВЫСОКОГО.

Это позволит настроить его для работы в нужном для вас режиме и предоставить вам доступ к следующим контактам:

| Display  | ESP32   | Function                    |
|----------|---------|-----------------------------|
| SCL (RS) | SCK     | Serial clock                |
| SDI      | MOSI    | Serial data Master -> Slave |
| SDO      | MISO    | Serial data Slave -> Master |
| D/CX (WR)| DC      | Data / Command register sel |
| CSX      | CS      | Chip Select (Active Low)    |
| RST      | RST     | Reset                       |
,

что означает «активный минимум» рядом с CS?, @Ant Kutschera

это контакт RST на ESP32, контакт EN или какой-либо другой контакт по моему выбору?, @Ant Kutschera

Это означает, что вход считается «активированным», когда на него поступает сигнал LOW. То есть микросхема активируется, когда вы подаете НИЗКИЙ уровень на этот вывод., @Majenko

RST и DC — контакты по вашему выбору. Это просто GPIO для управления экраном., @Majenko

Спасибо за помощь. У меня все еще есть проблема с SCL и DCX: согласно спецификациям: TFT Pin36: WRX//D/CX) Вывод управления выполнением записи; Последовательный регистр выберите s Сигнал; TFT Pin37: сигнал выбора регистра D/CX(SCL); Часы последовательного интерфейса. ни одно из этих имен не указано на плате TFT. но у нас есть RS = Register Select =>, поэтому DC — это вывод RS. это означает, что SCL/SCK должен быть контактом WR. ок, я проверю это., @Ant Kutschera

забудьте комментарий выше. Спасибо за помощь. У меня все еще есть проблема с SCL и DCX: согласно спецификациям: TFT Pin36: WRX//D/CX) Вывод управления выполнением записи; Последовательный регистр выберите s Сигнал; TFT Pin37: сигнал выбора регистра D/CX(SCL); Часы последовательного интерфейса. На плате нет контакта с именем D/CX(SCL), но есть один с именем RS и один с именем WR. Я так понимаю, WR — это DC, а RS — часы?, @Ant Kutschera

Сопоставьте контакты, используя схему. Контакт 36 имеет постоянный ток в последовательном режиме. Это LCD-WR# на плате (WR). Контакт 37 — SCL в последовательном режиме. 37 — это RS на плате. Итак, DC -> WR и SCK -> RS. На самом деле плата маркирована с точки зрения 16-битного интерфейса 8080., @Majenko

Хорошо, я начал использовать контакты SPI ESP32, а не контакты GPIO. ДК/ВР=12; СКК/РС=18; КС=15; ИДИ/МОСИ=23; РСТ=14; МИСО/СДО=19. доска теперь мерцает, хотя и не показывает то, что должна. и программа теперь выводит ненулевые значения: Display Power Mode: 0xFF; Режим MADCTL: 0xE0; Формат пикселей: 0xFF; Формат изображения: 0xFF; Самодиагностика: 0xFF. см. также https://github.com/espressif/arduino-esp32/blob/master/docs/esp32_pinmap.png, @Ant Kutschera

Вывод IM0 был отключен от земли => вставил его обратно, и теперь он работает отлично. Спасибо!!!, @Ant Kutschera

Отличный. За эти годы я мало что узнал о TFT ;), @Majenko


1

Та же самая (прототип TFT-платы), протестированная на Arduono DUE.

Выводы IM1-3 HI, IM0 LO. (4-проводной 8-битный последовательный интерфейс данных)

SDI - MOSI, SDO - MISO,RS - CLK, RD - HI, WR - D9, CS - D10, Сброс - Сброс (D8)

Драйвер UTFT myGLCD (ILI9341_S5P, MOSI, SCK, 10,8,9);

или

// Для щита Adafruit это значения по умолчанию.
#define TFT_DC 9
#define TFT_CS 10
Adafruit_ILI9341 tft = Adafruit_ILI9341 (TFT_CS, TFT_DC);

Подсветке нужен резистор!

,