I have purchased a MI0283QT-9A TFT display (https://download.mikroe.com/documents/add-on-boards/other/display/tft-proto/tft-proto-manual-v200.pdf) which is driven by the ILI9341 display controller.
I've managed to find the following board specification: http://pub.ucpros.com/download/tft_320_240_mi0283qt_9a_v1_3_spec.pdf
First of all, the pins are named differently from all the examples I can find for connecting it to my ESP32 microcontroller. For example, the TFT specs describe:
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
But this Adafruit ILI9341 example (https://github.com/adafruit/Adafruit_ILI9341/blob/master/examples/graphicstest/graphicstest.ino) talks about CS, DC, MOSI, CLK, RST, and MISO.
I think these map as follows, can anyone confirm that?
ESP32 = TFT
--------------
DC = RS
CLK = WR, although maybe it should connect to DC???
CS = CSX
MOSI = SDI
RST = RST
MISO = SDO
I'm really unsure about the first two!
Second, in the PDF it refers to note 1 on page 11:
So as far as I can tell, I need to set the voltage high/low on the four IM* pins, depending upon the interface I want to use. So the second question is which interface does the Adafruit ILI9341 library use?
-
The wiring depends on what mode you are using the board in - which mode you select from the table of modes you show (what settings you give to IM0-IM3).Majenko– Majenko2019年01月08日 13:56:52 +00:00Commented Jan 8, 2019 at 13:56
2 Answers 2
It sounds like you want a 4-wire 8-bit serial SPI compatible interface. To get that you have to set the IMx pins to the right state to enable that interface. That means:
- IM0 = LOW
- IM1 = HIGH
- IM2 = HIGH
- IM3 = HIGH
You can hard-wire those to GND for LOW and +3.3V for HIGH.
That will then configure it to work in the right mode for you, where it gives you access to the following pins:
| 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 |
-
what does "active low" mean, next to CS?Ant Kutschera– Ant Kutschera2019年01月08日 15:05:31 +00:00Commented Jan 8, 2019 at 15:05
-
is the RST pin on the ESP32, the EN pin, or some pin of my choice?Ant Kutschera– Ant Kutschera2019年01月08日 15:06:02 +00:00Commented Jan 8, 2019 at 15:06
-
1It means that the input is considered "activated" when it receives a LOW signal. I.e., the chip is activated when you apply LOW to that pin.Majenko– Majenko2019年01月08日 15:06:06 +00:00Commented Jan 8, 2019 at 15:06
-
RST and DC are pins of your choice. They are just GPIOs to control the screen.Majenko– Majenko2019年01月08日 15:06:29 +00:00Commented Jan 8, 2019 at 15:06
-
1Map the pins using the schematic. Pin 36 is DC in serial mode. That's LCD-WR# on the board (WR). Pin 37 is SCL in serial mode. 37 is RS on the board. So DC -> WR and SCK -> RS. The board is really labelled from a 16-bit 8080 interface perspective.Majenko– Majenko2019年01月08日 15:27:34 +00:00Commented Jan 8, 2019 at 15:27
Same (TFT proto board) tested Arduono DUE.
Pins IM1-3 HI, IM0 LO. (4-wire 8-bit data serial interface)
SDI - MOSI, SDO - MISO,RS - CLK, RD - HI, WR - D9, CS - D10, Reset - Reset (D8)
Driver UTFT myGLCD (ILI9341_S5P, MOSI, SCK, 10,8,9);
or
// For the Adafruit shield, these are the default.
#define TFT_DC 9
#define TFT_CS 10
Adafruit_ILI9341 tft = Adafruit_ILI9341 (TFT_CS, TFT_DC);
Backlight needs resistor!