Display APIs

[English]

LCD Display Interface

The BK LCD Display Driver supports following interfaces:

  • i8080 LCD interface
    1. 项目中使用的屏幕Driving IC 为ST7796S.

    2. 8080 接口的数据传输为8位

    3. 接口支持的数据为RGB565

  • RGB interface
    1. 项目中支持的屏幕有Driving IC ST7282,HX8282, GC9503V.

    2. 接口支持的数据包括RGB565,YUYV,UYVY,YYUV,UVYY,VUYY

LCD API Categories

LCD 8080 Config

880 lcd Overview

Figure 1. 8080 lcd config flow

LCD RGB Config

rgb lcd Overview

Figure 2. rgb lcd config flow

LCD parcical display

rgb lcd Overview

Figure 3. rgb lcd config flow

局部显示参数配置

rgb lcd Overview

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

lcd_clk_t clk

config lcd clk

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

struct lcd_mcu_t

mcu interface config param

Public Members

lcd_clk_t clk

config lcd clk

void (*set_display_area)(uint16 xs, uint16 xe, uint16 ys, uint16 ye)

if lcd size is smaller then image, and set api bk_lcd_pixel_config is image x y, should set partical display

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_rgb_t *rgb

RGB interface lcd device config

const lcd_mcu_t *mcu

MCU interface lcd device config

const lcd_qspi_t *qspi

QSPI interface lcd device config

const lcd_spi_t *spi

SPI interface lcd device config

void (*init)(void)

lcd device initial function

bk_err_t (*lcd_off)(void)

lcd off

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

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

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
enum frame_delay_unit_t

Values:

enumerator DCLK_UNIT
enumerator HSYNC_UNIT
enumerator VSYNC_UNIT
enumerator NONE
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
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
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

enum data_format_t

Values:

enumerator ARGB8888

ARGB8888 DMA2D color mode

enumerator RGB888

RGB888 DMA2D color mode

enumerator RGB565

RGB565 DMA2D color mode

enumerator YUYV
enum lcd_backlight_default_ctrl_t

Values:

enumerator LCD_BL_DEFAULT_CLOSE
enumerator LCD_BL_DEFAULT_OPEN