Display_Lib_RPI 2.4.2
A C++ Library to connect electronic displays to Linux single board computers.
Loading...
Searching...
No Matches
ILI9341_TFT_LCD_RDL.hpp
Go to the documentation of this file.
1
8#pragma once
9
10#include <lgpio.h>
12
17{
18public:
20 ~ILI9341_TFT(){};
21
38
39 //Functions
40 virtual void setAddrWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h) override;
41
42 //Init Setup related
43 void SetupGPIO(int8_t RST, int8_t DC, int8_t CS, int8_t SCLK, int8_t MOSI, int8_t MISO = -1); //SW SPI
44 void SetupGPIO(int8_t RST, int8_t DC); // HW SPI
45 void InitScreenSize(uint16_t w, uint16_t h);
46 rdlib::Return_Codes_e InitSPI(uint16_t CommDelay, int gpioDev); // SW SPI
47 rdlib::Return_Codes_e InitSPI(int device, int channel, int speed, int flags, int gpioDev); // HW SPI
48
49 // SPI related
50 uint16_t HighFreqDelayGet(void);
51 void HighFreqDelaySet(uint16_t);
53 void EnableDisplay(bool enableDisplay);
54
55 // screen related
56 void setRotation(display_rotate_e rotation);
57 void invertDisplay(bool i);
58 void scrollTo(uint16_t y);
59 void setScrollMargins(uint16_t top, uint16_t bottom);
60 void NormalMode(void);
62 uint8_t readDiagByte(ILI9341_ReadRegister_e cmd, uint8_t indexs);
63
64protected:
65
66private:
67
72 void TFTSetupResetPin(int8_t rst);
73 void TFTSetupMISOPin(int8_t miso);
74 void cmdInit(void);
75
76 // SPI
77 bool _resetPinOn = true;
78 bool _MISOPinOn = false;
79 int _spiDev = 0;
80 int _spiChan = 0;
81 int _spiBaud = 50000;
82 int _spiFlags = 0;
84 // Screen
85 uint16_t _widthStartTFT = 240;
86 uint16_t _heightStartTFT = 320;
88 // Registers & command Set
89 static constexpr uint8_t ILI9341_NOP = 0x00;
90 static constexpr uint8_t ILI9341_SWRESET = 0x01;
91 static constexpr uint8_t ILI9341_RDDID = 0x04;
92 static constexpr uint8_t ILI9341_RDDST = 0x09;
94 static constexpr uint8_t ILI9341_SLPIN = 0x10;
95 static constexpr uint8_t ILI9341_SLPOUT = 0x11;
96 static constexpr uint8_t ILI9341_PTLON = 0x12;
97 static constexpr uint8_t ILI9341_NORON = 0x13;
99 static constexpr uint8_t ILI9341_INVOFF = 0x20;
100 static constexpr uint8_t ILI9341_INVON = 0x21;
101 static constexpr uint8_t ILI9341_GAMMASET = 0x26;
102 static constexpr uint8_t ILI9341_DISPOFF = 0x28;
103 static constexpr uint8_t ILI9341_DISPON = 0x29;
105 static constexpr uint8_t ILI9341_CASET = 0x2A;
106 static constexpr uint8_t ILI9341_PASET = 0x2B;
107 static constexpr uint8_t ILI9341_RAMWR = 0x2C;
108 static constexpr uint8_t ILI9341_RAMRD = 0x2E;
110 static constexpr uint8_t ILI9341_PTLAR = 0x30;
111 static constexpr uint8_t ILI9341_VSCRDEF = 0x33;
112 static constexpr uint8_t ILI9341_MADCTL = 0x36;
113 static constexpr uint8_t ILI9341_VSCRSADD = 0x37;
114 static constexpr uint8_t ILI9341_PIXFMT = 0x3A;
116 static constexpr uint8_t ILI9341_FRMCTR1 = 0xB1;
117 static constexpr uint8_t ILI9341_FRMCTR2 = 0xB2;
118 static constexpr uint8_t ILI9341_FRMCTR3 = 0xB3;
119 static constexpr uint8_t ILI9341_INVCTR = 0xB4;
120 static constexpr uint8_t ILI9341_DFUNCTR = 0xB6;
122 static constexpr uint8_t ILI9341_PWCTR1 = 0xC0;
123 static constexpr uint8_t ILI9341_PWCTR2 = 0xC1;
124 static constexpr uint8_t ILI9341_PWCTR3 = 0xC2;
125 static constexpr uint8_t ILI9341_PWCTR4 = 0xC3;
126 static constexpr uint8_t ILI9341_PWCTR5 = 0xC4;
128 static constexpr uint8_t ILI9341_VMCTR1 = 0xC5;
129 static constexpr uint8_t ILI9341_VMCTR2 = 0xC7;
131 static constexpr uint8_t ILI9341_RDID1 = 0xDA;
132 static constexpr uint8_t ILI9341_RDID2 = 0xDB;
133 static constexpr uint8_t ILI9341_RDID3 = 0xDC;
134 static constexpr uint8_t ILI9341_RDID4 = 0xDD;
136 static constexpr uint8_t ILI9341_EN3GAM = 0xF2;
137 static constexpr uint8_t ILI9341_GMCTRP1 = 0xE0;
138 static constexpr uint8_t ILI9341_GMCTRN1 = 0xE1;
140 static constexpr uint8_t ILI9341_PWONCS = 0xED;
141 static constexpr uint8_t ILI9341_PWCTRA = 0xCB;
142 static constexpr uint8_t ILI9341_PWCTRB = 0xCF;
143 static constexpr uint8_t ILI9341_DTMCTRA = 0xE8;
144 static constexpr uint8_t ILI9341_DTMCTRC = 0xEA;
145 static constexpr uint8_t ILI9341_PURTCTR = 0xF7;
147 static constexpr uint8_t MADCTL_MY = 0x80;
148 static constexpr uint8_t MADCTL_MX = 0x40;
149 static constexpr uint8_t MADCTL_MV = 0x20;
150 static constexpr uint8_t MADCTL_ML = 0x10;
151 static constexpr uint8_t MADCTL_RGB = 0x00;
152 static constexpr uint8_t MADCTL_BGR = 0x08;
153 static constexpr uint8_t MADCTL_MH = 0x04;
154};
155
Class to interface with ILI9341 LCD display.
Definition ILI9341_TFT_LCD_RDL.hpp:17
static constexpr uint8_t MADCTL_MY
Definition ILI9341_TFT_LCD_RDL.hpp:147
virtual void setAddrWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h) override
Set the address window - the rectangle we will write to RAM with the next chunk of SPI data writes....
Definition ILI9341_TFT_LCD_RDL.cpp:450
static constexpr uint8_t MADCTL_BGR
Definition ILI9341_TFT_LCD_RDL.hpp:152
static constexpr uint8_t ILI9341_PWCTRB
Definition ILI9341_TFT_LCD_RDL.hpp:142
void NormalMode(void)
To Return Display to normal mode.
Definition ILI9341_TFT_LCD_RDL.cpp:416
void EnableDisplay(bool enableDisplay)
enable /disable display mode
Definition ILI9341_TFT_LCD_RDL.cpp:389
static constexpr uint8_t ILI9341_RDID2
Definition ILI9341_TFT_LCD_RDL.hpp:132
uint16_t HighFreqDelayGet(void)
Freq delay used in SW SPI getter, uS delay used in SW SPI method.
Definition ILI9341_TFT_LCD_RDL.cpp:174
void setScrollMargins(uint16_t top, uint16_t bottom)
Set the height of the Top and Bottom Scroll Margins.
Definition ILI9341_TFT_LCD_RDL.cpp:424
static constexpr uint8_t ILI9341_MADCTL
Definition ILI9341_TFT_LCD_RDL.hpp:112
static constexpr uint8_t ILI9341_GMCTRN1
Definition ILI9341_TFT_LCD_RDL.hpp:138
static constexpr uint8_t ILI9341_SWRESET
Definition ILI9341_TFT_LCD_RDL.hpp:90
static constexpr uint8_t ILI9341_RDDID
Definition ILI9341_TFT_LCD_RDL.hpp:91
static constexpr uint8_t ILI9341_RDID1
Definition ILI9341_TFT_LCD_RDL.hpp:131
void invertDisplay(bool i)
Enable/Disable display color inversion.
Definition ILI9341_TFT_LCD_RDL.cpp:377
static constexpr uint8_t ILI9341_GAMMASET
Definition ILI9341_TFT_LCD_RDL.hpp:101
static constexpr uint8_t ILI9341_DFUNCTR
Definition ILI9341_TFT_LCD_RDL.hpp:120
static constexpr uint8_t ILI9341_DISPOFF
Definition ILI9341_TFT_LCD_RDL.hpp:102
static constexpr uint8_t ILI9341_FRMCTR2
Definition ILI9341_TFT_LCD_RDL.hpp:117
static constexpr uint8_t ILI9341_PWCTR1
Definition ILI9341_TFT_LCD_RDL.hpp:122
static constexpr uint8_t ILI9341_PTLON
Definition ILI9341_TFT_LCD_RDL.hpp:96
void InitScreenSize(uint16_t w, uint16_t h)
initialise the variables that define the size of the screen
Definition ILI9341_TFT_LCD_RDL.cpp:84
void TFTSetupMISOPin(int8_t miso)
sets up TFT GPIO MISO pin
Definition ILI9341_TFT_LCD_RDL.cpp:68
void scrollTo(uint16_t y)
Scroll display memory.
Definition ILI9341_TFT_LCD_RDL.cpp:406
static constexpr uint8_t MADCTL_RGB
Definition ILI9341_TFT_LCD_RDL.hpp:151
void setRotation(display_rotate_e rotation)
Set origin of (0,0) and orientation of TFT display.
Definition ILI9341_TFT_LCD_RDL.cpp:344
static constexpr uint8_t MADCTL_ML
Definition ILI9341_TFT_LCD_RDL.hpp:150
static constexpr uint8_t ILI9341_DTMCTRA
Definition ILI9341_TFT_LCD_RDL.hpp:143
uint16_t _heightStartTFT
Definition ILI9341_TFT_LCD_RDL.hpp:86
static constexpr uint8_t ILI9341_PURTCTR
Definition ILI9341_TFT_LCD_RDL.hpp:145
int _spiChan
Definition ILI9341_TFT_LCD_RDL.hpp:80
static constexpr uint8_t MADCTL_MH
Definition ILI9341_TFT_LCD_RDL.hpp:153
rdlib::Return_Codes_e TFTMISOPin(void)
Method for Hardware MISO pin control set up as input if used.
Definition ILI9341_TFT_LCD_RDL.cpp:507
bool _MISOPinOn
Definition ILI9341_TFT_LCD_RDL.hpp:78
rdlib::Return_Codes_e TFTClock_Data_ChipSelect_Pins(void)
: Method for Clock, data and chip select pin setup routine for software SPI.
Definition ILI9341_TFT_LCD_RDL.cpp:549
static constexpr uint8_t ILI9341_RDID3
Definition ILI9341_TFT_LCD_RDL.hpp:133
static constexpr uint8_t ILI9341_FRMCTR1
Definition ILI9341_TFT_LCD_RDL.hpp:116
static constexpr uint8_t ILI9341_PASET
Definition ILI9341_TFT_LCD_RDL.hpp:106
static constexpr uint8_t ILI9341_INVCTR
Definition ILI9341_TFT_LCD_RDL.hpp:119
void SetupGPIO(int8_t RST, int8_t DC, int8_t CS, int8_t SCLK, int8_t MOSI, int8_t MISO=-1)
sets up TFT GPIO for software SPI
Definition ILI9341_TFT_LCD_RDL.cpp:36
static constexpr uint8_t ILI9341_RDDST
Definition ILI9341_TFT_LCD_RDL.hpp:92
static constexpr uint8_t ILI9341_PWCTR3
Definition ILI9341_TFT_LCD_RDL.hpp:124
static constexpr uint8_t ILI9341_VMCTR1
Definition ILI9341_TFT_LCD_RDL.hpp:128
rdlib::Return_Codes_e ILI9341Initialize(void)
init routine for ILI9341_TFTcontroller
Definition ILI9341_TFT_LCD_RDL.cpp:136
static constexpr uint8_t ILI9341_PWCTR5
Definition ILI9341_TFT_LCD_RDL.hpp:126
static constexpr uint8_t MADCTL_MX
Definition ILI9341_TFT_LCD_RDL.hpp:148
void TFTSetupResetPin(int8_t rst)
sets up TFT GPIO reset pin
Definition ILI9341_TFT_LCD_RDL.cpp:52
bool _resetPinOn
Definition ILI9341_TFT_LCD_RDL.hpp:77
ILI9341_ReadRegister_e
Register addresses for ILI9341 diagnostic read commands. These constants can be used with readDiagByt...
Definition ILI9341_TFT_LCD_RDL.hpp:28
@ ILI9341_RDIMGFMT
Definition ILI9341_TFT_LCD_RDL.hpp:34
@ ILI9341_RDSELFDIAG
Definition ILI9341_TFT_LCD_RDL.hpp:36
@ ILI9341_RDMODE
Definition ILI9341_TFT_LCD_RDL.hpp:31
@ ILI9341_RDSIGNAL
Definition ILI9341_TFT_LCD_RDL.hpp:35
@ ILI9341_RDID
Definition ILI9341_TFT_LCD_RDL.hpp:29
@ ILI9341_RDPIXFMT
Definition ILI9341_TFT_LCD_RDL.hpp:33
@ ILI9341_RDMADCTL
Definition ILI9341_TFT_LCD_RDL.hpp:32
@ ILI9341_RDSTATUS
Definition ILI9341_TFT_LCD_RDL.hpp:30
uint16_t _widthStartTFT
Definition ILI9341_TFT_LCD_RDL.hpp:85
void HighFreqDelaySet(uint16_t)
Freq delay used in SW SPI setter, uS delay used in SW SPI method.
Definition ILI9341_TFT_LCD_RDL.cpp:180
static constexpr uint8_t ILI9341_PTLAR
Definition ILI9341_TFT_LCD_RDL.hpp:110
static constexpr uint8_t ILI9341_DTMCTRC
Definition ILI9341_TFT_LCD_RDL.hpp:144
void cmdInit(void)
Command Initialization sequence for ILI9341 LCD TFT display.
Definition ILI9341_TFT_LCD_RDL.cpp:275
rdlib::Return_Codes_e PowerDown(void)
Call when powering down TFT.
Definition ILI9341_TFT_LCD_RDL.cpp:191
static constexpr uint8_t ILI9341_PWCTR4
Definition ILI9341_TFT_LCD_RDL.hpp:125
static constexpr uint8_t ILI9341_SLPIN
Definition ILI9341_TFT_LCD_RDL.hpp:94
static constexpr uint8_t ILI9341_CASET
Definition ILI9341_TFT_LCD_RDL.hpp:105
rdlib::Return_Codes_e TFTResetPin(void)
: Method for Hardware Reset pin control
Definition ILI9341_TFT_LCD_RDL.cpp:475
rdlib::Return_Codes_e InitSPI(uint16_t CommDelay, int gpioDev)
intialise PCBtype and SPI, Software SPI
Definition ILI9341_TFT_LCD_RDL.cpp:121
static constexpr uint8_t ILI9341_RDID4
Definition ILI9341_TFT_LCD_RDL.hpp:134
int _spiFlags
Definition ILI9341_TFT_LCD_RDL.hpp:82
static constexpr uint8_t ILI9341_VMCTR2
Definition ILI9341_TFT_LCD_RDL.hpp:129
static constexpr uint8_t ILI9341_RAMRD
Definition ILI9341_TFT_LCD_RDL.hpp:108
static constexpr uint8_t ILI9341_SLPOUT
Definition ILI9341_TFT_LCD_RDL.hpp:95
rdlib::Return_Codes_e TFTDataCommandPin(void)
: Method for Data or Command pin setup
Definition ILI9341_TFT_LCD_RDL.cpp:529
static constexpr uint8_t ILI9341_NORON
Definition ILI9341_TFT_LCD_RDL.hpp:97
static constexpr uint8_t ILI9341_INVOFF
Definition ILI9341_TFT_LCD_RDL.hpp:99
static constexpr uint8_t ILI9341_PWCTRA
Definition ILI9341_TFT_LCD_RDL.hpp:141
static constexpr uint8_t ILI9341_EN3GAM
Definition ILI9341_TFT_LCD_RDL.hpp:136
int _spiBaud
Definition ILI9341_TFT_LCD_RDL.hpp:81
static constexpr uint8_t ILI9341_GMCTRP1
Definition ILI9341_TFT_LCD_RDL.hpp:137
static constexpr uint8_t MADCTL_MV
Definition ILI9341_TFT_LCD_RDL.hpp:149
static constexpr uint8_t ILI9341_PWCTR2
Definition ILI9341_TFT_LCD_RDL.hpp:123
static constexpr uint8_t ILI9341_DISPON
Definition ILI9341_TFT_LCD_RDL.hpp:103
static constexpr uint8_t ILI9341_INVON
Definition ILI9341_TFT_LCD_RDL.hpp:100
static constexpr uint8_t ILI9341_VSCRSADD
Definition ILI9341_TFT_LCD_RDL.hpp:113
int _spiDev
Definition ILI9341_TFT_LCD_RDL.hpp:79
static constexpr uint8_t ILI9341_PWONCS
Definition ILI9341_TFT_LCD_RDL.hpp:140
static constexpr uint8_t ILI9341_RAMWR
Definition ILI9341_TFT_LCD_RDL.hpp:107
ILI9341_TFT()
Constructor for class ILI9341_TFT.
Definition ILI9341_TFT_LCD_RDL.cpp:11
static constexpr uint8_t ILI9341_NOP
Definition ILI9341_TFT_LCD_RDL.hpp:89
static constexpr uint8_t ILI9341_FRMCTR3
Definition ILI9341_TFT_LCD_RDL.hpp:118
uint8_t readDiagByte(ILI9341_ReadRegister_e cmd, uint8_t indexs)
Read a single diagnostic byte from the ILI9341 controller. This function sends a diagnostic read comm...
Definition ILI9341_TFT_LCD_RDL.cpp:595
static constexpr uint8_t ILI9341_VSCRDEF
Definition ILI9341_TFT_LCD_RDL.hpp:111
static constexpr uint8_t ILI9341_PIXFMT
Definition ILI9341_TFT_LCD_RDL.hpp:114
Class to handle fonts and graphics of color 16 bit display.
Definition color16_graphics_RDL.hpp:28
display_rotate_e
Definition color16_graphics_RDL.hpp:68
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