Hi all. I'm quite new to arduino and making projects so sorry if it doesn't make sense or I don't give enough details.
I got an arduino micro and a ST7789 display and put them on a breadboard and connected in the following way:
GND -> GND
VCC -> 3.3v
SCL -> SCK (also tried 13)
SDA -> MO (also tried 11)
RES -> 8
DC -> 7
I've tested it using the Arduino Fast ST7789 Library, but it only works while uploading and when the upload is done the display is still on but not showing the words.
I've tried it with two displays and the result is the same. I've tried it with 5v and it works, but I've read that this isn't a good option as it can overheat the display and destroy it.
Again, I'm new to this and this might be something simple, but I can't find anything on here or anywhere else. Is there anything I'm missing?




First off. Google "Arduino Micro pinout".
I got this as first image. https://www.theengineeringprojects.com/wp-content/uploads/2018/09/introduction-to-Arduino-Micro-3-3.png
So SCK = digital#15 (PB1)
And MOSI = digital#16 (PB2)
And both MOSI and SCK are on the 3x2 ISP header as well as the DIL pins.
David.
p.s. that might have been the first image found by Google but is a bit crap.
unfortunately most of the other images were crap too !!
david_prentice:
First off. Google "Arduino Micro pinout".
I got this as first image. https://www.theengineeringprojects.com/wp-content/uploads/2018/09/introduction-to-Arduino-Micro-3-3.png
So SCK = digital#15 (PB1)
And MOSI = digital#16 (PB2)
And both MOSI and SCK are on the 3x2 ISP header as well as the DIL pins.
David.
p.s. that might have been the first image found by Google but is a bit crap.
unfortunately most of the other images were crap too !!
I had SCK into PB1 and MOSI into PB2. I tried to put them on the pins on the ISP, but it still has the same outcome.
It is strange as when it is "uploading", it displays in fine, but as soon as it is done uploading all you can see is the backlight and can very faintly see the words.
All TFT controllers are 3.3V
Most do not like 5V logic. Your display expects 3.3V logic
I suggest that you use level-shifters or voltage dividers on the signals.
Sitronix datasheets specify that the ST7789 logic signals should be <= VCC + 0.5 i.e. 3.8V
Likewise Ilitek datasheets.
Ilitek controllers will refuse to work if these levels are exceeded.
Sitronix controllers seem to be slightly tolerant.
I would still advise you to use 3.3V logic.
David.
david_prentice:
All TFT controllers are 3.3V
Most do not like 5V logic. Your display expects 3.3V logic
I suggest that you use level-shifters or voltage dividers on the signals.
Sitronix datasheets specify that the ST7789 logic signals should be <= VCC + 0.5 i.e. 3.8V
Likewise Ilitek datasheets.
Ilitek controllers will refuse to work if these levels are exceeded.
Sitronix controllers seem to be slightly tolerant.
I would still advise you to use 3.3V logic.
David.
Are these the level-shifters you are referring to?
https://www.amazon.co.uk/RUNCCI-YUN-Channels-Converter-Bi-Directional-Shifter/dp/B082F6BSB5/ref=sr_1_4?dchild=1&keywords=arduino+level+shifter&qid=1617743761&sr=8-4
If I use one of these, I will be able to output from the 5V through this to the ST7789 display?
Yes.
SDA + SCK + DC + CS = 4 channels
You can use a voltage divider for RST RES signal. (or a second 4-channel board)
And BLK probably works fine with n.c. anyway.
In an ideal world all 5V logic Arduinos would self-destruct.
Then you could safely use external electronics with proper 3.3V logic Arduinos.
Did you ever wonder why Adafruit, Waveshare, Seeed, ... displays contained level shifting buffer chips? (and cost more than your Blue ST7789 display)
David.
Thank you. Just so that I understand the circuit, I need to do something like this:
From Arduino -> ST7789 display
GND -> GND
5V -> VCC
PB1 (SCK) -> HV1 Level Converter LV1 Level Converter -> SCL
PB2 (MOSI) -> HV2 Level Converter LV2 Level Converter -> SDA
D8 -> HV3 Level Converter LV3 Level Converter -> RES
D7 -> HV4 Level Converter LV4 Level Converter -> DC
Is that right?
Also, I don't know what you mean by CS and RST signal (sorry, I'm new to this and still learning a lot).
Oops. I thought that you had an 8-pin Blue 3.3V 240x240 display.
On further inspection you probably have a 7-pin like 7-pin SPI
There were recent threads about 8-pin SPI
It is always wise to post a link to the actual display that you bought.
Then we can see the pcb side of the module. And read anything printed on the silkscreen.
The 7-pin modules don't have a CS pin. So you can't use them on a shared SPI bus. (Or read the memory)
The good news is that this means 4-channels i.e. as you proposed in #6
If a class constructor requires a CS argument, you say -1 to indicate a missing CS.
Given a choice, I would always prefer a module with a CS pin. (Chip-Select) e.g. the 8-pin SPI display.
David.
This is where I bought the display: Amazon.co.uk
The link describes all of the pins.
I am 99% certain that VCC must be 3.3V i.e. the description is wrong.
There is no 3.3V regulator chip. So you cant use 5V.
U2 looks like a J3Y transistor that switches the backlight. (which is why the backlight shines when BLK is n.c.)
Anyway, your plan in #6 should work fine.
If you are waiting for a level-shifter module to arrive, you can always use voltage-dividers e.g. 2k2+3k3
Obviously this depends on having some resistors. If unsure, just post what resistor values you possess.
David.
I've just got the level-shifter and I've tried it but it is only showing the backlight.
I have uploaded an image of the level-shifter. The top is the high-voltage coming from the Arduino and the low-voltage is at the bottom going to the display.


Thanks for the photo. You need to connect :
HV 5V
GND GND
LV 3.3V
GND GND
Only you can check the wires to DC, RES, SDA, SCL, ...
Add the wire colours to your scheme in #6 and post a photo of all wires if you still have a problem.
David.
Is this what you mean?
I've tried to keep the wire colours the same. Didn't realise the brown and grey were different until posting now.
From the Arduino to Level Converter:
Green wire D7 -> HV4
Brown wire D8 -> HV3
Orange wire GND -> GND
Blue wire 5V -> HV
White wire MOSI -> HV2
Yellow wire SCK ->HV1
From the Level Converter to the display:
Green wire LV4 -> DC
Grey wire LV3 -> RES
Orange wire GND -> GND
Blue wire LV -> VCC
White wire LV2 -> SDA
Yellow wire LV1 -> SCL
I've tried this and the screen is black with no backlight.






Your level-shifter module does not appear to be soldered to the male pin headers.
You have omitted the connection from Micro 3.3V pin to LV
David.
david_prentice:
Your level-shifter module does not appear to be soldered to the male pin headers.
You have omitted the connection from Micro 3.3V pin to LV
David.
Done and it works perfectly!
Thank you very much.
I've got a small question.
I have an Arduino Pro Mini (5V) and it has two VCC pinouts. Does this mean they are both 5V? If so, how would I connect a 3.3V to the level converter and the ST7789 display?
Buy a "better" board. The pinouts found with Google imply that there are several boards called "Pro Mini".
None seem to have a 3.3V regulator.
However I suspect that the FTDI USB-Serial Adapter that you connect to the Pro Mini has a 3.3V output.
Otherwise just buy a 3.3V regulator module.
I suspect you have realised by now. Regular electronics is 3.3V. 5V Arduino boards are painful.
David.
Thank you. I'm still new to this, but I've learnt a lot from your replies.
I was hoping to use the Pro Mini to make a portable version of my project in the future. Are there any other boards you recommend?
Nano has 3.3V pin, Serial-USB chip, USB socket, ...
Nano has 5V logic. So you need the level-shifters.
STM32 BluePill, BlackPill, ... has 3.3V logic.
Teensy 3.2, Teensy4.x has 3.3V logic.
Personally, I prefer proper Arduino header sockets. So I can use either ready-made Shields or home-wired ProtoShields.
David.
1 Like