Adafruit RA8875: Display no reaction - black screen

Hello,

i am quite desperate and looking for help.
I bought a TFT 20 Pin 24 Bit 480x272 Display ( EA R480X-43ALW ) and a Adafruit RA8875 controller for my Arduino Mega and connected the hardware as described in the official tutorial. Unfortunately after turning everything on and uploading the "buildtest" program of the RA8875 library nothing happened.
I have checked every connection twice and don't find the error. I thought about some compatibility-problems because the RA8875 does only support 16Bit and the Display has 24Bit.... But do you think this is the problem?

Thank you very much for your answer!
Picture 1Picture 2

My Code used:

/******************************************************************
 This is an example for the Adafruit RA8875 Driver board for TFT displays
 ---------------> http://www.adafruit.com/products/1590
 The RA8875 is a TFT driver for up to 800x480 dotclock'd displays
 It is tested to work with displays in the Adafruit shop. Other displays
 may need timing adjustments and are not guanteed to work.

 Adafruit invests time and resources providing this open
 source code, please support Adafruit and open-source hardware
 by purchasing products from Adafruit!

 Written by Limor Fried/Ladyada for Adafruit Industries.
 BSD license, check license.txt for more information.
 All text above must be included in any redistribution.
 ******************************************************************/

#include <SPI.h>
#include "Adafruit_GFX.h"
#include "Adafruit_RA8875.h"


// Library only supports hardware SPI at this time
// Connect SCLK to UNO Digital #13 (Hardware SPI clock)
// Connect MISO to UNO Digital #12 (Hardware SPI MISO)
// Connect MOSI to UNO Digital #11 (Hardware SPI MOSI)
#define RA8875_INT 3
#define RA8875_CS 10
#define RA8875_RESET 9

Adafruit_RA8875 tft = Adafruit_RA8875(RA8875_CS, RA8875_RESET);
uint16_t tx, ty;

void setup()
{
  Serial.begin(9600);
  Serial.println("RA8875 start");

  /* Initialize the display using 'RA8875_480x80', 'RA8875_480x128', 'RA8875_480x272' or 'RA8875_800x480' */
  if (!tft.begin(RA8875_480x272)) {
    Serial.println("RA8875 Not Found!");
    while (1);
  }

  Serial.println("Found RA8875");

  tft.displayOn(true);
  tft.GPIOX(true);      // Enable TFT - display enable tied to GPIOX
  tft.PWM1config(true, RA8875_PWM_CLK_DIV1024); // PWM output for backlight
  tft.PWM1out(255);

  // With hardware accelleration this is instant
  tft.fillScreen(RA8875_WHITE);

  // Play with PWM
  for (uint8_t i=255; i!=0; i-=5 )
  {
    tft.PWM1out(i);
    delay(10);
  }
  for (uint8_t i=0; i!=255; i+=5 )
  {
    tft.PWM1out(i);
    delay(10);
  }
  tft.PWM1out(255);

  tft.fillScreen(RA8875_RED);
  delay(500);
  tft.fillScreen(RA8875_YELLOW);
  delay(500);
  tft.fillScreen(RA8875_GREEN);
  delay(500);
  tft.fillScreen(RA8875_CYAN);
  delay(500);
  tft.fillScreen(RA8875_MAGENTA);
  delay(500);
  tft.fillScreen(RA8875_BLACK);

  // Try some GFX acceleration!
  tft.drawCircle(100, 100, 50, RA8875_BLACK);
  tft.fillCircle(100, 100, 49, RA8875_GREEN);

  tft.fillRect(11, 11, 398, 198, RA8875_BLUE);
  tft.drawRect(10, 10, 400, 200, RA8875_GREEN);
  tft.fillRoundRect(200, 10, 200, 100, 10, RA8875_RED);
  tft.drawPixel(10,10,RA8875_BLACK);
  tft.drawPixel(11,11,RA8875_BLACK);
  tft.drawLine(10, 10, 200, 100, RA8875_RED);
  tft.drawTriangle(200, 15, 250, 100, 150, 125, RA8875_BLACK);
  tft.fillTriangle(200, 16, 249, 99, 151, 124, RA8875_YELLOW);
  tft.drawEllipse(300, 100, 100, 40, RA8875_BLACK);
  tft.fillEllipse(300, 100, 98, 38, RA8875_GREEN);
  // Argument 5 (curvePart) is a 2-bit value to control each corner (select 0, 1, 2, or 3)
  tft.drawCurve(50, 100, 80, 40, 2, RA8875_BLACK);
  tft.fillCurve(50, 100, 78, 38, 2, RA8875_WHITE);

  pinMode(RA8875_INT, INPUT);
  digitalWrite(RA8875_INT, HIGH);

  tft.touchEnable(true);

  Serial.print("Status: "); Serial.println(tft.readStatus(), HEX);
  Serial.println("Waiting for touch events ...");
}

void loop()
{
  float xScale = 1024.0F/tft.width();
  float yScale = 1024.0F/tft.height();

  /* Wait around for touch events */
  if (! digitalRead(RA8875_INT))
  {
    if (tft.touched())
    {
      Serial.print("Touch: ");
      tft.touchRead(&tx, &ty);
      Serial.print(tx); Serial.print(", "); Serial.println(ty);
      /* Draw a circle */
      tft.fillCircle((uint16_t)(tx/xScale), (uint16_t)(ty/yScale), 4, RA8875_WHITE);
    }
  }
}

Please post a link to the actual screen that you have bought. e.g. Ebay sale page.
Likewise, post a link to the Adafruit RA8875 controller board that you have bought.

It removes all guesswork when you provide the links. This applies to most questions on the Displays Forum.

David.

Thank you very much for your answer!
Of course I can provide the links:
Display: https://www.mouser.de/ProductDetail/ELECTRONIC-ASSEMBLY/EA-R480X-43ALW?qs=iLbezkQI%252Bsi%2FClyHHYaCsg%3D%3D

Adafruit RA8875:

Thanks :slight_smile:

I can't find a schematic or user manual for the Adafruit board.
Obviously the 40-pin ribbon socket must be compatible with the 40-pin ribbon from the screen.

And the Adafruit board must provide the RGB signals required by your screen. If the board is compatible then you just plug together and run the library examples.
Without schematic or user manual you are not going to get very far.

Life is much simpler when you buy a RA8875 screen with Arduino Adapter Shield e.g. https://www.buydisplay.com/4-3-inch-tft-capacitive-touchscreen-display-arduino-shield-480x272

David.

Yeah thank you.
So you can find the manual for the RA8875 Here: https://www.google.com/url?sa=t&source=web&rct=j&url=https://cdn-shop.adafruit.com/datasheets/RA8875_DS_V12_Eng.pdf&ved=2ahUKEwjt-Mii_PL1AhVZRvEDHdhiCGQQFnoECAwQAQ&usg=AOvVaw283gocKOmCNfh8hkqxrXBN

In my opinions both components should fit well, i have checked the pin descriptions and everything seems to bei all right.
So do you think the 24Bit of the Display ist the problem because the RA8875 does only support 16Bit Displays...? Or is it irrelevant if 24Bit Displays can also be driven by an 16Bit capable controller?

Thank you again for your answer :pray:

I understand RA8875. That is no problem.

The screen ribbon has a datasheet. So that is fine.

But I have no idea what the Adafruit schematic is or what the ribbon socket pinout is. Normally Adafruit is pretty good with documentation.

The SC7283 on the screen expects 24-bit RGB signals.

David.

So what should i do now? Should I search for a driver board with support to 24 Bits?
Or could i get the display working with the RA8875?

Please appologize my bad knowledge about this topic, i am still new here and try to get to know everything better.