Display_Lib_RPI 2.3.0
A C++ Library to connect electronic displays to Linux single board computers.
Loading...
Searching...
No Matches
ST7789_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
20{
21
22public:
23
24 ST7789_TFT();
25 ~ST7789_TFT(){};
26
27 // Enum
28
31 // Functions
32 // From graphics virtual
33 virtual void setAddrWindow(uint16_t, uint16_t, uint16_t, uint16_t) override;
34 //Setup related
35 void TFTSetupGPIO(int8_t, int8_t, int8_t, int8_t, int8_t); //SW SPI
36 void TFTSetupGPIO(int8_t, int8_t); // HW SPI
39 rdlib::Return_Codes_e TFTInitSPI(int device, int channel, int speed, int flags, int gpioDev); // HW SPI
40
41 // SPI related
45 // Screen related
47 void TFTchangeInvertMode(bool m);
48 void TFTpartialDisplay(bool m);
49 void TFTenableDisplay(bool m);
50 void TFTidleDisplay(bool m);
51 void TFTsleepDisplay(bool m);
52 void TFTNormalMode(void);
56
57private:
58
62 void cmd89(void);
63 void AdjustWidthHeight(void);
64
65 // Screen
73 // SPI related
74 int _spiDev = 0;
75 int _spiChan = 0;
76 int _spiBaud = 50000;
77 int _spiFlags = 0;
79 // ST7789 registers + Commands
80
81 // ST7789 general purpose
82 static constexpr uint8_t ST7789_NOP = 0x00;
83 static constexpr uint8_t ST7789_SWRESET = 0x01;
85 // ST7789 Modes
86 static constexpr uint8_t ST7789_SLPIN = 0x10;
87 static constexpr uint8_t ST7789_SLPOUT = 0x11;
88 static constexpr uint8_t ST7789_PTLON = 0x12;
89 static constexpr uint8_t ST7789_NORON = 0x13;
90 static constexpr uint8_t ST7789_INVOFF = 0x20;
91 static constexpr uint8_t ST7789_INVON = 0x21;
92 static constexpr uint8_t ST7789_DISPOFF = 0x28;
93 static constexpr uint8_t ST7789_DISPON = 0x29;
94 static constexpr uint8_t ST7789_IDLE_ON = 0x39;
95 static constexpr uint8_t ST7789_IDLE_OFF = 0x38;
97 // ST7789 Addressing
98 static constexpr uint8_t ST7789_CASET = 0x2A;
99 static constexpr uint8_t ST7789_RASET = 0x2B;
100 static constexpr uint8_t ST7789_RAMWR = 0x2C;
101 static constexpr uint8_t ST7789_RAMRD = 0x2E;
102 static constexpr uint8_t ST7789_PTLAR = 0x30;
103 static constexpr uint8_t ST7789_VSCRDEF = 0x33;
104 static constexpr uint8_t ST7789_SRLBTT = 0x28;
105 static constexpr uint8_t ST7789_SRLTTB = 0x30;
106 static constexpr uint8_t ST7789_COLMOD = 0x3A;
107 static constexpr uint8_t ST7789_MADCTL = 0x36;
108 static constexpr uint8_t ST7789_VSCRSADD = 0x37;
110 // Frame Rate Control
111 static constexpr uint8_t ST7789_FRMCTR1 = 0xB1;
112 static constexpr uint8_t ST7789_FRMCTR2 = 0xB2;
113 static constexpr uint8_t ST7789_FRMCTR3 = 0xB3;
115 static constexpr uint8_t ST7789_INVCTR = 0xB4;
116 static constexpr uint8_t ST7789_DISSET5 = 0xB6;
118 static constexpr uint8_t ST7789_RDID1 = 0xDA;
119 static constexpr uint8_t ST7789_RDID2 = 0xDB;
120 static constexpr uint8_t ST7789_RDID3 = 0xDC;
121 static constexpr uint8_t ST7789_RDID4 = 0xDD;
123 // ST7789 color control
124 static constexpr uint8_t ST7789_GMCTRP1 = 0xE0;
125 static constexpr uint8_t ST7789_GMCTRN1 = 0xE1;
127 // Memory Access Data Control Register
128 static constexpr uint8_t ST7789_MADCTL_MY = 0x80;
129 static constexpr uint8_t ST7789_MADCTL_MX = 0x40;
130 static constexpr uint8_t ST7789_MADCTL_MV = 0x20;
131 static constexpr uint8_t ST7789_MADCTL_ML = 0x10;
132 static constexpr uint8_t ST7789_MADCTL_RGB = 0x00;
133 static constexpr uint8_t ST7789_MADCTL_BGR = 0x08;
134 static constexpr uint8_t ST7789_MADCTL_MH = 0x04;
136}; //end of ST7789_TFT class
137
138// ********************** 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 ST7789 TFT basic functionality.
Definition ST7789_TFT_LCD_RDL.hpp:20
static constexpr uint8_t ST7789_INVOFF
Definition ST7789_TFT_LCD_RDL.hpp:90
rdlib::Return_Codes_e TFTDataCommandPin(void)
: Method for Data or Command pin setup
Definition ST7789_TFT_LCD_RDL.cpp:132
static constexpr uint8_t ST7789_DISPOFF
Definition ST7789_TFT_LCD_RDL.hpp:92
static constexpr uint8_t ST7789_SRLTTB
Definition ST7789_TFT_LCD_RDL.hpp:105
static constexpr uint8_t ST7789_COLMOD
Definition ST7789_TFT_LCD_RDL.hpp:106
uint8_t _colstart2
Definition ST7789_TFT_LCD_RDL.hpp:68
static constexpr uint8_t ST7789_GMCTRN1
Definition ST7789_TFT_LCD_RDL.hpp:125
static constexpr uint8_t ST7789_MADCTL_MY
Definition ST7789_TFT_LCD_RDL.hpp:128
static constexpr uint8_t ST7789_SLPIN
Definition ST7789_TFT_LCD_RDL.hpp:86
uint16_t _heightStartTFT
Definition ST7789_TFT_LCD_RDL.hpp:71
static constexpr uint8_t ST7789_NOP
Definition ST7789_TFT_LCD_RDL.hpp:82
static constexpr uint8_t ST7789_FRMCTR3
Definition ST7789_TFT_LCD_RDL.hpp:113
static constexpr uint8_t ST7789_PTLAR
Definition ST7789_TFT_LCD_RDL.hpp:102
void TFTSetupGPIO(int8_t, int8_t, int8_t, int8_t, int8_t)
sets up TFT GPIO for software SPI
Definition ST7789_TFT_LCD_RDL.cpp:206
int _spiBaud
Definition ST7789_TFT_LCD_RDL.hpp:76
uint16_t _widthStartTFT
Definition ST7789_TFT_LCD_RDL.hpp:70
rdlib::Return_Codes_e TFTST7789Initialize(void)
init routine for ST7789 controller
Definition ST7789_TFT_LCD_RDL.cpp:224
uint8_t _rowstart2
Definition ST7789_TFT_LCD_RDL.hpp:69
static constexpr uint8_t ST7789_FRMCTR2
Definition ST7789_TFT_LCD_RDL.hpp:112
static constexpr uint8_t ST7789_MADCTL_BGR
Definition ST7789_TFT_LCD_RDL.hpp:133
static constexpr uint8_t ST7789_INVON
Definition ST7789_TFT_LCD_RDL.hpp:91
void TFTsetRotation(display_rotate_e r)
: change rotation of display.
Definition ST7789_TFT_LCD_RDL.cpp:362
static constexpr uint8_t ST7789_DISSET5
Definition ST7789_TFT_LCD_RDL.hpp:116
rdlib::Return_Codes_e TFTInitSPI(uint16_t CommDelay, int gpioDev)
intialise PCBtype and SPI, Software SPI
Definition ST7789_TFT_LCD_RDL.cpp:458
static constexpr uint8_t ST7789_RAMWR
Definition ST7789_TFT_LCD_RDL.hpp:100
static constexpr uint8_t ST7789_RDID2
Definition ST7789_TFT_LCD_RDL.hpp:119
static constexpr uint8_t ST7789_CASET
Definition ST7789_TFT_LCD_RDL.hpp:98
static constexpr uint8_t ST7789_GMCTRP1
Definition ST7789_TFT_LCD_RDL.hpp:124
void TFTenableDisplay(bool m)
enable /disable display mode
Definition ST7789_TFT_LCD_RDL.cpp:320
int _spiChan
Definition ST7789_TFT_LCD_RDL.hpp:75
static constexpr uint8_t ST7789_PTLON
Definition ST7789_TFT_LCD_RDL.hpp:88
static constexpr uint8_t ST7789_IDLE_OFF
Definition ST7789_TFT_LCD_RDL.hpp:95
static constexpr uint8_t ST7789_IDLE_ON
Definition ST7789_TFT_LCD_RDL.hpp:94
void AdjustWidthHeight(void)
Initialization width and height code common to all ST7789 displays.
Definition ST7789_TFT_LCD_RDL.cpp:541
static constexpr uint8_t ST7789_MADCTL_MV
Definition ST7789_TFT_LCD_RDL.hpp:130
void TFTVerticalScroll(uint16_t vsp)
: This method is used together with the TFTsetScrollDefinition.
Definition ST7789_TFT_LCD_RDL.cpp:286
static constexpr uint8_t ST7789_NORON
Definition ST7789_TFT_LCD_RDL.hpp:89
static constexpr uint8_t ST7789_FRMCTR1
Definition ST7789_TFT_LCD_RDL.hpp:111
static constexpr uint8_t ST7789_RAMRD
Definition ST7789_TFT_LCD_RDL.hpp:101
display_rotate_e displayRotate
Definition ST7789_TFT_LCD_RDL.hpp:29
static constexpr uint8_t ST7789_RASET
Definition ST7789_TFT_LCD_RDL.hpp:99
static constexpr uint8_t ST7789_RDID3
Definition ST7789_TFT_LCD_RDL.hpp:120
static constexpr uint8_t ST7789_SRLBTT
Definition ST7789_TFT_LCD_RDL.hpp:104
static constexpr uint8_t ST7789_RDID1
Definition ST7789_TFT_LCD_RDL.hpp:118
static constexpr uint8_t ST7789_DISPON
Definition ST7789_TFT_LCD_RDL.hpp:93
int _spiDev
Definition ST7789_TFT_LCD_RDL.hpp:74
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 ST7789_TFT_LCD_RDL.cpp:408
rdlib::Return_Codes_e TFTClock_Data_ChipSelect_Pins(void)
: Method for Clock, data and chip select pin setup routine for software SPI.
Definition ST7789_TFT_LCD_RDL.cpp:152
uint16_t HighFreqDelayGet(void)
Freq delay used in SW SPI getter, uS delay used in SW SPI method.
Definition ST7789_TFT_LCD_RDL.cpp:469
int _spiFlags
Definition ST7789_TFT_LCD_RDL.hpp:77
rdlib::Return_Codes_e TFTPowerDown(void)
Call when powering down TFT.
Definition ST7789_TFT_LCD_RDL.cpp:24
static constexpr uint8_t ST7789_MADCTL_MX
Definition ST7789_TFT_LCD_RDL.hpp:129
static constexpr uint8_t ST7789_MADCTL_MH
Definition ST7789_TFT_LCD_RDL.hpp:134
ST7789_TFT()
Constructor for class ST7789_TFT.
Definition ST7789_TFT_LCD_RDL.cpp:12
static constexpr uint8_t ST7789_SLPOUT
Definition ST7789_TFT_LCD_RDL.hpp:87
void cmd89(void)
Command Initialization sequence for ST7789 display.
Definition ST7789_TFT_LCD_RDL.cpp:507
uint8_t _colstart
Definition ST7789_TFT_LCD_RDL.hpp:66
void TFTNormalMode(void)
return Display to normal mode
Definition ST7789_TFT_LCD_RDL.cpp:447
void TFTchangeInvertMode(bool m)
Toggle the invert mode.
Definition ST7789_TFT_LCD_RDL.cpp:296
static constexpr uint8_t ST7789_INVCTR
Definition ST7789_TFT_LCD_RDL.hpp:115
void HighFreqDelaySet(uint16_t)
Freq delay used in SW SPI setter, uS delay used in SW SPI method.
Definition ST7789_TFT_LCD_RDL.cpp:475
void TFTpartialDisplay(bool m)
Toggle the partial display mode.
Definition ST7789_TFT_LCD_RDL.cpp:308
static constexpr uint8_t ST7789_RDID4
Definition ST7789_TFT_LCD_RDL.hpp:121
static constexpr uint8_t ST7789_VSCRSADD
Definition ST7789_TFT_LCD_RDL.hpp:108
static constexpr uint8_t ST7789_MADCTL_ML
Definition ST7789_TFT_LCD_RDL.hpp:131
static constexpr uint8_t ST7789_VSCRDEF
Definition ST7789_TFT_LCD_RDL.hpp:103
static constexpr uint8_t ST7789_MADCTL
Definition ST7789_TFT_LCD_RDL.hpp:107
void TFTsleepDisplay(bool m)
Toggle the sleep mode.
Definition ST7789_TFT_LCD_RDL.cpp:344
static constexpr uint8_t ST7789_MADCTL_RGB
Definition ST7789_TFT_LCD_RDL.hpp:132
rdlib::Return_Codes_e TFTResetPin(void)
Method for Hardware Reset pin control.
Definition ST7789_TFT_LCD_RDL.cpp:106
virtual void setAddrWindow(uint16_t, uint16_t, uint16_t, uint16_t) override
SPI displays set an address window rectangle for blitting pixels.
Definition ST7789_TFT_LCD_RDL.cpp:485
void TFTsetScrollDefinition(uint16_t th, uint16_t tb, bool sd)
This method defines the Vertical Scrolling Area of the display where:
Definition ST7789_TFT_LCD_RDL.cpp:264
static constexpr uint8_t ST7789_SWRESET
Definition ST7789_TFT_LCD_RDL.hpp:83
void TFTidleDisplay(bool m)
Toggle the idle display mode.
Definition ST7789_TFT_LCD_RDL.cpp:332
uint8_t _rowstart
Definition ST7789_TFT_LCD_RDL.hpp:67
Class to handle fonts and graphics of color 16 bit display.
Definition color16_graphics_RDL.hpp:22
display_rotate_e
Definition color16_graphics_RDL.hpp:62
@ Degrees_0
Definition color16_graphics_RDL.hpp:63
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