Ultibo API
C/C++ API for Ultibo Core
Loading...
Searching...
No Matches
st77xx.h
Go to the documentation of this file.
1/*
2 * This file is part of the Ultibo project, https://ultibo.org/
3 *
4 * The MIT License (MIT)
5 *
6 * Copyright (c) 2026 Garry Wood <garry@softoz.com.au>
7 *
8 * Permission is hereby granted, free of charge, to any person obtaining a copy
9 * of this software and associated documentation files (the "Software"), to deal
10 * in the Software without restriction, including without limitation the rights
11 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12 * copies of the Software, and to permit persons to whom the Software is
13 * furnished to do so, subject to the following conditions:
14 *
15 * The above copyright notice and this permission notice shall be included in
16 * all copies or substantial portions of the Software.
17 *
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24 * THE SOFTWARE.
25 */
26#ifndef _ULTIBO_ST77XX_H
27#define _ULTIBO_ST77XX_H
28
29#ifdef __cplusplus
30extern "C" {
31#endif
32
33#include "ultibo/gpio.h"
34#include "ultibo/spi.h"
35#include "ultibo/framebuffer.h"
36
38#define ST77XX_FRAMEBUFFER_DESCRIPTION "ST77XX TFT LCD DRIVER"
39
41#define ST77XX_SPI_RATE 32000000
42
43#define ST_CMD_DELAY 0x80
44
46#define ST77XX_NOP 0x00
47#define ST77XX_SWRESET 0x01
48#define ST77XX_RDDID 0x04
49#define ST77XX_RDDST 0x09
50
51#define ST77XX_SLPIN 0x10
52#define ST77XX_SLPOUT 0x11
53#define ST77XX_PTLON 0x12
54#define ST77XX_NORON 0x13
55
56#define ST77XX_INVOFF 0x20
57#define ST77XX_INVON 0x21
58#define ST77XX_GAMSET 0x26
59#define ST77XX_DISPOFF 0x28
60#define ST77XX_DISPON 0x29
61#define ST77XX_CASET 0x2A
62#define ST77XX_RASET 0x2B
63#define ST77XX_RAMWR 0x2C
64#define ST77XX_RGBSET 0x2D
65#define ST77XX_RAMRD 0x2E
66
67#define ST77XX_RDDPM 0x0A
68#define ST77XX_RDD_MADCTL 0x0B
69#define ST77XX_RDD_COLMOD 0x0C
70#define ST77XX_RDDIM 0x0D
71#define ST77XX_RDDSM 0x0E
72#define ST77XX_RDDSR 0x0F
73
74#define ST77XX_PTLAR 0x30
75#define ST77XX_VSCRDEF 0x33
76#define ST77XX_TEOFF 0x34
77#define ST77XX_TEON 0x35
78#define ST77XX_MADCTL 0x36
79#define ST77XX_IDMOFF 0x38
80#define ST77XX_IDMON 0x39
81#define ST77XX_RAMWRC 0x3C
82#define ST77XX_RAMRDC 0x3E
83#define ST77XX_COLMOD 0x3A
84
85
87#define ST77XX_MADCTL_MY 0x80
88#define ST77XX_MADCTL_MX 0x40
89#define ST77XX_MADCTL_MV 0x20
90#define ST77XX_MADCTL_ML 0x10
91#define ST77XX_MADCTL_MH 0x04
92#define ST77XX_MADCTL_RGB 0x00
93#define ST77XX_MADCTL_BGR 0x08
94
95#define ST77XX_RAMCTRL 0xB0
96#define ST77XX_RGBCTRL 0xB1
97#define ST77XX_PORCTRL 0xB2
98#define ST77XX_FRCTR1 0xB3
99#define ST77XX_PARCTRL 0xB5
100#define ST77XX_GCTRL 0xB7
101#define ST77XX_GTADJ 0xB8
102#define ST77XX_DGMEN 0xBA
103#define ST77XX_VCOMS 0xBB
104#define ST77XX_DISCTRL 0xB6
105
106#define ST77XX_LCMCTRL 0xC0
107#define ST77XX_IDSET 0xC1
108#define ST77XX_VDVVRHEN 0xC2
109#define ST77XX_VRHS 0xC3
110#define ST77XX_VDVSET 0xC4
111#define ST77XX_VCMOFSET 0xC5
112#define ST77XX_FRCTR2 0xC6
113#define ST77XX_CABCCTRL 0xC7
114#define ST77XX_REGSEL1 0xC8
115#define ST77XX_REGSEL2 0xCA
116#define ST77XX_PWMFRSEL 0xCC
117
118#define ST77XX_PWCTRL1 0xD0
119#define ST77XX_VAPVANEN 0xD2
120#define ST77XX_CMD2EN 0xDF
121
122#define ST77XX_VMCTRL1 0xC5
123#define ST77XX_VMCTRL2 0xC7
124
125#define ST77XX_PGAMCTRL 0xE0
126#define ST77XX_NGAMCTRL 0xE1
127#define ST77XX_DGMLUTR 0xE2
128#define ST77XX_DGMLUTB 0xE3
129#define ST77XX_GATECTRL 0xE4
130#define ST77XX_SPI2EN 0xE7
131#define ST77XX_PWCTRL2 0xE8
132#define ST77XX_EQCTRL 0xE9
133#define ST77XX_PROMCTRL 0xEC
134
135#define ST77XX_PROMEN 0xFA
136#define ST77XX_NVMSET 0xFC
137#define ST77XX_PROMACT 0xFE
138
139#define ST77XX_COLOR_MODE_16bit 0x55
140#define ST77XX_COLOR_MODE_18bit 0x66
141
145{
146 // TFT Properties
148 // ST77XX Properties
149};
150
152
166FRAMEBUFFER_DEVICE * STDCALL st77xx_framebuffer_create(SPI_DEVICE *spi, uint16_t chipselect, char *name, uint32_t rotation, uint32_t width, uint32_t height, uint32_t colstart, GPIO_INFO *rst, GPIO_INFO *dc, GPIO_INFO *bl);
167
174
175#ifdef __cplusplus
176}
177#endif
178
179#endif // _ULTIBO_ST77XX_H
struct _FRAMEBUFFER_DEVICE FRAMEBUFFER_DEVICE
Definition framebuffer.h:112
#define STDCALL
Definition globaltypes.h:45
struct _GPIO_INFO GPIO_INFO
Definition gpio.h:176
struct _SPI_DEVICE SPI_DEVICE
Definition spi.h:108
uint32_t STDCALL st77xx_framebuffer_destroy(FRAMEBUFFER_DEVICE *framebuffer)
Release, deregister and destroy an ST77XX Framebuffer device created by this driver.
struct _ST77XX_FRAMEBUFFER ST77XX_FRAMEBUFFER
Definition st77xx.h:143
FRAMEBUFFER_DEVICE *STDCALL st77xx_framebuffer_create(SPI_DEVICE *spi, uint16_t chipselect, char *name, uint32_t rotation, uint32_t width, uint32_t height, uint32_t colstart, GPIO_INFO *rst, GPIO_INFO *dc, GPIO_INFO *bl)
Create, register and allocate a new ST77XX Framebuffer device which can be accessed using the framebu...
Definition st77xx.h:145
TFT_FRAMEBUFFER tft
Definition st77xx.h:147
struct _TFT_FRAMEBUFFER TFT_FRAMEBUFFER
Definition tftframebuffer.h:43