未验证 提交 495efd14 编写于 作者: C Carlos Diaz 提交者: GitHub

Merge pull request #172 from mcerveny/ili9481

Initial support for ILI9481 TFT Controller
...@@ -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
......
...@@ -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)
......
...@@ -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)
......
...@@ -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.
......
...@@ -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
......
...@@ -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
......
/**
* @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);
}
/**
* @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.
先完成此消息的编辑!
想要评论请 注册