ILI9806G - out of reach for Arduinos?

I still dream of big displays for Arduinos, and I bought a 5 inch one to try...

This one is targeted at the STM32 world, but even there it seems quite hard to get it working, because information is sparse.

The display I bought is:

Slightly more informative is:

which has capacitive touch instead of resistive, but most likely same tft.

I also bought a STM32 board with matching connector:

https://www.aliexpress.com/item/STM32-core-development-TFT-LCD-screen-evaluation-board-with-high-speed-FSMC-SDIO-interface/32667841009.html

And I downloaded the STemWin Library for STM32.

But my experience with STM32 development tools is near marginal, STM32 on Arduino IDE is much easier to use.

So my question is, has anyone experience with such displays, can it be used with any Arduinos, e.g. STM32, or are there better solutions for high resolution displays with Arduinos?

Any suggestions or links would be highly welcome.

Jean-Marc

It looks like a regular 40-pin 3.3V module. So it should fit on a 40-pin Shield Adapter for MEGA2560. It is your job to check the pinout.

If you buy the 40-pin Shield Adapter for DUE, you can make a simple mod to use the /RD pin. Note that Sainsmart Due Adapters come out of the factory with WRONG voltage settings.

It should be simple to drive. I have an ILI9806 datasheet.

David.

david_prentice:
It looks like a regular 40-pin 3.3V module. So it should fit on a 40-pin Shield Adapter for MEGA2560. It is your job to check the pinout.

If you buy the 40-pin Shield Adapter for DUE, you can make a simple mod to use the /RD pin. Note that Sainsmart Due Adapters come out of the factory with WRONG voltage settings.

It should be simple to drive. I have an ILI9806 datasheet.

David.

Ok, thank you very much for your answer. Searching for ILI9806 instead of ILI9806G helped me find the datasheet, too. It has 324 pages and will get me reading for some time.

But maybe you can suggest an existing library that is similar to the one I need for ILI9806, to give me a quick start. Is there a generic library for displays with parallel write to graphic RAM?

Wiring could be postponed, if I use the STM32 board with Arduino IDE.

Thank you

Jean-Marc

Go on. MCUFRIEND_kbv has supported SSD1963 for about 12 months for both MEGA2560 and DUE. It can do ILI9806 if you wanted. No one has ever asked.
There is an 8-bit driver for STM32F103.

Or it could do multiple MBED targets.

You could adapt UTFT for ILI9806 within minutes.

David.

I got a first version working. I use parallel wires to an Arduino Due (DuPont wires).

The STM32F407 board contains a dem program for this display, with some icons and web address www.hjrkj.com. I sent them an e-mail and got a link to a ~50mb download. In it I found Tiky.h and Tiky.c, so I could extract the initialization sequence for ili9806 controller. And I finally got the same from Jaina Kuang from Ruijia Industry.

For the pin mapping code I used the method found in TFT_HX8357_Due and adapted it.

I have got now a RobotDyn Expansion Shield, with level shifters, that I'd like to use with UNO, but I didn't find any documents for the pin mapping.

The output pins seem ok for my display, but its hard to see from which input pins the signal comes.

Anyone knows more about this shield?

Jean-Marc

Google for a schematic.

Or simply follow the pcb traces with your eyes or DMM for continuity.

A Uno has only got 20 GPIO pins. And it is painful to share the USART TXD, RXD.

Most 40-pin displays have a 16-bit data bus and at least 5 control signals for the TFT.
The Touch Controller and SD need 5 pins for SPI and 1 for IRQ.

I make that 26 GPIO needed from a a 20 GPIO pot.

Of course, an 8-bit data bus would make life a lot easier.
Very few 40-pin displays give access to the IM# pins to select the interface type.

ARM boards are pretty cheap. Why not stick with STM32 or SAM ?

David.

david_prentice:
It looks like a regular 40-pin 3.3V module. So it should fit on a 40-pin Shield Adapter for MEGA2560. It is your job to check the pinout.

If you buy the 40-pin Shield Adapter for DUE, you can make a simple mod to use the /RD pin. Note that Sainsmart Due Adapters come out of the factory with WRONG voltage settings.

It should be simple to drive. I have an ILI9806 datasheet.

David.

Therefore I looked for adapters. And found only few inexpensive ones. I don't like to spend more for the adapter than for the processor. And I have this STM32 board that directly connects to the display (it's ~15$ including shipping).

I try more options now that it works with Due. And I'd like to stick with 16 bits, although the display has solder pads to configure it.

Soon I get some 40pin headers with long tails, so I can try to solder it directly to a STM32F103C8T6 mini board. I have not yet checked if there remain pins to connect a ESP-1 for WiFi.

Jean-Marc

Just be realistic. 16-bit bus with a Uno is not practical. At best you just have a screen without Touch or SD or Serial.

There are lots of 40-pin Adapters for a MEGA2560.
There is one 40-pin Adapter for a Due.

It would not be difficult to solder a 20x2 header socket onto some Protoboard.
And solder a $3 BluePill onto the Protoboard. i.e. about $5 for all components

Personally, I am happy with regular Uno Display Shields. They fit on a Uno, Mega, Due, Nucleo, Frdm, ...

I can understand penny-pinching for a 128x128 display. It seems crazy to cut corners on a 1024x800 or whatever.

In fact, now that I have written this, I might just order some 20x2 header sockets and a BluePill for myself.

David.

david_prentice:
Just be realistic. 16-bit bus with a Uno is not practical. At best you just have a screen without Touch or SD or Serial.

I am slightly more optimistic about this shield.

It contains two HC541 octal buffers for level shifting,
and two HC365 hex bus buffers.

That's why my measurements and following traces was not sufficient to decipher the mapping.
I know the direct mapping, but have to find out about the buffered pins.

So this shield can be used for 16bit displays, with touch and SD on UNO.

But the pinout is specific for the RobotDyn 2.8 TFT; it has 3.3V and 5V on uncommon pins (not checked against other 2.8 TFTs).

So I might use it with DuPont wires with my display - not useful - or for other purposes.

For the pinout the picture for the display is helpful:

Jean-Marc

But both kinds of buffers seem to be non-latching, so the mapping is still a mystery.

My testprogram sequentially activates all UNO pins, and I look at the shields output using LEDs or DMM.
And I do this with combinations of the UNO pins that do not show directly on output. Gets complicated.
Maybe I should also attach a logic analyser. But this is of low importance, not useful for now.

Go on. It would take minutes to follow the pcb traces.

Google might find your schematic. You would still need to verify it.

David.

david_prentice:
Go on. It would take minutes to follow the pcb traces.

Google might find your schematic. You would still need to verify it.

David.

Hi David

Wasn't it you who told me to ask Auntie Google? or was it pberrybap?

Anyway, I learned that lesson and use google regularly first now.

Following traces is not so easy for me, on a double layer print painted black and with traces under chips.
But of course it becomes easier now that I know that I should look for the traces going to the enable pins of the buffers. However, I have not yet decided, if I postpone this. Connecting my display to the different STM32 boards I have may provide more fun!

Jean-Marc

I suggested Google. All the same, internet schematics are not always truthful.

Regarding continuity testing strategy.

  1. identify channel #0 in a buffer.
  2. find corresponding output on 40x2. and input on Uno header.
  3. it is likely that channels #1..#N of a buffer go to adjacent pins e.g. on 40x2.
  4. find if /OE pins on a buffer are hard-wired low or go to Uno

As you noted earlier, the buffers are not latching. They are just regular non-inverting.

I am intrigued how you can get a Uno to control a 8080-16 interface without latches or shift register.
I just don't see the point.

My BluePill enthusiasm has waned. I only possess a SSD1963 with 20x2.
I see that the STM32103C8T6 has only got 64k Flash.

All my other displays are Uno Shield or Mega Shield.
Ok, this means mixed ports on a Nucleo. But I have to introduce waits on an M3 or M4 anyway.
The Due can run the SSD1963 by using an Adapter Shield.

David.

Hi David

It is a pleasure to get your help and suggestions!

And I am very interested in your work. If you report elsewhere, please add a link to this topic.

I just ordered two 7 inch displays, now that I see a good chance to control them with my Arduinos.

The Waveshare 7" even has selectable SPI or parallel interface, and the pinout seems very similar to the RobotDyn 2.8

Jean-Marc

The WaveShare has a RA8875 controller. This can do very fast graphics and font rendering.

However any random pixel writes still involve sending x, y, color for every pixel. So an I2C would be very slow. SPI will also be slower than parallel. Remember that a big screen eats big data.
SPI with DMA is only helpful with block writes.

What is nice about Raio controller. You can horizontal scroll as well as vertical scroll. And the graphics are incredibly fast.

As far as I can remember, SSD1963 only does parallel interface. You must do all graphics yourself. It only does vertical scroll.

David.