Display_Lib_RPI 2.6.0
A C++ Library to connect electronic displays to Linux single board computers.
Loading...
Searching...
No Matches
GC9107_TFT_LCD_RDL.hpp
Go to the documentation of this file.
1
8#pragma once
9
10// Section Libraries
12
15{
16
17public:
18 GC9107_TFT();
19 ~GC9107_TFT() {};
20
39
44 {
45 static constexpr uint8_t MY = 0x80;
46 static constexpr uint8_t MX = 0x40;
47 static constexpr uint8_t MV = 0x20;
48 static constexpr uint8_t ML = 0x10;
49 static constexpr uint8_t RGB = 0x00;
50 static constexpr uint8_t BGR = 0x08;
51 };
52
54 enum class GM_memory_base_e : uint8_t
55 {
58 };
59
60 virtual void setAddrWindow(uint16_t, uint16_t, uint16_t, uint16_t) override;
61
62 // Setup related
63 void TFTSetupGPIO(int8_t, int8_t, int8_t, int8_t, int8_t); // SW SPI
64 void TFTSetupGPIO(int8_t, int8_t); // HW SPI
65 void TFTInitScreen(uint16_t w = 128, uint16_t h = 160,
67 uint8_t colorOrder = MADCTL_FLAGS_t::RGB);
68 void TFTsetPanelOffset(uint8_t colOffset, uint8_t rowOffset);
69 rdlib::Return_Codes_e TFTInitSPI(uint16_t CommDelay, int gpioDev); // SW SPI
70 rdlib::Return_Codes_e TFTInitSPI(int device, int channel, int speed, int flags, int gpioDev); // HW SPI
72 uint16_t HighFreqDelayGet(void);
73 void HighFreqDelaySet(uint16_t);
75
77 void TFTchangeInvertMode(bool m);
79 void TFTenableDisplay(bool m);
80 void TFTsetScrollArea(uint16_t topFixed, uint16_t scrollArea, uint16_t bottomFixed);
81 void TFTsetScrollStart(uint16_t vsp);
82 void TFTScrollModeLeave(void);
83
84private:
85 void TFTGammaSet(void);
88 void TFTSetupResetPin(int8_t rst);
90 void TFTcmdInitSequence(void);
91
92private:
93 // Display
99 bool _displayOn = false;
100 const uint16_t _sleepDelay = 120;
101 // SPI related
102 int _spiDev = 0;
103 int _spiChan = 0;
104 int _spiBaud = 50000;
105 int _spiFlags = 0;
106 bool _resetPinOn = true;
107 // Screen Size
108 uint16_t _widthStartTFT = 128;
109 uint16_t _heightStartTFT = 160;
110 uint16_t _RAM_WIDTH = 128;
111 uint16_t _RAM_HEIGHT = 160;
112 uint8_t _colOffset = 0;
113 uint8_t _rowOffset = 0;
114 uint8_t _xstart = 0;
115 uint8_t _ystart = 0;
117 // GC9107 registers + Commands
118 static constexpr uint8_t GC9107_SLPIN = 0x10;
119 static constexpr uint8_t GC9107_SLPOUT = 0x11;
120 static constexpr uint8_t GC9107_PTLON = 0x12;
121 static constexpr uint8_t GC9107_NORON = 0x13;
122 static constexpr uint8_t GC9107_INVOFF = 0x20;
123 static constexpr uint8_t GC9107_INVON = 0x21;
124 static constexpr uint8_t GC9107_DISPOFF = 0x28;
125 static constexpr uint8_t GC9107_DISPON = 0x29;
126 static constexpr uint8_t GC9107_CASET = 0x2A;
127 static constexpr uint8_t GC9107_RASET = 0x2B;
128 static constexpr uint8_t GC9107_RAMWR = 0x2C;
129 static constexpr uint8_t GC9107_PTLAR = 0x30;
130 static constexpr uint8_t GC9107_VSCRDEF = 0x33;
131 static constexpr uint8_t GC9107_TEOFF = 0x34;
132 static constexpr uint8_t GC9107_TEON = 0x35;
133 static constexpr uint8_t GC9107_MADCTL = 0x36;
134 static constexpr uint8_t GC9107_VSCRSADD = 0x37;
135 static constexpr uint8_t GC9107_IDLEOFF = 0x38;
136 static constexpr uint8_t GC9107_IDLEON = 0x39;
137 static constexpr uint8_t GC9107_COLMOD = 0x3A;
138 static constexpr uint8_t GC9107_TEARSET = 0x44;
139 static constexpr uint8_t GC9107_GETLINE = 0x45;
140 static constexpr uint8_t GC9107_FRAME_RATE_SET = 0xA8;
141 static constexpr uint8_t GC9107_RGB_COMP_PRIN = 0xAC;
142 static constexpr uint8_t GC9107_BLANK_PORCH_CTRL = 0xAD;
143 static constexpr uint8_t GC9107_INVERSION = 0xCB;
144 static constexpr uint8_t GC9107_AVDD_VCL_SET = 0xE2;
145 static constexpr uint8_t GC9107_AVDD_VCL_CLK = 0xE3;
146 static constexpr uint8_t GC9107_VGH_VGL_CLK = 0xEA;
147 static constexpr uint8_t GC9107_VREG_CTL = 0xE7;
148 static constexpr uint8_t GC9107_VGH_SET = 0xE8;
149 static constexpr uint8_t GC9107_VGL_SET = 0xE9;
150 static constexpr uint8_t GC9107_INREGEN2 = 0xEF;
151 static constexpr uint8_t GC9107_GAMMA1 = 0xF0;
152 static constexpr uint8_t GC9107_GAMMA2 = 0xF1;
153 static constexpr uint8_t GC9107_INREGEN1 = 0xFE;
154}; // end of class
155
156// === EOF ===
Class to control GC9107 TFT basic functionality.
Definition GC9107_TFT_LCD_RDL.hpp:15
rdlib::Return_Codes_e TFTPowerDown(void)
Call when powering down TFT.
Definition GC9107_TFT_LCD_RDL.cpp:62
static constexpr uint8_t GC9107_AVDD_VCL_CLK
Definition GC9107_TFT_LCD_RDL.hpp:145
static constexpr uint8_t GC9107_VGH_VGL_CLK
Definition GC9107_TFT_LCD_RDL.hpp:146
static constexpr uint8_t GC9107_VGL_SET
Definition GC9107_TFT_LCD_RDL.hpp:149
uint8_t _colOffset
Definition GC9107_TFT_LCD_RDL.hpp:112
rdlib::Return_Codes_e TFTGC9107Initialize(void)
init routine for GC9107 controller
Definition GC9107_TFT_LCD_RDL.cpp:268
uint16_t _RAM_HEIGHT
Definition GC9107_TFT_LCD_RDL.hpp:111
uint8_t _xstart
Definition GC9107_TFT_LCD_RDL.hpp:114
int _spiDev
Definition GC9107_TFT_LCD_RDL.hpp:102
void TFTsetPanelOffset(uint8_t colOffset, uint8_t rowOffset)
Set the panel RAM offsets for displays where the visible area is smaller than the VRAM....
Definition GC9107_TFT_LCD_RDL.cpp:709
void TFTsetRotation(display_rotate_e r)
: change rotation of display.
Definition GC9107_TFT_LCD_RDL.cpp:318
int _spiFlags
Definition GC9107_TFT_LCD_RDL.hpp:105
static constexpr uint8_t GC9107_INREGEN1
Definition GC9107_TFT_LCD_RDL.hpp:153
static constexpr uint8_t GC9107_IDLEOFF
Definition GC9107_TFT_LCD_RDL.hpp:135
bool _resetPinOn
Definition GC9107_TFT_LCD_RDL.hpp:106
static constexpr uint8_t GC9107_DISPOFF
Definition GC9107_TFT_LCD_RDL.hpp:124
void TFTsetScrollArea(uint16_t topFixed, uint16_t scrollArea, uint16_t bottomFixed)
This method defines the Vertical Scrolling Area of the display where:
Definition GC9107_TFT_LCD_RDL.cpp:451
GC9107_TFT()
Constructor for class GC9107_TFT.
Definition GC9107_TFT_LCD_RDL.cpp:13
static constexpr uint8_t GC9107_VSCRDEF
Definition GC9107_TFT_LCD_RDL.hpp:130
static constexpr uint8_t GC9107_DISPON
Definition GC9107_TFT_LCD_RDL.hpp:125
static constexpr uint8_t GC9107_PTLON
Definition GC9107_TFT_LCD_RDL.hpp:120
virtual void setAddrWindow(uint16_t, uint16_t, uint16_t, uint16_t) override
SPI displays set an address window rectangle for blitting pixels.
Definition GC9107_TFT_LCD_RDL.cpp:413
static constexpr uint8_t GC9107_TEARSET
Definition GC9107_TFT_LCD_RDL.hpp:138
void TFTGammaSet(void)
Helper function for TFTinitSequence() Sends out the Gamma Sequence.
Definition GC9107_TFT_LCD_RDL.cpp:660
void TFTcmdInitSequence(void)
GC9107 combined init sequence for 128x128 and 128x160 memory base variants.
Definition GC9107_TFT_LCD_RDL.cpp:561
int _spiChan
Definition GC9107_TFT_LCD_RDL.hpp:103
PowerState_e
GC9107 power states based on the power control flow chart. These states combine the modes: Normal/Par...
Definition GC9107_TFT_LCD_RDL.hpp:29
static constexpr uint8_t GC9107_INVOFF
Definition GC9107_TFT_LCD_RDL.hpp:122
void HighFreqDelaySet(uint16_t)
Freq delay used in SW SPI setter, uS delay used in SW SPI method.
Definition GC9107_TFT_LCD_RDL.cpp:404
void TFTSetupResetPin(int8_t rst)
sets up TFT GPIO reset pin
Definition GC9107_TFT_LCD_RDL.cpp:691
static constexpr uint8_t GC9107_COLMOD
Definition GC9107_TFT_LCD_RDL.hpp:137
void TFTSetupGPIO(int8_t, int8_t, int8_t, int8_t, int8_t)
sets up TFT GPIO for software SPI
Definition GC9107_TFT_LCD_RDL.cpp:236
static constexpr uint8_t GC9107_VREG_CTL
Definition GC9107_TFT_LCD_RDL.hpp:147
void TFTsetScrollStart(uint16_t vsp)
This method is used together with the setScrollDefinition.
Definition GC9107_TFT_LCD_RDL.cpp:466
void TFTenableDisplay(bool m)
enable /disable display mode
Definition GC9107_TFT_LCD_RDL.cpp:483
uint8_t _colorOrder
Definition GC9107_TFT_LCD_RDL.hpp:98
static constexpr uint8_t GC9107_MADCTL
Definition GC9107_TFT_LCD_RDL.hpp:133
GM_memory_base_e
Display data GRAM memory base mapping resolution options.
Definition GC9107_TFT_LCD_RDL.hpp:55
static constexpr uint8_t GC9107_RAMWR
Definition GC9107_TFT_LCD_RDL.hpp:128
static constexpr uint8_t GC9107_GAMMA1
Definition GC9107_TFT_LCD_RDL.hpp:151
static constexpr uint8_t GC9107_SLPIN
Definition GC9107_TFT_LCD_RDL.hpp:118
static constexpr uint8_t GC9107_FRAME_RATE_SET
Definition GC9107_TFT_LCD_RDL.hpp:140
void TFTInitScreen(uint16_t w=128, uint16_t h=160, GM_memory_base_e memoryBase=GM_memory_base_e::MEMORY_BASE_GM_128x160, uint8_t colorOrder=MADCTL_FLAGS_t::RGB)
initialise the variables that define the size of the screen
Definition GC9107_TFT_LCD_RDL.cpp:360
rdlib::Return_Codes_e TFTClock_Data_ChipSelect_Pins(void)
: Method for Clock, data and chip select pin setup routine for software SPI.
Definition GC9107_TFT_LCD_RDL.cpp:194
rdlib::Return_Codes_e TFTInitSPI(uint16_t CommDelay, int gpioDev)
intialise PCBtype and SPI, Software SPI
Definition GC9107_TFT_LCD_RDL.cpp:46
static constexpr uint8_t GC9107_AVDD_VCL_SET
Definition GC9107_TFT_LCD_RDL.hpp:144
static constexpr uint8_t GC9107_TEON
Definition GC9107_TFT_LCD_RDL.hpp:132
static constexpr uint8_t GC9107_NORON
Definition GC9107_TFT_LCD_RDL.hpp:121
rdlib::Return_Codes_e TFTResetPin(void)
Method for Hardware Reset pin control.
Definition GC9107_TFT_LCD_RDL.cpp:148
void TFTsetPowerMode(PowerState_e m)
Set the power mode of the display.
Definition GC9107_TFT_LCD_RDL.cpp:500
PowerState_e _currentPowerState
Definition GC9107_TFT_LCD_RDL.hpp:95
void TFTScrollModeLeave(void)
Scroll Mode can be left ,by the Normal Display Mode ON cmd.
Definition GC9107_TFT_LCD_RDL.cpp:473
static constexpr uint8_t GC9107_RASET
Definition GC9107_TFT_LCD_RDL.hpp:127
static constexpr uint8_t GC9107_VSCRSADD
Definition GC9107_TFT_LCD_RDL.hpp:134
uint16_t _RAM_WIDTH
Definition GC9107_TFT_LCD_RDL.hpp:110
static constexpr uint8_t GC9107_SLPOUT
Definition GC9107_TFT_LCD_RDL.hpp:119
uint16_t _widthStartTFT
Definition GC9107_TFT_LCD_RDL.hpp:108
static constexpr uint8_t GC9107_TEOFF
Definition GC9107_TFT_LCD_RDL.hpp:131
static constexpr uint8_t GC9107_CASET
Definition GC9107_TFT_LCD_RDL.hpp:126
static constexpr uint8_t GC9107_VGH_SET
Definition GC9107_TFT_LCD_RDL.hpp:148
static constexpr uint8_t GC9107_INVON
Definition GC9107_TFT_LCD_RDL.hpp:123
uint16_t _heightStartTFT
Definition GC9107_TFT_LCD_RDL.hpp:109
static constexpr uint8_t GC9107_GAMMA2
Definition GC9107_TFT_LCD_RDL.hpp:152
bool _displayOn
Definition GC9107_TFT_LCD_RDL.hpp:99
uint16_t HighFreqDelayGet(void)
Freq delay used in SW SPI getter, uS delay used in SW SPI method.
Definition GC9107_TFT_LCD_RDL.cpp:398
static constexpr uint8_t GC9107_PTLAR
Definition GC9107_TFT_LCD_RDL.hpp:129
const uint16_t _sleepDelay
Definition GC9107_TFT_LCD_RDL.hpp:100
int _spiBaud
Definition GC9107_TFT_LCD_RDL.hpp:104
static constexpr uint8_t GC9107_INVERSION
Definition GC9107_TFT_LCD_RDL.hpp:143
uint8_t _ystart
Definition GC9107_TFT_LCD_RDL.hpp:115
uint8_t _rowOffset
Definition GC9107_TFT_LCD_RDL.hpp:113
static constexpr uint8_t GC9107_RGB_COMP_PRIN
Definition GC9107_TFT_LCD_RDL.hpp:141
static constexpr uint8_t GC9107_IDLEON
Definition GC9107_TFT_LCD_RDL.hpp:136
rdlib::Return_Codes_e TFTDataCommandPin(void)
: Method for Data or Command pin setup
Definition GC9107_TFT_LCD_RDL.cpp:174
static constexpr uint8_t GC9107_INREGEN2
Definition GC9107_TFT_LCD_RDL.hpp:150
static constexpr uint8_t GC9107_BLANK_PORCH_CTRL
Definition GC9107_TFT_LCD_RDL.hpp:142
static constexpr uint8_t GC9107_GETLINE
Definition GC9107_TFT_LCD_RDL.hpp:139
void TFTchangeInvertMode(bool m)
Toggle the invert mode, inverted colours.
Definition GC9107_TFT_LCD_RDL.cpp:302
Class to handle fonts and graphics of color 16 bit display.
Definition color16_graphics_RDL.hpp:23
display_rotate_e
Definition color16_graphics_RDL.hpp:73
Library header file for 16 bit (565) color graphics library. This file handles the graphic methods.
Return_Codes_e
Definition common_data_RDL.hpp:22
MADCTL bit flags for register MADCTL (0x36).
Definition GC9107_TFT_LCD_RDL.hpp:44
static constexpr uint8_t ML
Definition GC9107_TFT_LCD_RDL.hpp:48
static constexpr uint8_t MX
Definition GC9107_TFT_LCD_RDL.hpp:46
static constexpr uint8_t MV
Definition GC9107_TFT_LCD_RDL.hpp:47
static constexpr uint8_t RGB
Definition GC9107_TFT_LCD_RDL.hpp:49
static constexpr uint8_t MY
Definition GC9107_TFT_LCD_RDL.hpp:45
static constexpr uint8_t BGR
Definition GC9107_TFT_LCD_RDL.hpp:50