Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
启明云端(wireless-tag)
Lv Port Esp32
提交
495efd14
L
Lv Port Esp32
项目概览
启明云端(wireless-tag)
/
Lv Port Esp32
通知
17
Star
0
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
Lv Port Esp32
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
495efd14
编写于
7月 28, 2020
作者:
C
Carlos Diaz
提交者:
GitHub
7月 28, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #172 from mcerveny/ili9481
Initial support for ILI9481 TFT Controller
上级
0fe9ab02
faa0a60b
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
373 addition
and
2 deletion
+373
-2
components/lvgl_esp32_drivers/lvgl_helpers.h
components/lvgl_esp32_drivers/lvgl_helpers.h
+2
-0
components/lvgl_esp32_drivers/lvgl_spi_conf.h
components/lvgl_esp32_drivers/lvgl_spi_conf.h
+4
-1
components/lvgl_esp32_drivers/lvgl_tft/CMakeLists.txt
components/lvgl_esp32_drivers/lvgl_tft/CMakeLists.txt
+2
-0
components/lvgl_esp32_drivers/lvgl_tft/Kconfig
components/lvgl_esp32_drivers/lvgl_tft/Kconfig
+12
-1
components/lvgl_esp32_drivers/lvgl_tft/disp_driver.c
components/lvgl_esp32_drivers/lvgl_tft/disp_driver.c
+4
-0
components/lvgl_esp32_drivers/lvgl_tft/disp_driver.h
components/lvgl_esp32_drivers/lvgl_tft/disp_driver.h
+2
-0
components/lvgl_esp32_drivers/lvgl_tft/ili9481.c
components/lvgl_esp32_drivers/lvgl_tft/ili9481.c
+221
-0
components/lvgl_esp32_drivers/lvgl_tft/ili9481.h
components/lvgl_esp32_drivers/lvgl_tft/ili9481.h
+126
-0
未找到文件。
components/lvgl_esp32_drivers/lvgl_helpers.h
浏览文件 @
495efd14
...
@@ -29,6 +29,8 @@ extern "C" {
...
@@ -29,6 +29,8 @@ extern "C" {
#define DISP_BUF_SIZE (LV_HOR_RES_MAX * 40)
#define DISP_BUF_SIZE (LV_HOR_RES_MAX * 40)
#elif defined CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_SH1107
#elif defined CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_SH1107
#define DISP_BUF_SIZE (CONFIG_LVGL_DISPLAY_WIDTH*CONFIG_LVGL_DISPLAY_HEIGHT)
#define DISP_BUF_SIZE (CONFIG_LVGL_DISPLAY_WIDTH*CONFIG_LVGL_DISPLAY_HEIGHT)
#elif defined CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9481
#define DISP_BUF_SIZE (LV_HOR_RES_MAX * 40)
#elif defined CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9486
#elif defined CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9486
#define DISP_BUF_SIZE (LV_HOR_RES_MAX * 40)
#define DISP_BUF_SIZE (LV_HOR_RES_MAX * 40)
#elif defined CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9488
#elif defined CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9488
...
...
components/lvgl_esp32_drivers/lvgl_spi_conf.h
浏览文件 @
495efd14
...
@@ -90,7 +90,8 @@ extern "C" {
...
@@ -90,7 +90,8 @@ extern "C" {
/**********************
/**********************
* TYPEDEFS
* TYPEDEFS
**********************/
**********************/
#if defined (CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9488)
#if defined (CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9481) || \
defined (CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9488)
#define SPI_BUS_MAX_TRANSFER_SZ (DISP_BUF_SIZE * 3)
#define SPI_BUS_MAX_TRANSFER_SZ (DISP_BUF_SIZE * 3)
...
@@ -119,6 +120,8 @@ extern "C" {
...
@@ -119,6 +120,8 @@ extern "C" {
#define SPI_TFT_CLOCK_SPEED_HZ (26*1000*1000)
#define SPI_TFT_CLOCK_SPEED_HZ (26*1000*1000)
#elif defined (CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_SH1107)
#elif defined (CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_SH1107)
#define SPI_TFT_CLOCK_SPEED_HZ (8*1000*1000)
#define SPI_TFT_CLOCK_SPEED_HZ (8*1000*1000)
#elif defined (CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9481)
#define SPI_TFT_CLOCK_SPEED_HZ (16*1000*1000)
#elif defined (CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9486)
#elif defined (CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9486)
#define SPI_TFT_CLOCK_SPEED_HZ (20*1000*1000)
#define SPI_TFT_CLOCK_SPEED_HZ (20*1000*1000)
#elif defined (CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9488)
#elif defined (CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9488)
...
...
components/lvgl_esp32_drivers/lvgl_tft/CMakeLists.txt
浏览文件 @
495efd14
...
@@ -4,6 +4,8 @@ set(SOURCES "disp_driver.c")
...
@@ -4,6 +4,8 @@ set(SOURCES "disp_driver.c")
# display controller.
# display controller.
if
(
CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9341
)
if
(
CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9341
)
list
(
APPEND SOURCES
"ili9341.c"
)
list
(
APPEND SOURCES
"ili9341.c"
)
elseif
(
CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9481
)
list
(
APPEND SOURCES
"ili9481.c"
)
elseif
(
CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9486
)
elseif
(
CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9486
)
list
(
APPEND SOURCES
"ili9486.c"
)
list
(
APPEND SOURCES
"ili9486.c"
)
elseif
(
CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9488
)
elseif
(
CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9488
)
...
...
components/lvgl_esp32_drivers/lvgl_tft/Kconfig
浏览文件 @
495efd14
...
@@ -82,6 +82,11 @@ menu "LVGL TFT Display controller"
...
@@ -82,6 +82,11 @@ menu "LVGL TFT Display controller"
help
help
ILI9341 display controller.
ILI9341 display controller.
config LVGL_TFT_DISPLAY_CONTROLLER_ILI9481
bool
help
ILI9481 display controller.
config LVGL_TFT_DISPLAY_CONTROLLER_ILI9488
config LVGL_TFT_DISPLAY_CONTROLLER_ILI9488
bool
bool
help
help
...
@@ -207,6 +212,10 @@ menu "LVGL TFT Display controller"
...
@@ -207,6 +212,10 @@ menu "LVGL TFT Display controller"
bool "ILI9341"
bool "ILI9341"
select LVGL_TFT_DISPLAY_CONTROLLER_ILI9341
select LVGL_TFT_DISPLAY_CONTROLLER_ILI9341
select LVGL_TFT_DISPLAY_PROTOCOL_SPI
select LVGL_TFT_DISPLAY_PROTOCOL_SPI
config LVGL_TFT_DISPLAY_USER_CONTROLLER_ILI9481
bool "ILI9481"
select LVGL_TFT_DISPLAY_CONTROLLER_ILI9481
select LVGL_TFT_DISPLAY_PROTOCOL_SPI
config LVGL_TFT_DISPLAY_USER_CONTROLLER_ILI9486
config LVGL_TFT_DISPLAY_USER_CONTROLLER_ILI9486
bool "ILI9486"
bool "ILI9486"
select LVGL_TFT_DISPLAY_CONTROLLER_ILI9486
select LVGL_TFT_DISPLAY_CONTROLLER_ILI9486
...
@@ -281,6 +290,7 @@ menu "LVGL TFT Display controller"
...
@@ -281,6 +290,7 @@ menu "LVGL TFT Display controller"
choice
choice
prompt "Display orientation"
prompt "Display orientation"
depends on LVGL_TFT_DISPLAY_CONTROLLER_ILI9341 || \
depends on LVGL_TFT_DISPLAY_CONTROLLER_ILI9341 || \
LVGL_TFT_DISPLAY_CONTROLLER_ILI9481 || \
LVGL_TFT_DISPLAY_CONTROLLER_ILI9486 || \
LVGL_TFT_DISPLAY_CONTROLLER_ILI9486 || \
LVGL_TFT_DISPLAY_CONTROLLER_ILI9488 || \
LVGL_TFT_DISPLAY_CONTROLLER_ILI9488 || \
LVGL_TFT_DISPLAY_CONTROLLER_SH1107 || \
LVGL_TFT_DISPLAY_CONTROLLER_SH1107 || \
...
@@ -363,6 +373,7 @@ menu "LVGL TFT Display controller"
...
@@ -363,6 +373,7 @@ menu "LVGL TFT Display controller"
prompt "Select a custom frequency."
prompt "Select a custom frequency."
depends on LVGL_TFT_USE_CUSTOM_SPI_CLK_DIVIDER
depends on LVGL_TFT_USE_CUSTOM_SPI_CLK_DIVIDER
default LVGL_TFT_SPI_CLK_DIVIDER_4 if LVGL_TFT_DISPLAY_CONTROLLER_ST7789 || LVGL_TFT_DISPLAY_CONTROLLER_ILI9486
default LVGL_TFT_SPI_CLK_DIVIDER_4 if LVGL_TFT_DISPLAY_CONTROLLER_ST7789 || LVGL_TFT_DISPLAY_CONTROLLER_ILI9486
default LVGL_TFT_SPI_CLK_DIVIDER_5 if LVGL_TFT_DISPLAY_CONTROLLER_ILI9481
default LVGL_TFT_SPI_CLK_DIVIDER_3 if LVGL_TFT_DISPLAY_CONTROLLER_HX8357
default LVGL_TFT_SPI_CLK_DIVIDER_3 if LVGL_TFT_DISPLAY_CONTROLLER_HX8357
default LVGL_TFT_SPI_CLK_DIVIDER_10 if CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_SH1107
default LVGL_TFT_SPI_CLK_DIVIDER_10 if CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_SH1107
default LVGL_TFT_SPI_CLK_DIVIDER_2
default LVGL_TFT_SPI_CLK_DIVIDER_2
...
@@ -434,7 +445,7 @@ menu "LVGL TFT Display controller"
...
@@ -434,7 +445,7 @@ menu "LVGL TFT Display controller"
If text is backwards on your display, try enabling this.
If text is backwards on your display, try enabling this.
config LVGL_INVERT_COLORS
config LVGL_INVERT_COLORS
bool "Invert colors in display" if LVGL_TFT_DISPLAY_CONTROLLER_ILI9341 || LVGL_TFT_DISPLAY_CONTROLLER_ST7735S
bool "Invert colors in display" if LVGL_TFT_DISPLAY_CONTROLLER_ILI9341 || LVGL_TFT_DISPLAY_CONTROLLER_ST7735S
|| LVGL_TFT_DISPLAY_CONTROLLER_ILI9481
default y if LVGL_PREDEFINED_DISPLAY_M5STACK || LVGL_PREDEFINED_DISPLAY_M5STICKC
default y if LVGL_PREDEFINED_DISPLAY_M5STACK || LVGL_PREDEFINED_DISPLAY_M5STICKC
help
help
If the colors look inverted on your display, try enabling this.
If the colors look inverted on your display, try enabling this.
...
...
components/lvgl_esp32_drivers/lvgl_tft/disp_driver.c
浏览文件 @
495efd14
...
@@ -9,6 +9,8 @@ void disp_driver_init(void)
...
@@ -9,6 +9,8 @@ void disp_driver_init(void)
{
{
#if defined CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9341
#if defined CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9341
ili9341_init
();
ili9341_init
();
#elif defined CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9481
ili9481_init
();
#elif defined CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9488
#elif defined CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9488
ili9488_init
();
ili9488_init
();
#elif defined CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ST7789
#elif defined CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ST7789
...
@@ -36,6 +38,8 @@ void disp_driver_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t *
...
@@ -36,6 +38,8 @@ void disp_driver_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t *
{
{
#if defined CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9341
#if defined CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9341
ili9341_flush
(
drv
,
area
,
color_map
);
ili9341_flush
(
drv
,
area
,
color_map
);
#elif defined CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9481
ili9481_flush
(
drv
,
area
,
color_map
);
#elif defined CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9488
#elif defined CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9488
ili9488_flush
(
drv
,
area
,
color_map
);
ili9488_flush
(
drv
,
area
,
color_map
);
#elif defined CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ST7789
#elif defined CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ST7789
...
...
components/lvgl_esp32_drivers/lvgl_tft/disp_driver.h
浏览文件 @
495efd14
...
@@ -16,6 +16,8 @@ extern "C" {
...
@@ -16,6 +16,8 @@ extern "C" {
#if defined CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9341
#if defined CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9341
#include "ili9341.h"
#include "ili9341.h"
#elif defined CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9481
#include "ili9481.h"
#elif defined CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9488
#elif defined CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ILI9488
#include "ili9488.h"
#include "ili9488.h"
#elif defined CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ST7789
#elif defined CONFIG_LVGL_TFT_DISPLAY_CONTROLLER_ST7789
...
...
components/lvgl_esp32_drivers/lvgl_tft/ili9481.c
0 → 100644
浏览文件 @
495efd14
/**
* @file ili9481.c
*/
/*********************
* INCLUDES
*********************/
#include "ili9481.h"
#include "disp_spi.h"
#include "driver/gpio.h"
#include "esp_log.h"
#include "esp_heap_caps.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
/*********************
* DEFINES
*********************/
#define TAG "ILI9481"
/**********************
* TYPEDEFS
**********************/
/*The LCD needs a bunch of command/argument values to be initialized. They are stored in this struct. */
typedef
struct
{
uint8_t
cmd
;
uint8_t
data
[
16
];
uint8_t
databytes
;
//No of data in data; bit 7 = delay after set; 0xFF = end of cmds.
}
lcd_init_cmd_t
;
/**********************
* STATIC PROTOTYPES
**********************/
static
void
ili9481_set_orientation
(
uint8_t
orientation
);
static
void
ili9481_send_cmd
(
uint8_t
cmd
);
static
void
ili9481_send_data
(
void
*
data
,
uint16_t
length
);
static
void
ili9481_send_color
(
void
*
data
,
uint16_t
length
);
/**********************
* STATIC VARIABLES
**********************/
/**********************
* MACROS
**********************/
/**********************
* GLOBAL FUNCTIONS
**********************/
void
ili9481_init
(
void
)
{
lcd_init_cmd_t
ili_init_cmds
[]
=
{
{
ILI9481_CMD_SLEEP_OUT
,
{
0x00
},
0x80
},
{
ILI9481_CMD_POWER_SETTING
,
{
0x07
,
0x42
,
0x18
},
3
},
{
ILI9481_CMD_VCOM_CONTROL
,
{
0x00
,
0x07
,
0x10
},
3
},
{
ILI9481_CMD_POWER_CONTROL_NORMAL
,
{
0x01
,
0x02
},
2
},
{
ILI9481_CMD_PANEL_DRIVE
,
{
0x10
,
0x3B
,
0x00
,
0x02
,
0x11
},
5
},
{
ILI9481_CMD_FRAME_RATE
,
{
0x03
},
1
},
{
ILI9481_CMD_FRAME_MEMORY_ACCESS
,
{
0x0
,
0x0
,
0x0
,
0x0
},
4
},
//{ILI9481_CMD_DISP_TIMING_NORMAL, {0x10, 0x10, 0x22}, 3},
{
ILI9481_CMD_GAMMA_SETTING
,
{
0x00
,
0x32
,
0x36
,
0x45
,
0x06
,
0x16
,
0x37
,
0x75
,
0x77
,
0x54
,
0x0C
,
0x00
},
12
},
{
ILI9481_CMD_MEMORY_ACCESS_CONTROL
,
{
0x0A
},
1
},
#if ILI9481_INVERT_COLORS
{
ILI9481_CMD_DISP_INVERSION_ON
,
{},
0
},
#endif
{
ILI9481_CMD_COLMOD_PIXEL_FORMAT_SET
,
{
0x66
},
1
},
{
ILI9481_CMD_NORMAL_DISP_MODE_ON
,
{},
0x80
},
{
ILI9481_CMD_DISPLAY_ON
,
{},
0x80
},
{
0
,
{
0
},
0xff
},
};
//Initialize non-SPI GPIOs
gpio_set_direction
(
ILI9481_DC
,
GPIO_MODE_OUTPUT
);
gpio_set_direction
(
ILI9481_RST
,
GPIO_MODE_OUTPUT
);
#if ILI9481_ENABLE_BACKLIGHT_CONTROL
gpio_set_direction
(
ILI9481_BCKL
,
GPIO_MODE_OUTPUT
);
#endif
//Reset the display
gpio_set_level
(
ILI9481_RST
,
0
);
vTaskDelay
(
100
/
portTICK_RATE_MS
);
gpio_set_level
(
ILI9481_RST
,
1
);
vTaskDelay
(
100
/
portTICK_RATE_MS
);
ESP_LOGI
(
TAG
,
"ILI9481 initialization."
);
// Exit sleep
ili9481_send_cmd
(
0x01
);
/* Software reset */
vTaskDelay
(
100
/
portTICK_RATE_MS
);
//Send all the commands
uint16_t
cmd
=
0
;
while
(
ili_init_cmds
[
cmd
].
databytes
!=
0xff
)
{
ili9481_send_cmd
(
ili_init_cmds
[
cmd
].
cmd
);
ili9481_send_data
(
ili_init_cmds
[
cmd
].
data
,
ili_init_cmds
[
cmd
].
databytes
&
0x1F
);
if
(
ili_init_cmds
[
cmd
].
databytes
&
0x80
)
{
vTaskDelay
(
100
/
portTICK_RATE_MS
);
}
cmd
++
;
}
ili9481_enable_backlight
(
true
);
ili9481_set_orientation
(
ILI9481_DISPLAY_ORIENTATION
);
}
// Flush function based on mvturnho repo
void
ili9481_flush
(
lv_disp_drv_t
*
drv
,
const
lv_area_t
*
area
,
lv_color_t
*
color_map
)
{
uint32_t
size
=
lv_area_get_width
(
area
)
*
lv_area_get_height
(
area
);
lv_color16_t
*
buffer_16bit
=
(
lv_color16_t
*
)
color_map
;
uint8_t
*
mybuf
;
do
{
mybuf
=
(
uint8_t
*
)
heap_caps_malloc
(
3
*
size
*
sizeof
(
uint8_t
),
MALLOC_CAP_DMA
);
if
(
mybuf
==
NULL
)
ESP_LOGW
(
TAG
,
"Could not allocate enough DMA memory!"
);
}
while
(
mybuf
==
NULL
);
uint32_t
LD
=
0
;
uint32_t
j
=
0
;
for
(
uint32_t
i
=
0
;
i
<
size
;
i
++
)
{
LD
=
buffer_16bit
[
i
].
full
;
mybuf
[
j
]
=
(
uint8_t
)
(((
LD
&
0xF800
)
>>
8
)
|
((
LD
&
0x8000
)
>>
13
));
j
++
;
mybuf
[
j
]
=
(
uint8_t
)
((
LD
&
0x07E0
)
>>
3
);
j
++
;
mybuf
[
j
]
=
(
uint8_t
)
(((
LD
&
0x001F
)
<<
3
)
|
((
LD
&
0x0010
)
>>
2
));
j
++
;
}
/* Column addresses */
uint8_t
xb
[]
=
{
(
uint8_t
)
(
area
->
x1
>>
8
)
&
0xFF
,
(
uint8_t
)
(
area
->
x1
)
&
0xFF
,
(
uint8_t
)
(
area
->
x2
>>
8
)
&
0xFF
,
(
uint8_t
)
(
area
->
x2
)
&
0xFF
,
};
/* Page addresses */
uint8_t
yb
[]
=
{
(
uint8_t
)
(
area
->
y1
>>
8
)
&
0xFF
,
(
uint8_t
)
(
area
->
y1
)
&
0xFF
,
(
uint8_t
)
(
area
->
y2
>>
8
)
&
0xFF
,
(
uint8_t
)
(
area
->
y2
)
&
0xFF
,
};
/*Column addresses*/
ili9481_send_cmd
(
ILI9481_CMD_COLUMN_ADDRESS_SET
);
ili9481_send_data
(
xb
,
4
);
/*Page addresses*/
ili9481_send_cmd
(
ILI9481_CMD_PAGE_ADDRESS_SET
);
ili9481_send_data
(
yb
,
4
);
/*Memory write*/
ili9481_send_cmd
(
ILI9481_CMD_MEMORY_WRITE
);
ili9481_send_color
((
void
*
)
mybuf
,
size
*
3
);
heap_caps_free
(
mybuf
);
}
void
ili9481_enable_backlight
(
bool
backlight
)
{
#if ILI9481_ENABLE_BACKLIGHT_CONTROL
ESP_LOGI
(
TAG
,
"%s backlight."
,
backlight
?
"Enabling"
:
"Disabling"
);
uint32_t
tmp
=
0
;
#if (ILI9481_BCKL_ACTIVE_LVL==1)
tmp
=
backlight
?
1
:
0
;
#else
tmp
=
backlight
?
0
:
1
;
#endif
gpio_set_level
(
ILI9481_BCKL
,
tmp
);
#endif
}
/**********************
* STATIC FUNCTIONS
**********************/
static
void
ili9481_send_cmd
(
uint8_t
cmd
)
{
disp_wait_for_pending_transactions
();
gpio_set_level
(
ILI9481_DC
,
0
);
/*Command mode*/
disp_spi_send_data
(
&
cmd
,
1
);
}
static
void
ili9481_send_data
(
void
*
data
,
uint16_t
length
)
{
disp_wait_for_pending_transactions
();
gpio_set_level
(
ILI9481_DC
,
1
);
/*Data mode*/
disp_spi_send_data
(
data
,
length
);
}
static
void
ili9481_send_color
(
void
*
data
,
uint16_t
length
)
{
disp_wait_for_pending_transactions
();
gpio_set_level
(
ILI9481_DC
,
1
);
/*Data mode*/
disp_spi_send_colors
(
data
,
length
);
}
static
void
ili9481_set_orientation
(
uint8_t
orientation
)
{
const
char
*
orientation_str
[]
=
{
"PORTRAIT"
,
"PORTRAIT_INVERTED"
,
"LANDSCAPE"
,
"LANDSCAPE_INVERTED"
};
ESP_LOGI
(
TAG
,
"Display orientation: %s"
,
orientation_str
[
orientation
]);
uint8_t
data
[]
=
{
0x48
,
0x4B
,
0x28
,
0x2B
};
ili9481_send_cmd
(
ILI9481_CMD_MEMORY_ACCESS_CONTROL
);
ili9481_send_data
((
void
*
)
&
data
[
orientation
],
1
);
}
components/lvgl_esp32_drivers/lvgl_tft/ili9481.h
0 → 100644
浏览文件 @
495efd14
/**
* @file ili9481.h
*/
#ifndef ILI9481_H
#define ILI9481_H
#ifdef __cplusplus
extern
"C"
{
#endif
/*********************
* INCLUDES
*********************/
#include <stdbool.h>
#include <stdint.h>
#include "lvgl/lvgl.h"
#include "../lvgl_helpers.h"
/*********************
* DEFINES
*********************/
#define ILI9481_DC CONFIG_LVGL_DISP_PIN_DC
#define ILI9481_RST CONFIG_LVGL_DISP_PIN_RST
#define ILI9481_BCKL CONFIG_LVGL_DISP_PIN_BCKL
#define ILI9481_ENABLE_BACKLIGHT_CONTROL CONFIG_LVGL_ENABLE_BACKLIGHT_CONTROL
#define ILI9481_INVERT_COLORS CONFIG_LVGL_INVERT_COLORS
#define ILI9481_DISPLAY_ORIENTATION CONFIG_LVGL_DISPLAY_ORIENTATION
#if CONFIG_LVGL_BACKLIGHT_ACTIVE_LVL
#define ILI9481_BCKL_ACTIVE_LVL 1
#else
#define ILI9481_BCKL_ACTIVE_LVL 0
#endif
/*******************
* ILI9481 REGS
*********************/
/* MIPI DCS Type1 */
#define ILI9481_CMD_NOP 0x00
#define ILI9481_CMD_SOFTWARE_RESET 0x01
#define ILI9481_CMD_READ_DISP_POWER_MODE 0x0A
#define ILI9481_CMD_READ_DISP_MADCTRL 0x0B // bits 7:3 only
#define ILI9481_CMD_READ_DISP_PIXEL_FORMAT 0x0C
#define ILI9481_CMD_READ_DISP_IMAGE_MODE 0x0D
#define ILI9481_CMD_READ_DISP_SIGNAL_MODE 0x0E
#define ILI9481_CMD_READ_DISP_SELF_DIAGNOSTIC 0x0F // bits 7:6 only
#define ILI9481_CMD_ENTER_SLEEP_MODE 0x10
#define ILI9481_CMD_SLEEP_OUT 0x11
#define ILI9481_CMD_PARTIAL_MODE_ON 0x12
#define ILI9481_CMD_NORMAL_DISP_MODE_ON 0x13
#define ILI9481_CMD_DISP_INVERSION_OFF 0x20
#define ILI9481_CMD_DISP_INVERSION_ON 0x21
#define ILI9481_CMD_DISPLAY_OFF 0x28
#define ILI9481_CMD_DISPLAY_ON 0x29
#define ILI9481_CMD_COLUMN_ADDRESS_SET 0x2A
#define ILI9481_CMD_PAGE_ADDRESS_SET 0x2B
#define ILI9481_CMD_MEMORY_WRITE 0x2C
#define ILI9481_CMD_MEMORY_READ 0x2E
#define ILI9481_CMD_PARTIAL_AREA 0x30
#define ILI9481_CMD_VERT_SCROLL_DEFINITION 0x33
#define ILI9481_CMD_TEARING_EFFECT_LINE_OFF 0x34
#define ILI9481_CMD_TEARING_EFFECT_LINE_ON 0x35
#define ILI9481_CMD_MEMORY_ACCESS_CONTROL 0x36 // bits 7:3,1:0 only
#define ILI9481_CMD_VERT_SCROLL_START_ADDRESS 0x37
#define ILI9481_CMD_IDLE_MODE_OFF 0x38
#define ILI9481_CMD_IDLE_MODE_ON 0x39
#define ILI9481_CMD_COLMOD_PIXEL_FORMAT_SET 0x3A
#define ILI9481_CMD_WRITE_MEMORY_CONTINUE 0x3C
#define ILI9481_CMD_READ_MEMORY_CONTINUE 0x3E
#define ILI9481_CMD_SET_TEAR_SCANLINE 0x44
#define ILI9481_CMD_GET_SCANLINE 0x45
#define ILI9481_DDB_START 0xA1
#define ILI9481_DDB_CONTINUE 0xA8
/* other */
#define ILI9481_CMD_ACCESS_PROTECT 0xB0
#define ILI9481_CMD_LOW_POWER_CONTROL 0xB1
#define ILI9481_CMD_FRAME_MEMORY_ACCESS 0xB3
#define ILI9481_CMD_DISPLAY_MODE 0xB4
#define ILI9481_CMD_DEVICE_CODE 0xBF
#define ILI9481_CMD_PANEL_DRIVE 0xC0
#define ILI9481_CMD_DISP_TIMING_NORMAL 0xC1
#define ILI9481_CMD_DISP_TIMING_PARTIAL 0xC2
#define ILI9481_CMD_DISP_TIMING_IDLE 0xC3
#define ILI9481_CMD_FRAME_RATE 0xC5
#define ILI9481_CMD_INTERFACE_CONTROL 0xC6
#define ILI9481_CMD_GAMMA_SETTING 0xC8
#define ILI9481_CMD_POWER_SETTING 0xD0
#define ILI9481_CMD_VCOM_CONTROL 0xD1
#define ILI9481_CMD_POWER_CONTROL_NORMAL 0xD2
#define ILI9481_CMD_POWER_CONTROL_IDEL 0xD3
#define ILI9481_CMD_POWER_CONTROL_PARTIAL 0xD4
#define ILI9481_CMD_NVMEM_WRITE 0xE0
#define ILI9481_CMD_NVMEM_PROTECTION_KEY 0xE1
#define ILI9481_CMD_NVMEM_STATUS_READ 0xE2
#define ILI9481_CMD_NVMEM_PROTECTION 0xE3
/**********************
* TYPEDEFS
**********************/
/**********************
* GLOBAL PROTOTYPES
**********************/
void
ili9481_init
(
void
);
void
ili9481_flush
(
lv_disp_drv_t
*
drv
,
const
lv_area_t
*
area
,
lv_color_t
*
color_map
);
void
ili9481_enable_backlight
(
bool
backlight
);
/**********************
* MACROS
**********************/
#ifdef __cplusplus
}
/* extern "C" */
#endif
#endif
/*ILI9481_H*/
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录