Подключение 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?
@Ant Kutschera, 👍0
Обсуждение2 ответа
Лучший ответ:
Похоже, вам нужен 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
Та же самая (прототип 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);
Подсветке нужен резистор!
- Параллельная проводка TFT с ESP32
- ESP32 с регулятором мощности Lolin 2,4-дюймовый TFT экран
- Драйвер Arduino ESP32F-TFT-1.44
- esp32, platformio A fatal error occurred: Packet content transfer stopped (received 8 bytes) *** [upload] Error 2
- Как приглушить фоновые светодиоды на TFT дисплее с помощью ILI9341
- Как выбрать альтернативные контакты I2C на ESP32?
- Драйверы для чипа последовательного порта CH9102X
- Как преобразовать форматированный оператор print в строковую переменную?
Схема подключения зависит от того, в каком режиме вы используете плату - какой режим вы выбираете из таблицы режимов, которую вы показываете (какие настройки даете IM0-IM3)., @Majenko