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?

DC    = RS
CLK   = WR, although maybe it should connect to DC???
CS    = CSX

I'm really unsure about the first two!

Second, in the PDF it refers to note 1 on page 11:

enter image description here

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 Jan 8 '19 at 13:56

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                       |
| improve this answer | |
  • what does "active low" mean, next to CS? – Ant Kutschera Jan 8 '19 at 15:05
  • is the RST pin on the ESP32, the EN pin, or some pin of my choice? – Ant Kutschera Jan 8 '19 at 15:06
  • 1
    It 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 Jan 8 '19 at 15:06
  • RST and DC are pins of your choice. They are just GPIOs to control the screen. – Majenko Jan 8 '19 at 15:06
  • 1
    Map 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 Jan 8 '19 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);


// 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!

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.