Display APIs
LCD Display Interface
The BK LCD Display Driver supports following interfaces:
- i8080 LCD interface
项目中使用的屏幕Driving IC 为ST7796S.
8080 接口的数据传输为8位
接口支持的数据为RGB565
- RGB interface
项目中支持的屏幕有Driving IC ST7282,HX8282, GC9503V.
接口支持的数据包括RGB565,YUYV,UYVY,YYUV,UVYY,VUYY
LCD API Categories
LCD 8080 Config
Figure 1. 8080 lcd config flow
LCD RGB Config
Figure 2. rgb lcd config flow
LCD parcical display
Figure 3. rgb lcd config flow
局部显示参数配置
Figure 4. rgb lcd config flow
API Reference
Header File
Functions
-
void bk_lcd_set_devices_list(const lcd_device_t **list, uint16_t size)
LCD API.
This API set LCD device list
- 返回
void
-
bk_err_t bk_lcd_driver_init(lcd_clk_t clk)
This API select LCD module clk source.
open lcd sys interrupt/clk enable
BK_OK: succeed
others: other errors.
- 返回
-
bk_err_t bk_lcd_driver_deinit(void)
close lcd sys interrupt/clk enable
- 返回
BK_OK: succeed
others: other errors.
-
bk_err_t bk_lcd_8080_init(const lcd_device_t *device)
This API init the 8080 lcd interface.
Set lcd display mode is 8080 interface
init 8080 lcd gpio
enable 8080 display -enable 8080 end of frame interrupt
if you want enable start of frame interrupt, please use API bk_lcd_8080_int_enable
- 参数
- – lcd_device_t
- 返回
BK_OK: succeed
others: other errors.
-
bk_err_t bk_lcd_8080_deinit(void)
8080 lcd interface reg deinit
This API reset all lcd reg include power
close 8080 lcd enable and display
reset x pixel and y pixel zero
unregister lcd isr
- 返回
BK_OK: succeed
others: other errors.
-
bk_err_t bk_lcd_8080_start_transfer(bool start)
This API config 8080 lcd interrupt.
This API start mcu 8080 lcd transfer data to display
- Attention
8080 end of frame int is open in API bk_lcd_8080_init
- 参数
- – is_sof_en enable start of frame interrupt
is_eof_en enable end of frame interrupt
start_transfer –
1:data start transfer to lcd display on;
0:stop transfer
- 返回
BK_OK: succeed
others: other errors.
- 返回
BK_OK: succeed
others: other errors.
-
bk_err_t bk_lcd_rgb_deinit(void)
rgb lcd interface reg deinit
This API reset all lcd reg include power
close rgb lcd enable and display
reset x pixel and y pixel zero
unregister lcd isr
- 返回
BK_OK: succeed
others: other errors.
-
bk_err_t bk_lcd_rgb_display_en(bool en)
enable rgb lcd display
- 参数
bool – en
1: enable rgb display
0: disable rgb display
- 返回
BK_OK: succeed
others: other errors.
-
bk_err_t bk_lcd_isr_register(lcd_isr_t lcd_isr)
This API config rgb lcd interrupt.
This API register lcd isr, user should check int status in isr function, and clear status
- Attention
rgb end of frame int is open in API bk_lcd_rgb_init
- 参数
- – is_sof_en enable start of frame interrupt
is_eof_en enable end of frame interrupt
- – isr: isr function
- 返回
BK_OK: succeed
others: other errors.
- 返回
BK_OK: succeed
others: other errors.
-
uint32_t bk_lcd_int_status_get(void)
This API used to get lcd int status.
8080 Usage example: if (bk_lcd_int_status_get()&I8080_OUTPUT_EOF == 1), present 8080 eof int triggerd if (bk_lcd_int_status_get()&RGB_OUTPUT_EOF == 1), present rgb eof int triggerd
- 返回
status value.
-
bk_err_t bk_lcd_int_status_clear(lcd_int_type_t int_type)
This API used to clr lcd int status.
- 参数
- – int_type value.
- 返回
BK_OK: succeed
others: other errors.
-
bk_err_t bk_lcd_pixel_config(uint16_t x_pixel, uint16_t y_pixel)
This API config lcd display x size and y size.
- 参数
- – x_pixel user can set by any value, can be lcd size x or picture size x
y_pixel user can set by any value, can be lcd size y or picture size y
- 返回
BK_OK: succeed
others: other errors.
-
bk_err_t bk_lcd_rgb_init(const lcd_device_t *device)
This API init the rgb lcd interface.
Set lcd display mode is rgb interface
init rgb lcd gpio
enable rgb display
enable rgb end of frame interrupt
- 参数
- – lcd_device_t: lcd type select from lcd_device_t
- 返回
BK_OK: succeed
others: other errors.
-
bk_err_t bk_lcd_8080_send_cmd(uint8_t param_count, uint32_t command, uint32_t *param)
This API used send 8080 lcd init cmd.
Usage example:
#define COMMAND_1 0xf uint32_t param_command1[2] = {0xc3, 0x29}; bk_lcd_8080_send_cmd(2, COMMAND_1, param_command1);
- 参数
- – param_count: cmd parameter number
command: command
param: the cmd parameter
- 返回
BK_OK: succeed
others: other errors.
-
bk_err_t bk_lcd_set_partical_display(bool en, uint16_t partial_clum_l, uint16_t partial_clum_r, uint16_t partial_line_l, uint16_t partial_line_r)
This API used for display partical area.
8080 Usage example:
#define PARTICAL_XS 101 #define PARTICAL_XE 220 #define PARTICAL_YS 101 #define PARTICAL_YE 380 bk_lcd_set_partical_display(EDGE_PARTICAL_XS, EDGE_PARTICAL_XE, EDGE_PARTICAL_YS, EDGE_PARTICAL_YE); bk_lcd_8080_send_cmd(2, COMMAND_1, param_command1);
- 参数
- – partial_clum_l:
partial_clum_r:
partial_line_l:
partial_line_r:
- 返回
BK_OK: succeed
others: other errors.
-
void lcd_driver_ppi_set(uint16_t width, uint16_t height)
This API used to clr lcd int status.
- 参数
- – int_type value.
- 返回
BK_OK: succeed
others: other errors.
-
bk_err_t bk_lcd_set_yuv_mode(pixel_format_t input_data_format)
This API used to set lcd display data farmat.
- 参数
- – input_data_format value.
- 返回
BK_OK: succeed
others: other errors.
-
bk_err_t lcd_driver_init(const lcd_device_t *device)
This API used for init lcd.
Usage example:
- 参数
lcd_config_t –
- 返回
BK_OK: succeed
others: other errors.
-
const lcd_device_t *get_lcd_device_by_id(lcd_device_id_t id)
this api used to get lcd device interface
- 参数
select – lcd_device_id_t member
- 返回
lcd device infermation, include: .id = LCD_DEVICE_HX8282, .name = “hx8282”, .type = LCD_TYPE_RGB565, .ppi = PPI_1024X600, .rgb = &lcd_rgb .init = NULL,
-
const lcd_device_t **get_lcd_devices_list(void)
get lcd device list
- 返回
devices list
-
uint32_t get_lcd_devices_num(void)
get lcd device number
- 返回
devices number
-
bk_err_t lcd_driver_backlight_open(void)
this api used to open lcd backlight
- 参数
none –
- 返回
BK_OK: succeed
others: other errors.
-
bk_err_t lcd_driver_backlight_close(void)
this api used to close lcd backlight
- 返回
BK_OK: succeed
others: other errors.
-
bk_err_t lcd_driver_backlight_set(uint8_t percent)
this api used to set lcd backlight
- 参数
percent – rang from 0~100
- 返回
BK_OK: succeed
others: other errors.
-
bk_err_t lcd_driver_display_disable(void)
this api used to disable lcd display
- 返回
BK_OK: succeed
others: other errors.
-
bk_err_t lcd_driver_display_enable(void)
this api used to enable lcd display
- 返回
BK_OK: succeed
others: other errors.
-
bk_err_t lcd_driver_display_continue(void)
this api used to clear eof int and diaplay continue
- 返回
BK_OK: succeed
others: other errors.
-
bk_err_t lcd_driver_set_display_base_addr(uint32_t disp_base_addr)
this api used to set lcd display addr
- 参数
disp_base_addr – sram or psram
- 返回
BK_OK: succeed
others: other errors.
-
bk_err_t lcd_driver_deinit(void)
this api used to close lcd
- 返回
BK_OK: succeed
others: other errors.
-
const lcd_device_t *get_lcd_device_by_ppi(media_ppi_t ppi)
get lcd device struct by ppi
- 参数
lcd – ppi
- 返回
return true is lcd_device_t member
or not find device, return NULL.
-
const lcd_device_t *get_lcd_device_by_name(char *name)
get lcd device struct by device name
- 参数
lcd – name
- 返回
return true is lcd_device_t member
or not find device, return NULL.
-
bk_err_t bk_lcd_input_pixel_hf_reverse(bool hf_reverse)
input data halfword reverse
- 参数
enable – enable/disable hf_reverse
- 返回
BK_OK: succeed
others: other errors.
API Typedefs
Header File
Structures
-
struct yuv_data_t
-
struct lcd_rect_t
-
struct lcd_disp_framebuf_t
-
struct lcd_rgb_t
rgb interface config param
Public Members
-
rgb_out_clk_edge_t data_out_clk_edge
rgb data output in clk edge, should refer lcd device spec
-
uint16_t hsync_back_porch
rang 0~0x3FF (0~1023), should refer lcd device spec
-
uint16_t hsync_front_porch
rang 0~0x3FF (0~1023), should refer lcd device spec
-
uint16_t vsync_back_porch
rang 0~0xFF (0~255), should refer lcd device spec
-
uint16_t vsync_front_porch
rang 0~0xFF (0~255), should refer lcd device spec
-
uint8_t hsync_pulse_width
rang 0~0x3F (0~7), should refer lcd device spec
-
uint8_t vsync_pulse_width
rang 0~0x3F (0~7), should refer lcd device spec
-
rgb_out_clk_edge_t data_out_clk_edge
-
struct lcd_mcu_t
mcu interface config param
-
struct lcd_qspi_t
qspi interface config param
-
struct lcd_spi_t
spi interface config param
-
struct lcd_device_t
Public Members
-
lcd_device_id_t id
lcd device type, user can add if you want to add another lcd device
-
char *name
lcd device name
-
lcd_type_t type
lcd device hw interface
-
media_ppi_t ppi
lcd device x y size
-
pixel_format_t src_fmt
source data format: input to display module data format(rgb565/rgb888/yuv)
-
pixel_format_t out_fmt
display module output data format(rgb565/rgb666/rgb888), input to lcd device,
-
const lcd_qspi_t *qspi
QSPI interface lcd device config
-
void (*init)(void)
lcd device initial function
-
bk_err_t (*lcd_off)(void)
lcd off
-
lcd_device_id_t id
Macros
-
USE_LCD_REGISTER_CALLBACKS
Type Definitions
-
typedef void (*lcd_isr_t)(void)
Enumerations
-
enum lcd_device_id_t
Values:
-
enumerator LCD_DEVICE_UNKNOW
-
enumerator LCD_DEVICE_ST7282
480X270 RGB
-
enumerator LCD_DEVICE_HX8282
1024X600 RGB
-
enumerator LCD_DEVICE_GC9503V
480X800 RGB
-
enumerator LCD_DEVICE_NT35510
480X854 RGB
-
enumerator LCD_DEVICE_H050IWV
800X480 RGB
-
enumerator LCD_DEVICE_MD0430R
800X480 RGB
-
enumerator LCD_DEVICE_MD0700R
1024X600 RGB
-
enumerator LCD_DEVICE_ST7701S_LY
480X480 RGB
-
enumerator LCD_DEVICE_ST7701S
480X480 RGB
-
enumerator LCD_DEVICE_ST7701SN
480X480 RGB
-
enumerator LCD_DEVICE_AML01
720X1280 RGB
-
enumerator LCD_DEVICE_ST7796S
320X480 MCU
-
enumerator LCD_DEVICE_NT35512
480X800 MCU
-
enumerator LCD_DEVICE_NT35510_MCU
480X800 MCU
-
enumerator LCD_DEVICE_ST7789V
170X320 MCU
-
enumerator LCD_DEVICE_SH8601A
454X454 QSPI
-
enumerator LCD_DEVICE_ST77903_WX20114
400X400 QSPI
-
enumerator LCD_DEVICE_ST77903_SAT61478M
400X400 QSPI
-
enumerator LCD_DEVICE_ST77903_H0165Y008T
360X480 QSPI
-
enumerator LCD_DEVICE_SPD2010
412X412 QSPI
-
enumerator LCD_DEVICE_ST7796U
320X480 SPI
-
enumerator LCD_DEVICE_GC9D01
160X160 SPI
-
enumerator LCD_DEVICE_UNKNOW
-
enum lcd_type_t
Values:
-
enumerator LCD_TYPE_RGB
lcd hardware interface is parallel RGB interface
-
enumerator LCD_TYPE_RGB565
lcd device output data hardware interface is RGB565 format
-
enumerator LCD_TYPE_MCU8080
lcd device output data hardware interface is MCU 8BIT format
-
enumerator LCD_TYPE_QSPI
lcd device hardware interface is QSPI interface
-
enumerator LCD_TYPE_SPI
lcd device hardware interface is SPI interface
-
enumerator LCD_TYPE_RGB
-
enum lcd_int_type_t
Values:
-
enumerator RGB_OUTPUT_EOF
reg end of frame int status
-
enumerator RGB_OUTPUT_SOF
reg display output start of frame status
-
enumerator I8080_OUTPUT_SOF
8080 display output start of frame status
-
enumerator I8080_OUTPUT_EOF
8080 display output end of frame status
-
enumerator DE_INT
-
enumerator FRAME_INTERVAL_INT
-
enumerator RGB_OUTPUT_EOF
-
enum frame_delay_unit_t
Values:
-
enumerator DCLK_UNIT
-
enumerator HSYNC_UNIT
-
enumerator VSYNC_UNIT
-
enumerator NONE
-
enumerator DCLK_UNIT
-
enum lcd_clk_t
rgb lcd clk select, infulence pfs, user should select according to lcd device spec
Values:
-
enumerator LCD_80M
-
enumerator LCD_64M
-
enumerator LCD_60M
-
enumerator LCD_54M
-
enumerator LCD_45M
-
enumerator LCD_40M
-
enumerator LCD_35M
-
enumerator LCD_32M
-
enumerator LCD_30M
-
enumerator LCD_26M
-
enumerator LCD_24M
-
enumerator LCD_22M
-
enumerator LCD_20M
-
enumerator LCD_17M
-
enumerator LCD_15M
-
enumerator LCD_12M
-
enumerator LCD_10M
-
enumerator LCD_9M
-
enumerator LCD_8M
-
enumerator LCD_7M
-
enumerator LCD_80M
-
enum lcd_qspi_clk_t
Values:
-
enumerator LCD_QSPI_80M
-
enumerator LCD_QSPI_64M
-
enumerator LCD_QSPI_60M
-
enumerator LCD_QSPI_53M
-
enumerator LCD_QSPI_48M
-
enumerator LCD_QSPI_40M
-
enumerator LCD_QSPI_32M
-
enumerator LCD_QSPI_30M
-
enumerator LCD_QSPI_80M
-
enum rgb_out_clk_edge_t
rgb data output in clk rising or falling
Values:
-
enumerator POSEDGE_OUTPUT
output in clk falling
-
enumerator NEGEDGE_OUTPUT
output in clk rising
-
enumerator POSEDGE_OUTPUT