Opensmart 2.2" Display not working

Hello,
I am getting the following output while reading the reg.
also tried every 320x240 driver given in mcufriend_how_to.txt
I have RM68130 display. not able to find any help. can you spot some light on it.
I am using Arduino Mego 2560, tried to connect data with pin 22-29 as well as 8,9,10,11,4,13,6,7 while
// CS -- A3
// RS -- A2
// WR -- A1
// RD -- 3.3V also tried with A0
and Reset with A4 as well as reset pin

but nothing worked.

reg(0x0000) C0 C0 ID: ILI9320, ILI9325, ILI9335, ...
reg(0x0004) C4 C4 E4 E4 Manufacturer ID
reg(0x0009) C9 C9 E9 E9 E9 Status Register
reg(0x000A) CA CA Get Power Mode
reg(0x000C) CC CC Get Pixel Format
reg(0x0061) E1 E1 RDID1 HX8347-G
reg(0x0062) E2 E2 RDID2 HX8347-G
reg(0x0063) E3 E3 RDID3 HX8347-G
reg(0x0064) E4 E4 RDID1 HX8347-A
reg(0x0065) E5 E5 RDID2 HX8347-A
reg(0x0066) E6 E6 RDID3 HX8347-A
reg(0x0067) E7 E7 RDID Himax HX8347-A
reg(0x0070) F0 F0 Panel Himax HX8347-A
reg(0x00A1) E1 E1 E1 E1 E1 RD_DDB SSD1963
reg(0x00B0) F0 F0 RGB Interface Signal Control
reg(0x00B4) F4 F4 Inversion Control
reg(0x00B6) F6 F6 F6 F6 F6 Display Control
reg(0x00B7) F7 F7 Entry Mode Set
reg(0x00BF) FF FF FF FF FF FF ILI9481, HX8357-B
reg(0x00C0) C0 C0 E0 E0 E0 E0 E0 E0 E0 Panel Control
reg(0x00C8) C8 C8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 GAMMA
reg(0x00CC) CC CC Panel Control
reg(0x00D0) D0 D0 F0 Power Control
reg(0x00D2) D2 D2 F2 F2 F2 NVM Read
reg(0x00D3) D3 D3 F3 F3 ILI9341, ILI9488
reg(0x00D4) D4 D4 F4 F4 Novatek ID
reg(0x00DA) DA DA RDID1
reg(0x00DB) DB DB RDID2
reg(0x00DC) DC DC RDID3
reg(0x00E0) E0 E0 E0 E0 E0 E0 E0 E0 E0 E0 E0 E0 E0 E0 E0 E0 GAMMA-P
reg(0x00E1) E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 GAMMA-N
reg(0x00EF) EF EF EF EF EF EF ILI9327
reg(0x00F2) F2 F2 F2 F2 F2 F2 F2 F2 F2 F2 F2 F2 Adjust Control 2
reg(0x00F6) F6 F6 F6 F6 Interface Control

after running graphicstest_kbv

its prints on serial monitor
ID = 0xD3D3

could you please help
Thanks

Go on. The LCD_ID_readreg program shows you the wiring.

Connect all the signals to the correct Arduino pin e.g. 2-9, A0-A4 on a 3.3V Arduino.

The Raydium RM68130 will give you an ID in reg(0x0000) i.e. 0x6813

From extras/mcufriend_how_to.txt:

RM68130  176x220  ID=0x6813 #define SUPPORT_9225

So you need to specifically "enable" SUPPORT_9225.
And then all the MCUFRIEND_kbv examples should work out of the box. (assuming that you wired 2-9, A0-A4, GND, 3.3V)

I am utterly gobsmacked that someone buys a 3.3V display and then attempts to connect it to a 5V MEGA2560. Ok, the displays are cheap. But it is still a waste of money if you deliberately destroy the controller by connecting to high voltages.

Hey-ho. I have never seen a RM68130. The datasheet implies that it is almost identical to the Ilitek ILI9225 (which I do own).
Yes, the ILI9225 works just fine on a 3.3V Zero, Due, STM32, ESP32, Teensy3.2
It also works on my Seeeduino switched to 3.3V GPIO.
My Open-Smart ILI9225 3.3V display looks exactly like your pcb. The Touch Panel works too.

David.

Thanks David for your quick response, but Still I dont find any lunch,

here what I am getting when running test. but still white screen, I also did the changes you suggested.

Serial took 0ms to start
ID = 0x6813

and when running with new test

Diagnose whether this controller is supported
There are FAQs in extras/mcufriend_how_to.txt

tft.readID() finds: ID = 0x6813

MCUFRIEND_kbv version: 2.9.9

PORTRAIT is 176 x 220

Data PINS connected like below
// D0 connects to digital pin 8
// D1 connects to digital pin 9
// D2 connects to digital pin 2
// D3 connects to digital pin 3
// D4 connects to digital pin 4
// D5 connects to digital pin 5
// D6 connects to digital pin 6
// D7 connects to digital pin 7

while

#define LCD_CS A3 // Chip Select goes to Analog 3
#define LCD_CD A2 // Command/Data goes to Analog 2
#define LCD_WR A1 // LCD Write goes to Analog 1
#define LCD_RD A0 // LCD Read goes to Analog 0

#define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin

What I am missing, Any though?

Thanks

You have done everything correctly. I don't have a RM68130 board. I only have ILI9225.

I have only done a cursory check of RM68130 datasheet and it appears to be "similar" to ILI9225.

Since you own the hardware, I can only rely on your feedback.

The real mystery is whether you have connected thirteen level shifter channels.
This would be a lot of hard work. More effort than I am prepared for.

Of course, a proper 3.3V Arduino is no problem. I simply soldered a header onto a Protoshield to receive the display. And soldered wires to the appropriate Arduino pins.
I can move the Protoshield "Adapter" from one target to another.

Yes, I could solder 13 level shifters on the Protoshield to enable me to use a MEGA2560.

If you have really made the effort to provide 3.3V logic, the display should work.
If you had previously connected to 5V the controller is probably already damaged.

David.

unfortunately, I have ordered 3 displays :slight_smile: and 2 of them are untouched, I also thought that I might have damaged the current one, so checked another by making sure that I am supplying it 3.3V and result was the same.

I am thinking to change the Arduino Mega to Arduino UNO or NodeMCU. It might work.

btw will it work on NodeMCU?

Go on. You have made NO attempt to provide 3.3V logic.

Yes, Seeed make a Uno clone called Seeeduino with switchable 3.3V/5V GPIO.
Open-Smart make a Uno clone with switchable 3.3V/5V GPIO.

A regular Uno has only got 5V GPIO.
A NodeMCU does not have enough pins.

I give up. I would expect people to be able to count GPIO pins.
Ok, you might not understand Ohms Law or what 3.3V or 5V means.

It is quite possible that the RM68130 power registers are substantially different to the ILI9225 power registers.
But I am not going to waste MY time with an owner that refuses to use 3.3V logic.

Perhaps there is a reader with RM68130 and a Zero or Due. Or even a 3.3V 8MHz Pro-Mini

David.

:slight_smile: I do understand the difference between 3.3V and 5V. and I use 3.3V with the board. Its having the same issue mentioned on
https://forum.arduino.cc/index.php?topic=504944.0

by Daniel1976

Anyways. Thanks Alot for your time, I will try to use it with UNO or Seeeduino with 3.3V logic and then update you if it works.

Thanks again for your timely and quick response.

Please write your understanding of "3.3V GPIO" in your own language.
Then put it through Google Translate or equivalent.

Then do the same for "level shifter"

Another term is "input voltage tolerant"

It must be very difficult for non-English speakers.
Some of these terms are commonly used in Forums but not formal technical words.

As an English speaker I can Google for "level shifter" and probably get an excellent Wikipedia article.
I can also put "level shifter" into Ebay. And get pictures of integrated circuits or modules.

David.

Hello friend,
I have bought the same tft that you have and I have used a bidirectional conversion of logic levels. I am using UTFT library that includes a driver for RM68130 and a driver for ILI9225. I have got some problems with them. The screen works but only a half of it. When using the ILI driver only works a half of the screen and when using RM driver works the other half. It looks like as if the library doesn’t recognize the correct address of the graphic memory or the proper size or something like that. I send you pics for both drivers with UTFT. I cannot find information about RM68130.

Post a schematic of your wiring. Either bidirectional chips or 10k series resistors should be fine.
A photo of wiring is good. A photo of hand drawn schematic is good. Or describe wiring in English.

Install MCUFRIEND_kbv via the IDE Library Manager.
Connect all the signals via level shifters (A0-A4, D8-D9, D2-D7 i.e. same as a MCUFRIEND shield)

Edit MCUFRIEND_kbv.cpp to #define SUPPORT_9225

Both your RM68130 and your ILI9225 boards should be recognised. All the MCUFRIEND_kbv examples should work. I don't owm RM68130 so I would appreciate your feedback.

I have just installed UTFT v2.8.3 from http://www.rinkydinkelectronics.com
There is no mention of ILI9225 or RM68130

I suggest that you try MCUFRIEND_kbv before you try the hacked UTFT.
When MCUFRIEND_kbv is working, I will help you with UTFT.

David.

Hi again,
i have connect all pins as a MCUFRIEND_kbv and i have uncomment the line:
#define SUPPORT_9225

is that all i have to do or i must modify something more in the code?.

All i have got is a white screen. I have tried with the other drivers and the result is the same.

I have used the sketch to read the register and this is i have got:

Read Registers on MCUFRIEND UNO shield
controllers either read as single 16-bit
e.g. the ID is at readReg(0)
or as a sequence of 8-bit values
in special locations (first is dummy)

reg(0x0000) 68 13 ID: ILI9320, ILI9325, ILI9335, ...
reg(0x0004) 00 00 00 00 Manufacturer ID
reg(0x0009) 00 00 00 00 00 Status Register
reg(0x000A) 00 00 Get Power Mode
reg(0x000C) 00 00 Get Pixel Format
reg(0x0061) 00 00 RDID1 HX8347-G
reg(0x0062) 00 10 RDID2 HX8347-G
reg(0x0063) 00 00 RDID3 HX8347-G
reg(0x0064) 00 00 RDID1 HX8347-A
reg(0x0065) 00 00 RDID2 HX8347-A
reg(0x0066) 00 00 RDID3 HX8347-A
reg(0x0067) 00 01 RDID Himax HX8347-A
reg(0x0070) 00 00 Panel Himax HX8347-A
reg(0x00A1) 00 00 00 00 00 RD_DDB SSD1963
reg(0x00B0) 00 00 RGB Interface Signal Control
reg(0x00B4) 00 DB Inversion Control
reg(0x00B6) 00 AF 00 AF 00 Display Control
reg(0x00B7) 00 00 Entry Mode Set
reg(0x00BF) 00 00 00 00 00 00 ILI9481, HX8357-B
reg(0x00C0) 00 00 00 00 00 00 00 00 00 Panel Control
reg(0x00C8) 00 00 00 00 00 00 00 00 00 00 00 00 00 GAMMA
reg(0x00CC) 00 00 Panel Control
reg(0x00D0) 00 01 00 Power Control
reg(0x00D2) 0C 04 0C 04 0C NVM Read
reg(0x00D3) 08 04 08 04 ILI9341, ILI9488
reg(0x00D4) 04 0C 04 0C Novatek ID
reg(0x00DA) 00 00 RDID1
reg(0x00DB) 00 00 RDID2
reg(0x00DC) 00 00 RDID3
reg(0x00E0) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 GAMMA-P
reg(0x00E1) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 GAMMA-N
reg(0x00EF) 00 00 00 00 00 00 ILI9327
reg(0x00F2) 00 00 00 00 00 00 00 00 00 00 00 00 Adjust Control 2
reg(0x00F6) 00 00 00 00 Interface Control

RM68130 and ILI9225 are not exactly the same, so that when i used UTFT with ILI9225 code in my RM68130 TFT, one half of the screen worked, but when i used UTFT with RM68130 code in my TFT RM68130 the other half of the screen worked. So must be a light difference between them and they are not completely compatible.

I know that RM68130 needs bigger delays when it is been initialized than ILI9225, although the addressing is quite similar, watching the code in the hacked UTFT.

1 Like

My apologies. The RM68130 has similar User registers to ILI9225.

Some RM68130 Manufacturer registers are different.
ST7775 Manufacturer registers are almost the same as RM68130 Manufacturer.

I will create a "test_6813" Branch on GitHub.
If anyone owns a Sitronix ST7775 display, please try it too.

David.

1 Like

I have put "test_6813" Branch on GitHub

Hi, after hours looking for specs for RM68130 I have found the information about registers and commands. I have programmed a new library for it in C, and I have found that the DB7 pin of my lcd can read but cannot write.

For example, I write 0xDB on register 0x38 and then I read it and get 0x5B. Great! Doesn’t work.
So that, when I try to set the windows address and an address for a pixel it fails. I think that it is broke. Or maybe some strange interference with the touchscreen cos one of the pins to read it is DB7.
So, I will buy another, but this time an ILI9225. It’s similar but some commands are different I think. Perhaps I’ll buy another Rm68130 cos I am stubborn...

reg(0x0038) is VEA. It only has 8 bits i.e for VEA7-VEA0. So unused bits will always read as zero. 219 is an illegal value. 0 .. 175 are legal values. 219 is a legal value. So it should be ok.

I have datasheets for ILI9225, ILI9225B, RM68130, ST7775.

I have a 2.0 and a 2.2 inch ILI9225. If you don't want to try my test_6813 Branch on GitHub, I could mail you an ILI9225 display. You could mail the RM68130 to me.

PM me with your postal address and whether you want 2.0 or 2.2. Simple for UK. Works fine for EU.

David.

I know that my RM68130 is broken because the DB7 line can be read but cannot be written. I thought on send it back or ... but if you want it and try to fix it I can send it to you. Let me know your address to send it.

Your photo in #8 shows that the screen is not dead.
Your readreg in #10 shows that DB7 pin is working for read.

It is unlikely that DB7 would work for read but not write.
Obviously it has to go through your bidirectional level shifter. You could swap with a spare level shifter channel.

The Touch Panel is in DB7. This might give a problem for Read but it should make no difference for Write.

I would run the diagnose_TFT_controller sketch. Copy-paste from the Serial Terminal.

I have never attempted thirteen level shifter channels. It seems too much like hard work.
Life is much easier with 3.3V Arduinos e.g. Zero, Due, Teensy3.x, ...

I have sent you a PM.

David.

I have to say that you are completely right. My 8 channel level shifter works ok because I tried it with a source and a multimeter pin on pin, even DB7.
I think I just know what is happening.
I have done my own level shifter with a mosfet 2n7000 and 2 resistors 10K on the source and the drain, you know. Then, the pin DB7 I connected to my own level shifter and woaallaaa! Haha
I got that sometimes DB7 works for writing too. Sometimes.
Watch in the pic that the line that should be continuous sometimes is draw is the correct pixel and sometimes in the bad pixel. So, sometimes works!
My shield is touchpad too, and Db6 and DB7 is used too for reading the touch. I think that there is something that is randomly reducing the voltage when I send 3.3v to DB7, possibly and interaction by the touchscreen.
On conclusion, I will try not to use a touchscreen when I have to use level shifters. It is probable that this very lcd without the touchscreen would have worked well enough.

So, the LCD is right if you use it with micro controllers with 3.3 v logic. That’s all.

I have bought another LCD without touchscreen with ILI9225 and I’ll tell you when I used it. So, don’t send me one, thanks a lot.

But I will send you mine because I am intrigued with the matter. I am sure it will work well with 3.3v logic. And maybe I will look for an Arduino working on 3.3v.

I’ll send you the C program that I did. In it you will find the correct configuration for this LCD. At the beginning you will find the defs of the pins, so you can change them easily. Compile it and the LCD should draw a continuous vertical line bicolor from the middle to the end of the screen.

I am minor gobsmacked. You seem to have a 8-channel bidirectional module.
And some home-grown circuitry on the control lines.

Quite honestly, you could just put the screen on the right hand side of the mini breadboard.
Place 13 10k resistors across the mini breadboard.

Connect each signal to the Uno (via the 10k series resistor)
Connect GND, 3.3V directly to the Uno.

The TouchScreen will not like series resistors. You would need to remove the 4-way ribbon.

I am not sure how the bidirectional chips will work with the Touchscreen.
You need proper bidirectional like 74LVC245

Life is much simpler with a 3.3V Arduino.

David.

Hi. Yes. I am going to buy one 3.3 v and try the lcd again with it. Then, I’ll tell you about the result. If I can’t make it work I’ll send it to you. If I can make it work I’ll try MCUFriend library. Stay in contact.