Simple demo for the Raio RA8875 Based Display with a 4-wire SPI interface.

Dependencies:   mbed RA8875

RA8875 Based Display Controller

This page shows a simple demo program for a graphics library supporting a low cost display from buydisplay.com. While the module can be configured for support via I2C, 3-Wire SPI, 4-Wire SPI, 8-bit Parallel or 16-bit Parallel, the companion library only supports the 4-Wire SPI.

You can also find this display on the Components | RA8875 page.

Library

RA8875 Library

Display Pictures

While this image is sharp, the camera/lighting washed out the colors somewhat. /media/uploads/WiredHome/ra8875display.640x380.png

With careful study of the image below, you can see a number of solder-blob jumpers. These jumpers are described quite well in the manual, and configure the many different options. The specific unit shown here is the "entry point" model, it does not have touchscreen, SD card, extra Font memory, or the key pad interface. As you see in the top left, it is wired with an 8-signal ribbon cable (but note in the schematic that it only needs 6 as the two power and two ground are internally connected together in the module).

/media/uploads/WiredHome/ra8875displaymodulerr.jpg

Also note, that some configuration changes go beyond the jumpers. I decided to switch my configuration to 4-Wire SPI and had to remove R1, R2, and R3 (which were zero-ohm that shorted the SPI input pins to +v!). I also changed some of the solder-blob jumpers, but that was easy. Had I ordered the display with the support for 4-Wire SPI, that would not have been necessary.

Schematic

The library should be able to work with any SPI port, and the Chip Select pin is a simple DigitalOut pin, chosen from the unused pins on my baseboard.

/media/uploads/WiredHome/ra8875_display_schematic.png

Sample Program

#include "mbed.h"
#include "RA8875.h"

Serial pc(USBTX, USBRX);

int main()
{
    pc.baud(460800);    // I like a snappy terminal, so crank it up!
    pc.printf("\r\nRA8875 Test - Build " __DATE__ " " __TIME__ "\r\n");

    RA8875 lcd(p5, p6, p7, p12, NC, "tft");    // MOSI, MISO, SCK, /ChipSelect, /reset, name

    lcd.puts(0,0,
        "RA8875 lcd(p5, p6, p7, p12, NC, \"tft\");\r\n\r\n"
        "lcd.circle(       400,25,  25,  BrightRed);\r\n"
        "lcd.fillcircle(   400,25,  15,  RGB(128,255,128));\r\n"
        "lcd.ellipse(      440,75,  35,20, BrightBlue);\r\n"
        "lcd.fillellipse(  440,75,  25,10, Blue);\r\n"
        "lcd.triangle(     440,100, 475,110, 450,125, Magenta);\r\n"
        "lcd.filltriangle( 445,105, 467,111, 452,120, Cyan);\r\n"
        "lcd.rect(         400,130, 475,155,    Brown);\r\n"
        "lcd.fillrect(     405,135, 470,150,    Pink);\r\n"
        "lcd.roundrect(    410,160, 475,190, 10,8, Yellow);\r\n"
        "lcd.fillroundrect(415,165, 470,185,  5,3, Orange);\r\n"
        "lcd.line(         430,200, 460,230, RGB(0,255,0));\r\n"
        "for (i=0; i<=30; i+=5)\r\n"
        "    lcd.pixel(435+i,200+i, White);");

    lcd.circle(       400,25,  25,               BrightRed);
    lcd.fillcircle(   400,25,  15,               RGB(128,255,128));
    lcd.ellipse(      440,75,  35,20,            BrightBlue);
    lcd.fillellipse(  440,75,  25,10,            Blue);
    lcd.triangle(     440,100, 475,110, 450,125, Magenta);
    lcd.filltriangle( 445,105, 467,111, 452,120, Cyan);
    lcd.rect(         400,130, 475,155,          Brown);
    lcd.fillrect(     405,135, 470,150,          Pink);
    lcd.roundrect(    410,160, 475,190, 10,8,    Yellow);
    lcd.fillroundrect(415,165, 470,185,  5,3,    Orange);
    lcd.line(         430,200, 460,230,          RGB(0,255,0));
    for (i=0; i<=30; i+=5) 
        lcd.pixel(435+i,200+i, White);
    while (1)
        ;
}

Changes

RevisionDateWhoCommit message
21:2a5509f9fc76 2020-03-29 WiredHome Pick up a bug-fix on jpeg rendering default tip
20:b7f9a704dda7 2020-03-28 WiredHome Breaking change update to RA8875 Library. Improved APIs, Improved Portrait Mode, Code Cleanup.
19:222ca90808c4 2019-07-28 WiredHome Update demo to latest lib
18:307303d9c8f6 2019-03-04 WiredHome Update RA8875 Lib to add GSL1680 support.
17:c8ef96a6e43b 2017-08-06 WiredHome Update libs. RA8875 v148, mbed v137.; Any newer mbed lib works ok for graphics, fails for file write to local file system for printscreen.
16:231837aa2c37 2017-08-06 WiredHome Updates verified with mbed v128, RA8875 v148
15:ab07c064c952 2016-08-06 WiredHome Update to latest libraries and test with both 480x272 and 800x480 screens.
14:07b3f223d9ba 2016-05-03 WiredHome Updated RA8875 and mbed libraries
13:43cc0a997c53 2016-03-05 WiredHome Updated libs and tested both 8 and 16-bpp.
12:e8a127d78000 2016-01-23 WiredHome update libs
11:2fcc3ee75ebd 2016-01-23 WiredHome update libs
10:be714b7f0644 2016-01-23 WiredHome Updated to v112 of mbed lib.
9:02c622fa4969 2016-01-23 WiredHome Fixed a class and method name error in the print screen registration.
8:f8c71faa94a8 2015-12-19 WiredHome Update based on latest RA8875 library and latest mbed
7:1002bb8871c0 2015-12-19 WiredHome Updated demo based on updated RA8875 library.
6:8e392d0ff74a 2015-12-17 WiredHome Update with test mode disabled.
5:bb970d40cd7d 2015-12-17 WiredHome Demonstration for Soft Font support.
4:5b1e85519d73 2014-12-28 WiredHome Updated to latest mbed library, tested and republished. No changes to the sample code.
3:ca6a1026c28e 2014-12-28 WiredHome Minor updates to match the RA8875 library updates.
2:2076d9cc6db9 2014-01-17 WiredHome Simplify the example, so it shows the program on the screen.
1:29e9a07f768c 2014-01-17 WiredHome Simple demo.
0:037b95a5cc85 2014-01-17 WiredHome Demo Program