The offical µGFX repository.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

105 lines
3.1 KiB

* This file is subject to the terms of the GFX License. If a copy of
* the license was not distributed with this file, you can obtain one at:
* @file boards/addons/gdisp/board_SSD1963_gpio.h
* @brief GDISP Graphic Driver subsystem board interface for the SSD1963 display.
* @note This file contains a mix of hardware specific and operating system specific
* code. You will need to change it for your CPU and/or operating system.
static const LCD_Parameters DisplayTimings[] = {
// You need one of these array elements per display
480, 272, // Panel width and height
2, 2, 41, // Horizontal Timings (back porch, front porch, pulse)
CALC_PERIOD(480,2,2,41), // Total Horizontal Period (calculated from above line)
2, 2, 10, // Vertical Timings (back porch, front porch, pulse)
CALC_PERIOD(272,2,2,10), // Total Vertical Period (calculated from above line)
CALC_FPR(480,272,2,2,41,2,2,10,60ULL) // FPR - the 60ULL is the frames per second. Note the ULL!
// For a multiple display configuration we would put all this in a structure and then
// set g->board to that structure.
* @brief The GPIO pin config
* @details This block of defines tell your driver how you wired your display
* controller to your MCU. Please change them accordingly.
#define GDISP_CS 0
#define GDISP_RS 1
#define GDISP_WR 2
#define GDISP_RD 3
#define Set_CS palSetPad(GDISP_CMD_PORT, GDISP_CS);
#define Clr_CS palClearPad(GDISP_CMD_PORT, GDISP_CS);
#define Set_RS palSetPad(GDISP_CMD_PORT, GDISP_RS);
#define Clr_RS palClearPad(GDISP_CMD_PORT, GDISP_RS);
#define Set_WR palSetPad(GDISP_CMD_PORT, GDISP_WR);
#define Clr_WR palClearPad(GDISP_CMD_PORT, GDISP_WR);
#define Set_RD palSetPad(GDISP_CMD_PORT, GDISP_RD);
#define Clr_RD palClearPad(GDISP_CMD_PORT, GDISP_RD);
static GFXINLINE void init_board(GDisplay *g) {
// As we are not using multiple displays we set g->board to NULL as we don't use it.
g->board = 0;
switch(g->controllerdisplay) {
case 0: // Set up for Display 0
IOBus busCMD = {GDISP_CMD_PORT, (1 << GDISP_CS) | (1 << GDISP_RS) | (1 << GDISP_WR) | (1 << GDISP_RD), 0};
static GFXINLINE void post_init_board(GDisplay *g) {
(void) g;
static GFXINLINE void setpin_reset(GDisplay *g, gBool state) {
(void) g;
(void) state;
static GFXINLINE void acquire_bus(GDisplay *g) {
(void) g;
static GFXINLINE void release_bus(GDisplay *g) {
(void) g;
static GFXINLINE void write_index(GDisplay *g, gU16 index) {
(void) g;
Set_RS; Clr_RD; Set_WR;
palWritePort(GDISP_DATA_PORT, index);
static GFXINLINE void write_data(GDisplay *g, gU16 data) {
(void) g;
Clr_RS; Clr_RD; Set_WR;
palWritePort(GDISP_DATA_PORT, data);
#endif /* _GDISP_LLD_BOARD_H */