Display_Lib_RPI 2.7.0
A C++ Library to connect electronic displays to Linux single board computers.
Loading...
Searching...
No Matches
ST7735_TFT_LCD_RDL.hpp
Go to the documentation of this file.
1
7#pragma once
8
9// Section Libraries
10#include <cstdint>
11#include <cstdbool>
12#include <cstring>
13#include <lgpio.h>
15
16
21{
22
23public:
24
25 ST7735_TFT();
26 ~ST7735_TFT(){};
27
28 // Enums
29
42
43
53
58 // Functions
59 // From graphics virtual
60 virtual void setAddrWindow(uint16_t, uint16_t, uint16_t, uint16_t) override;
61 //Setup related
62 void TFTSetupGPIO(int8_t, int8_t, int8_t, int8_t, int8_t); //SW SPI
63 void TFTSetupGPIO(int8_t, int8_t); // HW SPI
67
68 // SPI related
73 // Screen related
79
80private:
89
90 void Rcmd1(void);
91 void Rcmd2red(void);
92 void Rcmd3(void);
93 void Bcmd(void);
94 void Rcmd2green(void);
95 void Scmd(void);
96
97 //screen
103 //SPI
104 int _spiDev = 0;
105 int _spiChan = 0;
106 int _spiBaud = 50000;
107 int _spiFlags = 0;
109 // ST7735 registers + Commands
110 // ST7735 general purpose
111 static constexpr uint8_t ST7735_NOP = 0x00 ;
112 static constexpr uint8_t ST7735_SWRESET= 0x01 ;
113 static constexpr uint8_t ST7735_RDDID = 0x04 ;
114 static constexpr uint8_t ST7735_RDDST = 0x09 ;
116 // ST7735 Modes
117 static constexpr uint8_t ST7735_SLPIN = 0x10 ;
118 static constexpr uint8_t ST7735_SLPOUT = 0x11 ;
119 static constexpr uint8_t ST7735_PTLON = 0x12 ;
120 static constexpr uint8_t ST7735_NORON = 0x13 ;
121 static constexpr uint8_t ST7735_INVOFF = 0x20 ;
122 static constexpr uint8_t ST7735_INVON = 0x21 ;
123 static constexpr uint8_t ST7735_DISPOFF= 0x28 ;
124 static constexpr uint8_t ST7735_DISPON = 0x29 ;
125 static constexpr uint8_t ST7735_TFT_Idle_modeON= 0x39 ;
126 static constexpr uint8_t ST7735_TFT_Idle_modeOF = 0x38 ;
128 // ST7735 Addressing
129 static constexpr uint8_t ST7735_CASET = 0x2A ;
130 static constexpr uint8_t ST7735_RASET = 0x2B ;
131 static constexpr uint8_t ST7735_RAMWR = 0x2C ;
132 static constexpr uint8_t ST7735_RAMRD = 0x2E ;
133 static constexpr uint8_t ST7735_PTLAR = 0x30 ;
134 static constexpr uint8_t ST7735_VSCRDEF= 0x33 ;
135 static constexpr uint8_t ST7735_COLMOD = 0x3A ;
136 static constexpr uint8_t ST7735_MADCTL = 0x36 ;
137 static constexpr uint8_t ST7735_VSCRSADD= 0x37 ;
139 // Frame Rate Control
140 static constexpr uint8_t ST7735_FRMCTR1= 0xB1 ;
141 static constexpr uint8_t ST7735_FRMCTR2= 0xB2 ;
142 static constexpr uint8_t ST7735_FRMCTR3= 0xB3 ;
144 static constexpr uint8_t ST7735_INVCTR = 0xB4 ;
145 static constexpr uint8_t ST7735_DISSET5= 0xB6 ;
147 // ST7735 Power_Control
148 static constexpr uint8_t ST7735_PWCTR1 = 0xC0 ;
149 static constexpr uint8_t ST7735_PWCTR2 = 0xC1 ;
150 static constexpr uint8_t ST7735_PWCTR3 = 0xC2 ;
151 static constexpr uint8_t ST7735_PWCTR4 = 0xC3 ;
152 static constexpr uint8_t ST7735_PWCTR5 = 0xC4 ;
153 static constexpr uint8_t ST7735_PWCTR6 = 0xFC ;
155 static constexpr uint8_t ST7735_VMCTR1 = 0xC5 ;
157 static constexpr uint8_t ST7735_RDID1 = 0xDA ;
158 static constexpr uint8_t ST7735_RDID2 = 0xDB ;
159 static constexpr uint8_t ST7735_RDID3 = 0xDC ;
160 static constexpr uint8_t ST7735_RDID4 = 0xDD ;
162 // ST7735 color control
163 static constexpr uint8_t ST7735_GMCTRP1= 0xE0 ;
164 static constexpr uint8_t ST7735_GMCTRN1= 0xE1 ;
166 // Memory Access Data Control Register
167 static constexpr uint8_t ST7735_MADCTL_MY= 0x80 ;
168 static constexpr uint8_t ST7735_MADCTL_MX= 0x40 ;
169 static constexpr uint8_t ST7735_MADCTL_MV= 0x20 ;
170 static constexpr uint8_t ST7735_MADCTL_ML= 0x10 ;
171 static constexpr uint8_t ST7735_MADCTL_RGB= 0x00 ;
172 static constexpr uint8_t ST7735_MADCTL_BGR= 0x08 ;
173 static constexpr uint8_t ST7735_MADCTL_MH= 0x04 ;
175}; //end of ST7735_TFT class
176
177// ********************** EOF *********************
static constexpr int defaultFormat()
Called from vector & string template , Get the default format for a given type.
Definition print_data_RDL.hpp:206
Class to control ST7735 TFT basic functionality.
Definition ST7735_TFT_LCD_RDL.hpp:21
rdlib::Return_Codes_e TFTDataCommandPin(void)
Method for Data or Command pin setup.
Definition ST7735_TFT_LCD_RDL.cpp:199
static constexpr uint8_t ST7735_CASET
Definition ST7735_TFT_LCD_RDL.hpp:129
TFT_modes_e
Definition ST7735_TFT_LCD_RDL.hpp:32
@ TFT_Sleep_mode
Definition ST7735_TFT_LCD_RDL.hpp:36
@ TFT_Partial_mode
Definition ST7735_TFT_LCD_RDL.hpp:34
@ TFT_Invert_mode
Definition ST7735_TFT_LCD_RDL.hpp:38
@ TFT_Display_off_mode
Definition ST7735_TFT_LCD_RDL.hpp:40
@ TFT_Display_on_mode
Definition ST7735_TFT_LCD_RDL.hpp:39
@ TFT_Normal_mode
Definition ST7735_TFT_LCD_RDL.hpp:33
@ TFT_Idle_mode
Definition ST7735_TFT_LCD_RDL.hpp:35
void Bcmd(void)
init sub-routine for ST7735B controller
Definition ST7735_TFT_LCD_RDL.cpp:354
void TFTchangeInvertMode(bool invertModeOn)
Toggle the invert mode.
Definition ST7735_TFT_LCD_RDL.cpp:598
void Rcmd1(void)
init sub-routine
Definition ST7735_TFT_LCD_RDL.cpp:413
void Rcmd2green(void)
init sub-routine ST7735R Green Tab
Definition ST7735_TFT_LCD_RDL.cpp:342
void TFTsetRotation(display_rotate_e r)
: change rotation of display.
Definition ST7735_TFT_LCD_RDL.cpp:676
virtual void setAddrWindow(uint16_t, uint16_t, uint16_t, uint16_t) override
SPI displays set an address window rectangle for blitting pixels.
Definition ST7735_TFT_LCD_RDL.cpp:842
uint16_t _heightStartTFT
Definition ST7735_TFT_LCD_RDL.hpp:101
static constexpr uint8_t ST7735_RDDST
Definition ST7735_TFT_LCD_RDL.hpp:114
static constexpr uint8_t ST7735_INVOFF
Definition ST7735_TFT_LCD_RDL.hpp:121
static constexpr uint8_t ST7735_PWCTR3
Definition ST7735_TFT_LCD_RDL.hpp:150
TFT_PCBtype_e
Definition ST7735_TFT_LCD_RDL.hpp:46
@ TFT_ST7735R_Green
Definition ST7735_TFT_LCD_RDL.hpp:48
@ TFT_ST7735S_80160
Definition ST7735_TFT_LCD_RDL.hpp:51
@ TFT_ST7735R_Red
Definition ST7735_TFT_LCD_RDL.hpp:47
@ TFT_ST7735S_Black
Definition ST7735_TFT_LCD_RDL.hpp:49
@ TFT_ST7735B
Definition ST7735_TFT_LCD_RDL.hpp:50
static constexpr uint8_t ST7735_RASET
Definition ST7735_TFT_LCD_RDL.hpp:130
static constexpr uint8_t ST7735_SLPIN
Definition ST7735_TFT_LCD_RDL.hpp:117
static constexpr uint8_t ST7735_NOP
Definition ST7735_TFT_LCD_RDL.hpp:111
rdlib::Return_Codes_e TFTRedTabInitialize(void)
ST7735R Red Tab Init Red PCB version.
Definition ST7735_TFT_LCD_RDL.cpp:275
static constexpr uint8_t ST7735_VSCRSADD
Definition ST7735_TFT_LCD_RDL.hpp:137
static constexpr uint8_t ST7735_MADCTL_RGB
Definition ST7735_TFT_LCD_RDL.hpp:171
static constexpr uint8_t ST7735_FRMCTR3
Definition ST7735_TFT_LCD_RDL.hpp:142
static constexpr uint8_t ST7735_PTLON
Definition ST7735_TFT_LCD_RDL.hpp:119
static constexpr uint8_t ST7735_PWCTR6
Definition ST7735_TFT_LCD_RDL.hpp:153
rdlib::Return_Codes_e TFTBlackTabInitialize(void)
Init Routine ST7735R Black Tab (ST7735S)
Definition ST7735_TFT_LCD_RDL.cpp:292
static constexpr uint8_t ST7735_RDID4
Definition ST7735_TFT_LCD_RDL.hpp:160
static constexpr uint8_t ST7735_DISSET5
Definition ST7735_TFT_LCD_RDL.hpp:145
static constexpr uint8_t ST7735_MADCTL_MV
Definition ST7735_TFT_LCD_RDL.hpp:169
static constexpr uint8_t ST7735_COLMOD
Definition ST7735_TFT_LCD_RDL.hpp:135
int _spiDev
Definition ST7735_TFT_LCD_RDL.hpp:104
static constexpr uint8_t ST7735_SLPOUT
Definition ST7735_TFT_LCD_RDL.hpp:118
static constexpr uint8_t ST7735_TFT_Idle_modeOF
Definition ST7735_TFT_LCD_RDL.hpp:126
void TFTInitScreenSize(uint8_t xOffset, uint8_t yOffset, uint16_t w, uint16_t h)
initialise the variables that define the size of the screen
Definition ST7735_TFT_LCD_RDL.cpp:740
static constexpr uint8_t ST7735_VMCTR1
Definition ST7735_TFT_LCD_RDL.hpp:155
int _spiChan
Definition ST7735_TFT_LCD_RDL.hpp:105
uint16_t _widthStartTFT
Definition ST7735_TFT_LCD_RDL.hpp:100
static constexpr uint8_t ST7735_GMCTRN1
Definition ST7735_TFT_LCD_RDL.hpp:164
static constexpr uint8_t ST7735_RDID2
Definition ST7735_TFT_LCD_RDL.hpp:158
static constexpr uint8_t ST7735_SWRESET
Definition ST7735_TFT_LCD_RDL.hpp:112
TFT_PCBtype_e TFT_PCBtype
Definition ST7735_TFT_LCD_RDL.hpp:56
static constexpr uint8_t ST7735_PWCTR5
Definition ST7735_TFT_LCD_RDL.hpp:152
rdlib::Return_Codes_e TFTClock_Data_ChipSelect_Pins(void)
Method for Clock, data and chip select pin setup routine for software SPI.
Definition ST7735_TFT_LCD_RDL.cpp:219
static constexpr uint8_t ST7735_NORON
Definition ST7735_TFT_LCD_RDL.hpp:120
void TFTSetupGPIO(int8_t, int8_t, int8_t, int8_t, int8_t)
sets up TFT GPIO for software SPI
Definition ST7735_TFT_LCD_RDL.cpp:120
void Scmd(void)
Init sub-routine for ST7735S 80x160 (BOE / HSD panel).
Definition ST7735_TFT_LCD_RDL.cpp:488
static constexpr uint8_t ST7735_TFT_Idle_modeON
Definition ST7735_TFT_LCD_RDL.hpp:125
uint8_t _colstart
Definition ST7735_TFT_LCD_RDL.hpp:98
static constexpr uint8_t ST7735_RDID1
Definition ST7735_TFT_LCD_RDL.hpp:157
rdlib::Return_Codes_e TFTST7735S_80160Initialize(void)
Init routine for ST7735S 80x160 display (BOE / HSD panel variant).
Definition ST7735_TFT_LCD_RDL.cpp:330
static constexpr uint8_t ST7735_MADCTL_ML
Definition ST7735_TFT_LCD_RDL.hpp:170
static constexpr uint8_t ST7735_INVCTR
Definition ST7735_TFT_LCD_RDL.hpp:144
static constexpr uint8_t ST7735_PTLAR
Definition ST7735_TFT_LCD_RDL.hpp:133
static constexpr uint8_t ST7735_VSCRDEF
Definition ST7735_TFT_LCD_RDL.hpp:134
TFT_modes_e TFT_mode
Definition ST7735_TFT_LCD_RDL.hpp:54
static constexpr uint8_t ST7735_FRMCTR1
Definition ST7735_TFT_LCD_RDL.hpp:140
static constexpr uint8_t ST7735_DISPON
Definition ST7735_TFT_LCD_RDL.hpp:124
ST7735_TFT()
Constructor for class ST7735_TFT.
Definition ST7735_TFT_LCD_RDL.cpp:12
static constexpr uint8_t ST7735_MADCTL_MY
Definition ST7735_TFT_LCD_RDL.hpp:167
static constexpr uint8_t ST7735_PWCTR4
Definition ST7735_TFT_LCD_RDL.hpp:151
static constexpr uint8_t ST7735_FRMCTR2
Definition ST7735_TFT_LCD_RDL.hpp:141
int _spiBaud
Definition ST7735_TFT_LCD_RDL.hpp:106
static constexpr uint8_t ST7735_RDDID
Definition ST7735_TFT_LCD_RDL.hpp:113
void TFTVerticalScroll(uint8_t vsp)
: This method is used together with the TFTsetScrollDefinition.
Definition ST7735_TFT_LCD_RDL.cpp:588
void Rcmd2red(void)
init sub-routine
Definition ST7735_TFT_LCD_RDL.cpp:456
rdlib::Return_Codes_e TFTInitPCBType(TFT_PCBtype_e pcbType, uint16_t CommDelay, int gpioDev)
intialise PCBtype and SPI, Software SPI
Definition ST7735_TFT_LCD_RDL.cpp:801
static constexpr uint8_t ST7735_DISPOFF
Definition ST7735_TFT_LCD_RDL.hpp:123
void TFTchangeMode(TFT_modes_e m)
This changes the mode of the display as:
Definition ST7735_TFT_LCD_RDL.cpp:617
static constexpr uint8_t ST7735_PWCTR1
Definition ST7735_TFT_LCD_RDL.hpp:148
int _spiFlags
Definition ST7735_TFT_LCD_RDL.hpp:107
static constexpr uint8_t ST7735_PWCTR2
Definition ST7735_TFT_LCD_RDL.hpp:149
static constexpr uint8_t ST7735_INVON
Definition ST7735_TFT_LCD_RDL.hpp:122
rdlib::Return_Codes_e TFTResetPin(void)
Method for Hardware Reset pin control.
Definition ST7735_TFT_LCD_RDL.cpp:174
void Rcmd3(void)
init sub-routine
Definition ST7735_TFT_LCD_RDL.cpp:468
rdlib::Return_Codes_e TFTGreenTabInitialize(void)
init sub-routine ST7735R Green Tab
Definition ST7735_TFT_LCD_RDL.cpp:257
uint16_t HighFreqDelayGet(void)
Freq delay used in SW SPI getter, uS delay used in SW SPI method.
Definition ST7735_TFT_LCD_RDL.cpp:826
static constexpr uint8_t ST7735_MADCTL_BGR
Definition ST7735_TFT_LCD_RDL.hpp:172
display_rotate_e displayRotate
Definition ST7735_TFT_LCD_RDL.hpp:55
static constexpr uint8_t ST7735_MADCTL_MX
Definition ST7735_TFT_LCD_RDL.hpp:168
void TFTsetScrollDefinition(uint8_t th, uint8_t tb, bool sd)
This method defines the Vertical Scrolling Area of the display where:
Definition ST7735_TFT_LCD_RDL.cpp:551
uint8_t _rowstart
Definition ST7735_TFT_LCD_RDL.hpp:99
static constexpr uint8_t ST7735_RAMWR
Definition ST7735_TFT_LCD_RDL.hpp:131
static constexpr uint8_t ST7735_MADCTL
Definition ST7735_TFT_LCD_RDL.hpp:136
rdlib::Return_Codes_e TFTST7735BInitialize(void)
init routine for ST7735B controller
Definition ST7735_TFT_LCD_RDL.cpp:312
rdlib::Return_Codes_e TFTPowerDown(void)
Call when powering down TFT.
Definition ST7735_TFT_LCD_RDL.cpp:23
static constexpr uint8_t ST7735_MADCTL_MH
Definition ST7735_TFT_LCD_RDL.hpp:173
static constexpr uint8_t ST7735_RDID3
Definition ST7735_TFT_LCD_RDL.hpp:159
static constexpr uint8_t ST7735_GMCTRP1
Definition ST7735_TFT_LCD_RDL.hpp:163
static constexpr uint8_t ST7735_RAMRD
Definition ST7735_TFT_LCD_RDL.hpp:132
rdlib::Return_Codes_e TFTSPIInit(void)
init the SPI
Definition ST7735_TFT_LCD_RDL.cpp:138
void HighFreqDelaySet(uint16_t)
Freq delay used in SW SPI setter, uS delay used in SW SPI method.
Definition ST7735_TFT_LCD_RDL.cpp:832
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
@ Degrees_0
Definition color16_graphics_RDL.hpp:74
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