APP DC驱动
该驱动仅适用于GR5526。
宏定义
GRAPHICS_DC_LAYER_0
| 描述 | 值 |
|---|---|
| 图层0 | 0u |
详细信息请参考文件:SDK_Folder\drivers\inc\app_graphics_dc.h。
GRAPHICS_DC_LAYER_1
| 描述 | 值 |
|---|---|
| 图层1 | 1u |
详细信息请参考文件:SDK_Folder\drivers\inc\app_graphics_dc.h。
GDC_IRQ_EVT_FRAME_TRANSMITION_END
| 描述 | 值 |
|---|---|
| 帧传输完成 | 0x01 |
详细信息请参考文件:SDK_Folder\drivers\inc\app_graphics_dc.h。
GDC_IRQ_EVT_CMD_TRANSMITION_END
| 描述 | 值 |
|---|---|
| 命令传输完成 | 0x02 |
详细信息请参考文件:SDK_Folder\drivers\inc\app_graphics_dc.h。
GRAPHICS_DC_BASEADDR
| 描述 | 值 |
|---|---|
| DC寄存器基地址 | 0xA3FF4000 |
详细信息请参考文件:SDK_Folder\drivers\inc\app_graphics_dc.h。
结构体
app_graphics_dc_params_t
结构体定义如下:
| 成员 | 描述 | 取值 |
|---|---|---|
|
graphics_dc_mspi_e mspi_mode |
DC SPI工作模式 |
该参数的取值可以是下列值中的任意一个:
|
|
graphics_dc_clock_freq_e clock_freq |
DC时钟频率 |
该参数的取值可以是下列值中的任意一个:
|
|
graphics_dc_clock_mode_e clock_mode |
DC时钟模式 |
该参数的取值可以是下列值中的任意一个:
|
|
graphics_dc_tcsu_cycle_e tcsu_cycle |
DC Tcsu延时 |
该参数的取值可以是下列值中的任意一个:
|
|
graphics_dc_layer_mode_e layer_mode |
DC渲染图层 |
该参数的取值可以是下列值中的任意一个:
|
|
graphics_dc_mipi_format_e mipicfg_format |
图像数据编码格式 |
该参数的取值可以是下列值中的任意一个:
|
|
uint16_t resolution_x |
水平分辨率,单位:Pixel |
|
|
uint16_t resolution_y |
垂直分辨率,单位:Pixel |
|
|
app_graphics_dc_pins_t pins_cfg |
引脚配置 |
详细信息请参考文件:SDK_Folder\drivers\inc\app_graphics_dc.h。
app_graphics_dc_pins_t
结构体定义如下:
| 成员 | 描述 | 取值 |
|---|---|---|
|
app_graphics_dc_pin_t csn |
片选引脚 |
|
|
app_graphics_dc_pin_t clk |
CLK引脚 |
|
|
app_graphics_dc_pin_t io0 |
IO0 |
|
|
app_graphics_dc_pin_t io1 |
IO1 |
|
|
app_graphics_dc_pin_t io2 |
IO2 |
|
|
app_graphics_dc_pin_t io3 |
IO3 |
|
|
app_graphics_dc_pin_t dcx |
数据/命令控制脚 |
详细信息请参考文件:SDK_Folder\drivers\inc\app_graphics_dc.h。
app_graphics_dc_pin_t
结构体定义如下:
| 成员 | 描述 | 取值 |
|---|---|---|
|
app_io_pull_t pull |
设置IO上拉/下拉/浮空 |
同app_io_init_t结构体中的描述 |
|
uint8_t enable |
引脚使能/不使能 |
|
详细信息请参考文件:SDK_Folder\drivers\inc\app_graphics_dc.h。
app_graphics_dc_framelayer_t
结构体定义如下:
| 成员 | 描述 | 取值 |
|---|---|---|
|
void * frame_baseaddr |
Frame Buffer地址 |
SRAM地址、Flash地址、PSRAM地址等;用户装载图片数据的内存地址,可以为Flash、PSRAM或SRAM,根据实际情况决定 |
|
uint32_t resolution_x |
水平分辨率 |
根据实际刷屏分辨率决定 |
|
uint32_t resolution_y |
垂直分辨率 |
根据实际刷屏分辨率决定 |
|
int32_t row_stride |
行步长,单位字节 |
resolution_x乘以每个像素的字节数,不确定时可以传-1,驱动会辅助计算 |
|
int32_t start_x |
开始渲染x坐标 |
一般从0开始 |
|
int32_t start_y |
开始渲染y坐标 |
一般从0开始 |
|
uint32_t size_x |
水平渲染范围 |
resolution_x |
|
uint32_t size_y |
垂直渲染范围 |
resolution_y |
|
uint8_t alpha |
透明度控制(Alpha) |
默认0xff |
|
uint8_t blendmode |
混合模式 |
默认HAL_GDC_BL_SRC |
|
graphics_dc_data_format_e data_format |
图像数据编码格式 |
该参数的取值可以是下列值中的任意一个:
|
详细信息请参考文件:SDK_Folder\drivers\inc\app_graphics_dc.h。
app_graphics_dc_cmd_t
结构体定义如下:
| 成员 | 描述 | 取值 |
|---|---|---|
|
uint8_t command |
Timing解析命令 |
根据外接屏幕配置 |
|
uint32_t address |
Timing值地址 |
根据外接屏幕配置 |
|
app_graphics_dc_frame_address_width_e address_width |
地址宽度 |
该参数的取值可以是下列值中的任意一个:
|
|
app_graphics_dc_frame_timing_e frame_timing |
帧时序 |
该参数的取值可以是下列值中的任意一个:
|
详细信息请参考文件:SDK_Folder\drivers\inc\app_graphics_dc.h。
枚举
graphics_dc_mspi_e
枚举定义如下:
| 成员 | 描述 |
|---|---|
|
GDC_MODE_SPI = 0 |
使用MIPI Type-C SPI模式 |
|
GDC_MODE_DSPI |
使用MIPI Type-C Dual SPI模式 |
|
GDC_MODE_QSPI |
使用MIPI Type-C Quad SPI模式 |
graphics_dc_clock_freq_e
枚举定义如下:
| 成员 | 描述 |
|---|---|
|
GDC_CLOCK_FREQ_48MHz = 0x00 |
DC时钟频率48 MHZ |
|
GDC_CLOCK_FREQ_24MHz = 0x03 |
DC时钟频率24 MHZ |
|
GDC_CLOCK_FREQ_12MHz = 0x05 |
DC时钟频率12 MHZ |
|
GDC_CLOCK_FREQ_6MHz = 0x09 |
DC时钟频率6 MHZ |
|
GDC_CLOCK_FREQ_3MHz = 0x11 |
DC时钟频率3 MHZ |
graphics_dc_clock_mode_e
枚举定义如下:
| 成员 | 描述 |
|---|---|
|
GDC_CLOCK_MODE_0 = 0x00 |
时钟模式0,空闲状态下的时钟极性是逻辑低电平,数据在上升沿采样 |
|
GDC_CLOCK_MODE_1 = 0x01 |
时钟模式1,空闲状态下的时钟极性是逻辑低电平,数据在下降沿采样 |
|
GDC_CLOCK_MODE_2 = 0x02 |
时钟模式2,空闲状态下的时钟极性是逻辑高电平,数据在下降沿采样 |
|
GDC_CLOCK_MODE_3 = 0x03 |
时钟模式3,空闲状态下的时钟极性是逻辑高电平,数据在上升沿采样 |
graphics_dc_tcsu_cycle_e
枚举定义如下:
| 成员 | 描述 |
|---|---|
|
GDC_TCSU_CYCLE_0 = 0x00 |
配置CS Setup Delay为默认(0.5时钟周期) |
|
GDC_TCSU_CYCLE_1 = 0x01 |
配置CS Setup Delay增加1个时钟周期延时 |
|
GDC_TCSU_CYCLE_2 = 0x02 |
配置CS Setup Delay增加2个时钟周期延时 |
|
GDC_TCSU_CYCLE_3 = 0x03 |
配置CS Setup Delay增加3个时钟周期延时 |
|
GDC_TCSU_CYCLE_4 = 0x04 |
配置CS Setup Delay增加4个时钟周期延时 |
详细信息请参考文件:SDK_Folder\drivers\inc\app_graphic_dc.h。
graphics_dc_data_format_e
枚举定义如下:
| 成员 | 描述 |
|---|---|
|
GDC_DATA_FORMAT_RGB565 = HAL_GDC_RGB565 |
RGB565编码,一个像素16 bits,没有Alpha通道 |
|
GDC_DATA_FORMAT_RGBA8888 = HAL_GDC_RGBA8888 |
RGBA8888编码,一个像素32 bits,有Alpha通道 |
|
GDC_DATA_FORMAT_ABGR8888 = HAL_GDC_ABGR8888 |
ABGR8888编码,一个像素32 bits,有Alpha通道 |
|
GDC_DATA_FORMAT_ARGB8888 = HAL_GDC_ARGB8888 |
ARGB8888编码,一个像素32 bits,有Alpha通道 |
|
GDC_DATA_FORMAT_BGRA8888 = HAL_GDC_BGRA8888 |
BGRA8888编码,一个像素32 bits,有Alpha通道 |
|
GDC_DATA_FORMAT_TSC4 = HAL_GDC_TSC4 |
TSC4编码格式,压缩后4 bits表示一个像素 |
|
GDC_DATA_FORMAT_TSC6 = HAL_GDC_TSC6 |
TSC6编码格式,压缩后6 bits表示一个像素 |
|
GDC_DATA_FORMAT_TSC6A = HAL_GDC_TSC6A |
TSC6A编码格式,压缩后6 bits表示一个像素,并包含alpha信息 |
详细信息请参考文件:SDK_Folder\drivers\inc\app_graphic_dc.h。
graphics_dc_mipi_format_e
枚举定义如下:
| 成员 | 描述 |
|---|---|
|
GDC_MIPICFG_SPI_RGB565_OPT0 = MIPICFG_1RGB565_OPT0 |
SPI模式,RGB565色彩格式,时序样式为option0 |
|
GDC_MIPICFG_SPI_RGB888_OPT0 = MIPICFG_1RGB888_OPT0 |
SPI模式,RGB888色彩格式,时序样式为option0 |
|
GDC_MIPICFG_DSPI_RGB565_OPT0 = MIPICFG_2RGB565_OPT0 |
Dual SPI模式,RGB565色彩格式,时序样式为option0 |
|
GDC_MIPICFG_DSPI_RGB888_OPT0 = MIPICFG_2RGB888_OPT1 |
Dual SPI模式,RGB888色彩格式,时序样式为option0 |
|
GDC_MIPICFG_DSPI_RGB888_OPT1 = MIPICFG_2RGB888_OPT0 |
Dual SPI模式,RGB888色彩格式,时序样式为option1 |
|
GDC_MIPICFG_QSPI_RGB565_OPT0 = MIPICFG_4RGB565_OPT0 |
Quad SPI模式,RGB565色彩格式,时序样式为option0 |
|
GDC_MIPICFG_QSPI_RGB888_OPT0 = MIPICFG_4RGB888_OPT0 |
Quad SPI模式,RGB888色彩格式,时序样式为option0 |
详细信息请参考文件:SDK_Folder\drivers\inc\app_graphic_dc.h。
graphics_dc_out_pixel_bits_e
枚举定义如下:
| 成员 | 描述 |
|---|---|
|
GDC_OUT_PIXEL_BITS_16 = 16 |
输出数据像素16 bits |
|
GDC_OUT_PIXEL_BITS_24 = 24 |
输出数据像素24 bits |
|
GDC_OUT_PIXEL_BITS_NOT_SUPPORT = 0xFF |
不支持 |
详细信息请参考文件:SDK_Folder\drivers\inc\app_graphic_dc.h。
app_graphics_dc_frame_timing_e
枚举定义如下:
| 成员 | 描述 |
|---|---|
|
GDC_SPI_FRAME_TIMING_0 = 0x00 |
时序构成为8 bits控制命令+24 bits控制地址+若干字节数据,全部通过SPI模式发出 |
|
GDC_DSPI_FRAME_TIMING_0 |
时序构成为8 bits控制命令+无地址+若干字节数据,均通过4线SPI模式发出,并且启用DCX信号 |
|
GDC_QSPI_FRAME_TIMING_0 |
时序构成为8 bits控制命令+24 bits控制地址+若干字节数据,均通过Quad SPI模式发出 |
|
GDC_QSPI_FRAME_TIMING_1 |
时序构成为8 bits控制命令+24 bits控制地址+若干字节数据。其中命令使用SPI模式发出,地址和数据部分通过Quad SPI模式发出 |
详细信息请参考文件:SDK_Folder\drivers\inc\app_graphic_dc.h。
app_graphics_dc_frame_address_width_e
枚举定义如下:
| 成员 | 描述 |
|---|---|
|
GDC_FRAME_ADDRESS_WIDTH_NONE = 0xFF |
无控制地址 |
|
GDC_FRAME_ADDRESS_WIDTH_08BIT = MIPI_CMD08 |
控制地址宽度为8 bits |
|
GDC_FRAME_ADDRESS_WIDTH_16BIT = MIPI_CMD16 |
控制地址宽度为16 bits |
|
GDC_FRAME_ADDRESS_WIDTH_24BIT = MIPI_CMD24 |
控制地址宽度为24 bits |
详细信息请参考文件:SDK_Folder\rivers\inc\app_graphic_dc.h。
app_graphics_dc_access_type_e
枚举定义如下:
| 成员 | 描述 |
|---|---|
|
GDC_ACCESS_TYPE_SYNC = 0 |
接口使用同步方式工作,等到刷屏完成接口才返回 |
|
GDC_ACCESS_TYPE_ASYNC |
接口使用异步方式工作,通过回调函数获取刷屏结果 |
详细信息请参考文件:SDK_Folder\drivers\inc\app_graphic_dc.h。
app_graphics_dc_frame_result_e
枚举定义如下:
| 成员 | 描述 |
|---|---|
|
GDC_FRAME_RES_SUCCESS = 0x00 |
帧数据发送成功 |
|
GDC_FRAME_RES_ASYNC_WAIT |
发送一帧数据,等待应答信号 |
|
GDC_FRAME_RES_FAIL |
帧数据发送失败 |
|
GDC_FRAME_RES_UNSUPPORT |
帧格式或者命令不支持 |
详细信息请参考文件:SDK_Folder\drivers\inc\app_graphic_dc.h。
graphics_dc_power_state_e
枚举定义如下:
| 成员 | 描述 |
|---|---|
|
GDC_POWER_STATE_SLEEP = 0 |
DC睡眠状态 |
|
GDC_POWER_STATE_ACTIVE = 1 |
DC激活状态 |
详细信息请参考文件:SDK_Folder\drivers\inc\app_graphic_dc.h。
graphics_dc_layer_mode_e
枚举定义如下:
| 成员 | 描述 |
|---|---|
| GDC_ONE_LAYER_MODE = 0 | 图层1 |
| GDC_TWO_LAYER_MODE = 1 | 图层2 |
详细信息请参考文件:SDK_Folder\drivers\inc\app_graphics_dc.h。
接口函数
| API | 芯片 | |
|---|---|---|
| GR551x/GR5x25/GR533x/GR5405 | GR5526 | |
|
graphics_dc_init |
N |
Y |
|
app_graphics_dc_spi_send |
N |
Y |
|
app_graphics_dc_dspi_send_cmd_in_3wire_1lane |
N |
Y |
|
app_graphics_dc_dspi_send_cmd_data_in_3wire_1lane |
N |
Y |
|
app_graphics_dc_dspi_send_cmd_data_in_4wire_2lane |
N |
Y |
|
app_graphics_dc_dspi_send_cmd_datas_in_4wire_2lane |
N |
Y |
|
app_graphics_dc_send_single_frame |
N |
Y |
| app_graphics_dc_set_power_state | N | Y |
| app_graphics_dc_freq_set | N | Y |
graphics_dc_init
| 函数原型 |
uint16_t graphics_dc_init(app_graphics_dc_params_t * dc_params, graphics_dc_irq_event_notify_cb evt_cb) |
|---|---|
| 功能说明 |
初始化DC |
| 输入参数 |
|
| 返回值 |
APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义 |
| 备注 |
app_graphics_dc_spi_send
| 函数原型 |
void app_graphics_dc_spi_send(uint8_t cmd_8bit, uint32_t address_24bit, uint8_t * data, uint32_t length) |
|---|---|
| 功能说明 |
DC通过标准SPI协议发送1 byte命令,3 bytes地址,N bytes数据 |
| 输入参数 |
|
| 返回值 | |
| 备注 |
app_graphics_dc_dspi_send_cmd_in_3wire_1lane
| 函数原型 |
void app_graphics_dc_dspi_send_cmd_in_3wire_1lane(uint8_t cmd) |
|---|---|
| 功能说明 |
DC通过DSPI 3W1L模式发送1 byte命令,未使用DCX线,时序上会在最高位添加1 bit命令指示位 |
| 输入参数 |
cmd:1 byte命令 |
| 返回值 | |
| 备注 |
app_graphics_dc_dspi_send_cmd_data_in_3wire_1lane
| 函数原型 |
void app_graphics_dc_dspi_send_cmd_data_in_3wire_1lane(uint8_t cmd, uint8_t data) |
|---|---|
| 功能说明 |
DC通过DSPI 3W1L模式发送1 byte命令和1 byte数据,未使用DCX线,时序上会在命令和数据的最高位添加1 bit指示位,表示命令还是数据 |
| 输入参数 |
|
| 返回值 | |
| 备注 |
app_graphics_dc_dspi_send_cmd_data_in_4wire_2lane
| 函数原型 |
void app_graphics_dc_dspi_send_cmd_data_in_4wire_2lane(uint16_t cmd, uint16_t data) |
|---|---|
| 功能说明 |
DC通过DSPI 4W2L模式发送2 bytes命令和2 bytes数据,DCX信号线作为数据传输,时序上会在命令和数据的最高位添加1 bit指示位,表示命令还是数据 |
| 输入参数 |
|
| 返回值 | |
| 备注 | 数据线1传输高字节,DCX信号线传输低字节 |
app_graphics_dc_dspi_send_cmd_datas_in_4wire_2lane
| 函数原型 |
void app_graphics_dc_dspi_send_cmd_datas_in_4wire_2lane(uint16_t cmd, uint16_t * data , int length); |
|---|---|
| 功能说明 |
在4-Wire SPI模式下发送1个命令字和多个数据,主要用于屏幕的初始化配置 |
| 输入参数 |
|
| 返回值 |
无 |
| 备注 |
单次传输数据个数不超过8个 |
app_graphics_dc_send_single_frame
| 函数原型 |
app_graphics_dc_frame_result_e app_graphics_dc_send_single_frame(uint32_t which_layer, app_graphics_dc_framelayer_t * frame_layer, app_graphics_dc_cmd_t * dc_cmd, app_graphics_dc_access_type_e access_type) |
|---|---|
| 功能说明 |
DC发送一帧图像数据 |
| 输入参数 |
|
| 返回值 |
DC模块帧数据传输结果 |
| 备注 |
app_graphics_dc_set_power_state
| 函数原型 |
void app_graphics_dc_set_power_state(graphics_dc_power_state_e state) |
|---|---|
| 功能说明 |
设置DC的工作状态 |
| 输入参数 | state:DC的工作状态,参考graphics_dc_power_state_e |
| 返回值 | |
| 备注 |
app_graphics_dc_freq_set
| 函数原型 |
void app_graphics_dc_freq_set(graphics_dc_clock_freq_e clock_freq) |
|---|---|
| 功能说明 |
设置DC的输出时钟频率 |
| 输入参数 | clock_freq:时钟频率,参考graphics_dc_clock_freq_e |
| 返回值 | |
| 备注 |