CN / EN
文档反馈
感谢关注汇顶文档,期待您的宝贵建议!
感谢您的反馈,祝您愉快!

APP QSPI驱动

宏定义

APP_QSPI_PIN_ENABLE

表 511 APP_QSPI_PIN_ENABLE宏定义
描述

QSPI 引脚使能

1

详细信息请参考文件:SDK_Folder\drivers\inc\app_qspi.h

APP_QSPI_PIN_DISABLE

表 512 APP_QSPI_PIN_DISABLE宏定义
描述

引脚不使能

0

详细信息请参考文件:SDK_Folder\drivers\inc\app_qspi.h

QSPI_MAX_XFER_SIZE_ONCE

表 513 QSPI_MAX_XFER_SIZE_ONCE宏定义
描述
QSPI每次最大传输节拍数

0xFFFCu

详细信息请参考文件:SDK_Folder\drivers\inc\app_qspi.h

DMA_MAX_XFER_SIZE_ONCE

表 514 DMA_MAX_XFER_SIZE_ONCE宏定义
描述

DMA通道每个block最大传输字节数

4095u

详细信息请参考文件:SDK_Folder\drivers\inc\app_qspi.h

APP_STORAGE_RAM_ID

表 515 APP_STORAGE_RAM_ID宏定义
描述
存放在RAM上资源的特殊ID 0xf

详细信息请参考文件:SDK_Folder\drivers\inc\app_qspi.h

QSPI_ASYNC_SCROLL_DRAW_SCREEN_SUPPORT

表 516 QSPI_ASYNC_SCROLL_DRAW_SCREEN_SUPPORT宏定义
描述
支持/不支持在异步模式下用两个独立帧缓冲区绘制整个屏幕

0u:不支持

1u:支持

详细信息请参考文件:SDK_Folder\drivers\inc\app_qspi_user_config.h

QSPI_BLIT_RECT_IMAGE_SUPPORT

表 518 QSPI_BLIT_RECT_IMAGE_SUPPORT宏定义
描述
支持/不支持以DMA LLP/SG方式Blit矩形区域

0u:不支持

1u:支持

详细信息请参考文件:SDK_Folder\drivers\inc\app_qspi_user_config.h

QSPI_DMA_LLP_FEATUTE_SUPPORT

表 519 QSPI_DMA_LLP_FEATUTE_SUPPORT宏定义
描述
是否启用DMA LLP特征 由QSPI_SYNC_SCROLL_DRAW_SCREEN_SUPPORT || QSPI_ASYNC_SCROLL_DRAW_SCREEN_SUPPORT || QSPI_ASYNC_VERI_LINK_DRAW_SCREEN_SUPPORT确定

详细信息请参考文件:SDK_Folder\drivers\inc\app_qspi_user_config.h

DMA_LLP_BLOCKS_FOR_WRITE

表 520 DMA_LLP_BLOCKS_FOR_WRITE宏定义
描述
app_qspi_async_draw_screen每次使用DMA LLP方式写的最大块数量,越大获得更高的速度但花费更多的RAM空间 取值范围16 ~ 64,且是4的倍数

详细信息请参考文件:SDK_Folder\drivers\inc\app_qspi_user_config.h

DMA_LLP_BLOCKS_FOR_BLIT

表 521 DMA_LLP_BLOCKS_FOR_BLIT宏定义
描述
app_qspi_mmap_blit_image每次使用DMA LLP方式传输的最大块数量,越大获得更高的速度但花费更多的RAM空间 取值范围16 ~ 64,且是4的倍数

详细信息请参考文件:SDK_Folder\drivers\inc\app_qspi_user_config.h

结构体

app_qspi_params_t

结构体定义如下:

表 522 app_qspi_params_t结构体成员
成员 描述 取值

app_qspi_id_t id

设置使用的QSPI模块ID

该参数的取值可以是下列值中的任意一个:

  • APP_QSPI_ID_0

  • APP_QSPI_ID_1

  • APP_QSPI_ID_2

app_qspi_pin_cfg_t pin_cfg

引脚配置

参考app_qspi_pin_cfg_t结构体

app_qspi_dma_cfg_t dma_cfg

DMA参数设置

参考app_qspi_dma_cfg_t结构体

qspi_init_t init

初始化结构体

参考qspi_init_t结构体

qspi_env_t qspi_env

仅用于记录初始化设备的句柄、相关参数和信号量等,不需要配置

详细信息请参考文件:SDK_Folder\drivers\inc\app_qspi.h

app_qspi_pin_cfg_t

结构体定义如下:

表 523 app_qspi_pin_cfg_t结构体成员
成员 描述 取值

app_qspi_pin_t cs

片选引脚配置

参考app_qspi_pin_t结构体

app_qspi_pin_t clk

时钟引脚配置

参考app_qspi_pin_t结构体

app_qspi_pin_t io_0

IO0引脚

参考app_qspi_pin_t结构体

app_qspi_pin_t io_1

IO1引脚

参考app_qspi_pin_t结构体

app_qspi_pin_t io_2

IO2引脚

参考app_qspi_pin_t结构体

app_qspi_pin_t io_3

IO3引脚

参考app_qspi_pin_t结构体

详细信息请参考文件:SDK_Folder\drivers\inc\app_qspi.h

app_qspi_pin_t

结构体定义如下:

表 524 app_qspi_pin_t结构体成员
成员 描述 取值

app_io_type_t type

IO类型

app_io_evt_t定义

app_io_mux_t mux

设置IO映射功能

查看app_io_init_t结构体定义,具体取值参考Datasheet中的Pin Mux

uint32_t pin

选择IO引脚

查看app_io_init_t结构体定义,具体取值参考Datasheet中的Pin Mux

app_io_mode_t mode

IO模式配置

APP_IO_MODE_MUX

app_io_pull_t pull

设置IO上拉/下拉/浮空

app_io_init_t结构体中的描述

uint8_t enable

使能/不使能引脚

  • true:使能

  • false:不使能

详细信息请参考文件:SDK_Folder\drivers\inc\app_qspi.h

app_qspi_dma_cfg_t

结构体定义如下:

表 525 app_qspi_dma_cfg_t结构体成员
成员 描述 取值

dma_regs_t * dma_instance

DMA实例

参考app_dma_params_t章节中,DMA实例描述

dma_channel_t dma_channel

DMA通道

参考app_dma_params_t中通道描述

uint32_t wait_timeout_ms

轮询和死机等待的超时时间,仅适用于GR5526

uint32_t extend

扩展段,仅适用于GR5526

暂未使用

详细信息请参考文件:SDK_Folder\drivers\inc\app_qspi.h

app_qspi_command_t

结构体定义如下:

表 526 app_qspi_command_t结构体成员
成员 描述 取值

uint32_t instruction

访问从设备指令

具体根据从设备访问时序确定

uint32_t address

访问从设备地址

具体根据从设备访问时序确定

uint32_t instruction_size

访问指令宽度

该参数的取值可以是下列值中的任意一个:

  • QSPI_INSTSIZE_00_BITS(无指令)

  • QSPI_INSTSIZE_08_BITS(指令宽度8 bits)

  • QSPI_INSTSIZE_16_BITS(指令宽度16 bits)

uint32_t address_size

访问地址宽度

该参数的取值可以是下列值中的任意一个:

  • QSPI_ADDRSIZE_00_BITS(无地址部分)

  • QSPI_ADDRSIZE_08_BITS(地址宽度8 bits)

  • QSPI_ADDRSIZE_16_BITS(地址宽度16 bits)

  • QSPI_ADDRSIZE_24_BITS(地址宽度24 bits)

  • QSPI_ADDRSIZE_32_BITS(地址宽度32 bits)

uint32_t dummy_cycles

等待时钟周期数

0 ~ 31,具体根据从设备时序决定

uint32_t data_size

数据传输宽度

该参数的取值可以是下列值中的任意一个:

  • QSPI_DATASIZE_08_BITS(数据采用8 bits宽度传输)

  • QSPI_DATASIZE_16_BITS(数据采用16 bits宽度传输)

  • QSPI_DATASIZE_32_BITS(数据采用32 bits宽度传输)

uint32_t instruction_address_mode

指令地址发送采用的时序模式

该参数的取值可以是下列值中的任意一个:

  • QSPI_INST_ADDR_ALL_IN_SPI(指令/地址均使用SPI模式传输)

  • QSPI_INST_IN_SPI_ADDR_IN_SPIFRF(指令采用SPI模式传输;地址传输模式由data_mode决定)

  • QSPI_INST_ADDR_ALL_IN_SPIFRF(指令地址的传输模式均由data_mode决定)

uint32_t data_mode

数据传输采用的时序模式

该参数的取值可以是下列值中的任意一个:

  • QSPI_DATA_MODE_SPI(使用SPI模式)

  • QSPI_DATA_MODE_DUALSPI(使用Dual SPI模式)

  • QSPI_DATA_MODE_QUADSPI(使用Quad SPI模式)

uint32_t length

传输数据长度,单位字节,需为data_size的整数倍

最大65535字节

uint32_t clock_stretch_en

是否启用钟摆功能,只对Dual SPI和Quad SPI模式有效

  • true:启用钟摆功能

  • false:不启用钟摆功能

qspi_init_t

结构体定义如下:

表 527 qspi_init_t结构体成员
成员 描述 取值

uint32_t clock_prescaler

基于总线时钟生成QSPI SCLK时钟的分频系数

支持2 ~ 65535之间的偶数

uint32_t clock_mode

时钟极性及相位模式

该参数的取值可以是下列值中的任意一个:

  • QSPI_CLOCK_MODE_0(有效状态为clk处于低电平时,数据采样在第一个边沿)

  • QSPI_CLOCK_MODE_1(有效状态为clk处于低电平时,数据采样在第二个边沿)

  • QSPI_CLOCK_MODE_2(有效状态为clk处于高电平时,数据采样在第一个边沿)

  • QSPI_CLOCK_MODE_3(有效状态为clk处于高电平时,数据采样在第二个边沿)

uint32_t rx_sample_delay

RX输入端口的采样延时,以QSPI SCLK时钟周期为单位,防止频率过高,数据传输错误

0 ~ 0x7

详细信息请参考文件:SDK_Folder\drivers\inc\hal\gr55xx_hal_qspi.h

app_qspi_mmap_device_t

结构体定义如下:

表 528 app_qspi_mmap_device_t结构体成员
成员 描述 取值

app_qspi_device_e dev_type

设备类型

该参数的取值可以是下列值中的任意一个:

  • APP_QSPI_DEVICE_UNSET = 0(无设置)

  • APP_QSPI_DEVICE_FLASH = 1(Flash设备)

  • APP_QSPI_DEVICE_PSRAM = 2(PSRAM设备)

app_qspi_psram_mmap_wr_cmd_e psram_wr

内存映射模式下,PSRAM的写命令

该参数的取值可以是下列值中的任意一个:

  • PSRAM_MMAP_CMD_QWRITE_02H = 0x00

  • PSRAM_MMAP_CMD_QWRITE_38H = 0x01

  • PSRAM_MMAP_CMD_WRITE_MAX

union

{

app_qspi_flash_mmap_rd_cmd_e flash_rd;

app_qspi_psram_mmap_rd_cmd_e psram_rd;

} rd;

  • 读Flash命令;
  • 读PSRAM命令

Flash读命令支持:

  • FLASH_MMAP_CMD_DREAD_3BH = 0x00

  • FLASH_MMAP_CMD_2READ_BBH = 0x01

  • FLASH_MMAP_CMD_QREAD_6BH = 0x03

  • FLASH_MMAP_CMD_4READ_EBH = 0x04

PSRAM读命令支持:

  • PSRAM_MMAP_CMD_QREAD_0BH

  • PSRAM_MMAP_CMD_QREAD_EBH

void * set

保留位

详细信息请参考文件:SDK_Folder\drivers\inc\app_qspi.h

app_qspi_screen_command_t

结构体定义如下:

表 529 app_qspi_screen_command_t结构体成员
成员 描述 取值

uint32_t instruction

刷屏控制命令

0x00 ~ 0xff的8 bits数据

uint32_t leading_address

刷屏前导地址,如0x002C00

0x00000000 ~ 0xffffffff的32 bits地址数据

uint32_t ongoing_address

刷屏跟续地址,如0x003C00

0x00000000 ~ 0xffffffff的32 bits地址数据

uint32_t instruction_size

指定指令的size

根据具体屏幕芯片手册决定,可选值参考QSPI_Instruction_Size

uint32_t address_size

刷屏地址Size

根据具体屏幕芯片手册决定,可选值参考QSPI_Address_Size

uint32_t dummy_cycles

Dummy(Wait) cycles

根据屏幕芯片手册决定,可选值0 ~ 31

uint32_t data_size

数据传输宽度

参考QSPI_Data_Size,支持8/16/32 bits宽度传输

uint32_t instruction_address_mode

指令地址发送的时序模式

该参数的取值可以是下列值中的任意一个:

  • QSPI_INST_ADDR_ALL_IN_SPI(地址/指令均使用单线模式发送)

  • QSPI_INST_IN_SPI_ADDR_IN_SPIFRF(指令使用单线模式发送,地址使用data_mode模式发送)

  • QSPI_INST_ADDR_ALL_IN_SPIFRF (指令/地址均使用data_mode模式发送)

uint32_t data_mode

数据发送模式

该参数的取值可以是下列值中的任意一个:

  • QSPI_DATA_MODE_SPI(数据使用单线模式发送)

  • QSPI_DATA_MODE_DUALSPI(数据使用Dual模式发送)

  • QSPI_DATA_MODE_QUADSPI(数据使用Quad模式发送)

bool is_one_take_cs

是否启用一次性片选发送完所有数据,需要屏幕支持;如果启用,本次所有数据会在一个CS周期内发送完成

  • true:使能

  • false:不使能

详细信息请参考文件:SDK_Folder\drivers\inc\app_qspi.h

app_qspi_evt_t

结构体定义如下:

表 530 app_qspi_evt_t结构体成员
成员 描述 取值

app_qspi_evt_type_t type

QSPI事件类型

该参数的取值可以是下列值中的任意一个:

  • APP_QSPI_EVT_ERROR(QSPI传输错误)

  • APP_QSPI_EVT_TX_CPLT(QSPI发送完成)

  • APP_QSPI_EVT_RX_DATA(QSPI接收完成)

  • APP_QSPI_EVT_ABORT(QSPI中断发送)

  • APP_QSPI_EVT_ASYNC_WR_SCRN_CPLT(QSPI异步传输屏幕数据完成)

  • APP_QSPI_EVT_ASYNC_WR_SCRN_FAIL(QSPI异步传输屏幕数据失败)

union

{

uint32_t error_code;

uint16_t size;

}data;

uint32_t error_code:发送事件返回的错误号

uint16_t size:QSPI已发送的数据长度

说明:

若事件类型为传输错误,此处返回错误码;若事件类型为发送完成,此处显示已发送的数据长度

QSPI错误码:

  • 0:无异常

  • 1:超时错误

  • 2:传输错误

  • 4:DMA错误

  • 5:参数设置异常

详细信息请参考文件:SDK_Folder\drivers\inc\app_qspi.h

app_qspi_screen_info_t

结构体定义如下:

表 531 app_qspi_screen_info_t结构体成员
成员 描述 取值

unsigned int scrn_pixel_width

水平像素,单位:pixel

根据屏幕分辨率决定

unsigned int scrn_pixel_height

垂直像素,单位:pixel

根据屏幕分辨率决定

unsigned int scrn_pixel_depth

像素深度,单位:Byte

根据采用的像素色深决定

详细信息请参考文件:SDK_Folder\drivers\inc\app_qspi.h

blit_image_config_t

结构体定义如下:

表 532 blit_image_config_t结构体成员
成员 描述 取值

uint32_t src_img_address

源对象总线地址,需要4字节对齐

uint32_t src_img_w

源对象像素宽度

uint32_t src_img_h

源对象像素高度

uint32_t src_img_x

源对象拟截取x起始坐标

源对象的左上角为源对象坐标系原点(0,0)

uint32_t src_img_x_delta

源对象拟截取的像素宽度

注意x加x_delta不能超过源对象宽度

uint32_t src_img_y

源对象拟截取y起始坐标

源对象的左上角为源对象坐标系原点(0,0)

uint32_t src_img_y_delta

源对象拟截取的像素高度

注意y加y_delta不能超过源对象高度

uint32_t dst_buff_address

目标对象总线地址,需要4字节对齐

uint32_t dst_buff_width

目标对象像素宽度

uint32_t dst_buff_height

目标对象像素高度

uint32_t dst_buff_x

目标对象待写入x起始坐标

目标对象的左上角为源对象坐标系原点(0,0)

uint32_t dst_buff_y

目标对象待写入y起始坐标

目标对象的左上角为源对象坐标系原点(0,0)

uint32_t pixel_depth

像素深度,以Byte为单位

详细信息请参考文件:SDK_Folder\drivers\inc\app_qspi.h

app_qspi_screen_scroll_t

结构体定义如下:

表 533 app_qspi_screen_scroll_t结构体成员
成员 描述 取值

uint32_t first_frame_start_address

第一帧起始总线地址

  • 如果水平滚动屏幕:第一帧代表左图像

  • 如果垂直滚动屏幕:第一帧代表向上图像

第一帧缓存地址

uint32_t second_frame_start_address

第二帧起始总线地址

  • 如果水平滚动屏幕:第二帧代表右图像

  • 如果垂直滚动屏幕:第二帧代表向下图像

第二帧缓存地址

uint32_t scroll_coordinate

滚动点坐标

  • 如果水平滚动,为x坐标

  • 如果垂直滚动,为y坐标

  • 如果水平滚动,范围为[0, RES_X];取值为0时,只刷第一帧;取值为RES_X时,只刷第二帧;否则左右各出一部分

  • 如果垂直滚动,范围为[0, RES_Y];取值为0时,只刷第一帧;取值为RES_Y时,只刷第二帧;否则上下各出一部分

bool is_horizontal_scroll

是否水平滚动

  • true:水平

  • false:垂直

详细信息请参考文件:SDK_Folder\drivers\inc\app_qspi.h

app_qspi_screen_block_t

表 535 app_qspi_screen_block_t结构体成员
成员 描述 取值

uint32_t frame_ahb_start_address

待刷新屏幕区域的图像块起始地址

uint32_t frame_offset_lines

待刷新屏幕区域的图像块行偏移

uint32_t frame_draw_lines 待刷新屏幕区域的图像块行数量

详细信息请参考文件:SDK_Folder\drivers\inc\app_qspi.h

枚举

app_qspi_id_t

枚举定义如下:

表 536 app_qspi_id_t枚举成员
成员 描述

APP_QSPI_ID_0

QSPI模块0

APP_QSPI_ID_1

QSPI模块1

APP_QSPI_ID_2

QSPI模块2

APP_QSPI_ID_MAX

QSPI模块ID总数,用于参数检查

app_qspi_evt_type_t

枚举定义如下:

表 537 app_qspi_evt_type_t枚举成员
成员 描述

APP_QSPI_EVT_ERROR

QSPI传输错误

APP_QSPI_EVT_TX_CPLT

QSPI发送完成

APP_QSPI_EVT_RX_DATA

QSPI接收完成

APP_QSPI_EVT_ABORT

QSPI中断发送

APP_QSPI_EVT_ASYNC_WR_SCRN_CPLT

QSPI异步传输Quad屏幕数据完成

APP_QSPI_EVT_ASYNC_WR_SCRN_FAIL

QSPI异步传输Quad屏幕数据失败

详细信息请参考文件:SDK_Folder\drivers\inc\app_qspi.h

app_qspi_mmap_endian_mode_e

枚举定义如下:

表 538 app_qspi_mmap_endian_mode_e枚举成员
成员 描述

APP_QSPI_MMAP_ENDIAN_MODE_0 = 0

QSPI内存映射字节存储次序模式0

APP_QSPI_MMAP_ENDIAN_MODE_1

QSPI内存映射字节存储次序模式1

APP_QSPI_MMAP_ENDIAN_MODE_2

QSPI内存映射字节存储次序模式2

详细信息请参考文件:SDK_Folder\drivers\inc\app_qspi.h

说明:

该枚举仅适用于GR5526,每个模式对应的字节存储次序请参考GR5526 GPU开发者指南

app_qspi_device_e

枚举定义如下:

表 539 app_qspi_device_e枚举成员
成员 描述

APP_QSPI_DEVICE_UNSET = 0

QSPI设备类型未设置

APP_QSPI_DEVICE_FLASH = 1

Flash设备

APP_QSPI_DEVICE_PSRAM = 2

PSRAM设备

详细信息请参考文件:SDK_Folder\drivers\inc\app_qspi.h

app_qspi_psram_mmap_wr_cmd_e

枚举定义如下:

表 540 app_qspi_psram_mmap_wr_cmd_e枚举成员
成员 描述

PSRAM_MMAP_CMD_QWRITE_02H = 0x00

Quad模式写0x02H指令

PSRAM_MMAP_CMD_QWRITE_38H = 0x01

Quad模式写0x38H指令

PSRAM_MMAP_CMD_WRITE_MAX

Quad模式写指令个数,仅用于参数检查

详细信息请参考文件:SDK_Folder\drivers\inc\app_qspi.h

app_qspi_psram_mmap_rd_cmd_e

枚举定义如下:

表 541 app_qspi_psram_mmap_rd_cmd_e枚举成员
成员 描述

PSRAM_MMAP_CMD_QREAD_0BH = 0x00

Quad读0x0B指令

PSRAM_MMAP_CMD_QREAD_EBH = 0x01

Quad读0xEB指令

PSRAM_MMAP_CMD_READ_MAX

Quad模式读指令个数,仅用于参数检查

详细信息请参考文件:SDK_Folder\drivers\inc\app_qspi.h

app_qspi_flash_mmap_rd_cmd_e

枚举定义如下:

表 542 app_qspi_flash_mmap_rd_cmd_e枚举成员
成员 描述

FLASH_MMAP_CMD_DREAD_3BH = 0x00

Flash Dual读0x3B指令

FLASH_MMAP_CMD_2READ_BBH = 0x01

Flash Dual读0xBB指令

FLASH_MMAP_CMD_2READ_BBH_SIOO = 0x02

Flash Dual读0xBB指令,以SIO0模式

FLASH_MMAP_CMD_QREAD_6BH = 0x03

Flash Quad读0x6B指令

FLASH_MMAP_CMD_4READ_EBH = 0x04

Flash Quad读0xEB指令

FLASH_MMAP_CMD_4READ_EBH_SIOO = 0x05

Flash Quad读0xEB指令,以SIO0模式

FLASH_MMAP_CMD_READ_MAX

Flash读命令总数,用于参数检查

详细信息请参考文件:SDK_Folder\drivers\inc\app_qspi.h

qspi_pins_group_e

枚举定义如下:

表 543 qspi_pins_group_e枚举成员
成员 描述

QSPI0_PIN_GROUP_0 = 0x00

指定使用QSPI0的Pin引脚组

QSPI1_PIN_GROUP_0 = 0x01

指定使用QSPI1的Pin引脚组

QSPI2_PIN_GROUP_0 = 0x02

指定使用QSPI2的Pin引脚组

QSPIx_PIN_GROUP_MAX

Pin引脚总数,用于参数检查

详细信息请参考文件:SDK_Folder\drivers\inc\app_qspi.h

app_qspi_dma_state_t

枚举定义如下:

表 544 app_qspi_dma_state_t枚举成员
成员 描述
APP_QSPI_DMA_INVALID QSPI DMA不可用
APP_QSPI_DMA_ACTIVITY QSPI DMA激活

详细信息请参考文件:SDK_Folder\drivers\inc\app_qspi.h

app_qspi_state_t

枚举定义如下:

表 545 app_qspi_state_t枚举成员
成员 描述

APP_QSPI_INVALID = 0

QSPI不可用

APP_QSPI_ACTIVITY = 1

QSPI激活

APP_QSPI_SLEEP = 2

QSPI睡眠

详细信息请参考文件:SDK_Folder\drivers\inc\app_qspi.h

blit_xfer_type_e

枚举定义如下:

表 546 blit_xfer_type_e枚举成员
成员 描述

BLIT_BY_DMA_SG = 0

使用Scatter&Gather方式

BLIT_BY_DMA_LLP = 1

使用LLP方式

详细信息请参考文件:SDK_Folder\drivers\inc\app_qspi.h

接口函数

表 547 QSPI驱动接口函数
API 芯片
GR551x GR5526 GR5x25 GR533x GR5405

app_qspi_init

Y

Y

Y N N

app_qspi_deinit

Y

Y

Y N N

app_qspi_abort

Y

Y

Y N N

app_qspi_config_memory_mappped

N

Y

Y N N

app_qspi_active_memory_mappped

N

Y

Y N N

app_qspi_command_receive_sync

Y

Y

Y N N

app_qspi_command_receive_async

Y

Y

Y N N

app_qspi_command_transmit_sync

Y

Y

Y N N

app_qspi_command_transmit_async

Y

Y

Y N N

app_qspi_command_sync

Y

Y

Y N N

app_qspi_command_async

Y

Y

Y N N

app_qspi_transmit_sync

Y

N

N N N

app_qspi_transmit_async

Y

N

N N N

app_qspi_receive_sync

Y

N

N

N N

app_qspi_receive_async

Y

N

N N N

app_qspi_transmit_sync_ex

Y

Y

Y N N

app_qspi_transmit_async_ex

Y

Y

Y N N

app_qspi_receive_sync_ex

Y

Y

Y N N

app_qspi_receive_async_ex

Y

Y

Y N N

app_qspi_mmap_set_endian_mode

N

Y

Y N N

app_qspi_mmap_read_u8

N

Y

Y N N

app_qspi_mmap_read_u16

N

Y

Y N N

app_qspi_mmap_read_u32

N

Y

Y N N

app_qspi_mmap_read_block

N

Y

Y N N
app_qspi_get_xip_base_address N Y Y N N

app_qspi_transmit_in_qpi_async

Y

N

N N N

app_qspi_get_handle

Y

Y

Y N N

app_qspi_init

表 548 app_qspi_init接口
函数原型

uint16_t app_qspi_init(app_qspi_params_t *p_params, app_qspi_evt_handler_t evt_handler)

功能说明

初始化QSPI

输入参数
  • p_params:初始化参数的结构体指针

  • evt_handler:用户自己实现的中断回调函数

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

回调函数形式参照typedef void (*app_qspi_evt_handler_t)(app_qspi_evt_t *p_evt);

HAL层已经实现中断标志位的清理,用户无需关心中断标志的清理,回调函数根据返回事件类型进行相应的处理即可

app_qspi_deinit

表 549 app_qspi_deinit接口
函数原型

uint16_t app_qspi_deinit(app_qspi_id_t id)

功能说明

反初始化QSPI

输入参数

id:QSPI模块ID(详见app_qspi_params_t中描述)

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

app_qspi_abort

表 550 app_qspi_abort接口
函数原型

uint16_t app_qspi_abort(app_qspi_id_t id)

功能说明

中止QSPI传输

输入参数

id:QSPI模块ID(详见app_qspi_params_t中描述)

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

app_qspi_config_memory_mappped

表 551 app_qspi_config_memory_mappped接口
函数原型

bool app_qspi_config_memory_mappped(app_qspi_id_t id, app_qspi_mmap_device_t dev);

功能说明

主要用于块数据的发送

输入参数
  • id:QSPI 模块ID
  • dev:内存映射模式设备配置
返回值

true/false

备注

app_qspi_active_memory_mappped

表 552 app_qspi_active_memory_mappped接口
函数原型

bool app_qspi_active_memory_mappped(app_qspi_id_t id, bool is_active)

功能说明

使能/不使能内存映射模式

输入参数
  • id:QSPI模块ID(详见app_qspi_params_t中描述)

  • is_active:
    • true:使能

    • false:不使能

返回值
  • true:使能/不使能成功
  • false:使能/不使能失败
备注

app_qspi_command_receive_sync

表 553 app_qspi_command_receive_sync接口
函数原型

uint16_t app_qspi_command_receive_sync(app_qspi_id_t id, app_qspi_command_t *p_cmd, uint8_t *p_data, uint32_t timeout)

功能说明

QSPI轮询方式(同步)读取数据,带控制命令封装

输入参数
  • id:QSPI模块ID

  • p_cmd:封装的控制命令,参考app_qspi_command_t结构体描述

  • p_data:读取数据存放的buffer

  • timeout:超时时间,以ms为单位

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

app_qspi_command_receive_async

表 554 app_qspi_command_receive_async接口
函数原型

uint16_t app_qspi_command_receive_async(app_qspi_id_t id, app_qspi_command_t *p_cmd, uint8_t *p_data)

功能说明

QSPI中断方式(异步)读取数据,带控制命令封装

输入参数
  • id:QSPI模块ID

  • p_cmd:封装的控制命令,参考app_qspi_command_t结构体描述

  • p_data:读取数据存放的buffer

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

app_qspi_command_transmit_sync

表 555 app_qspi_command_transmit_sync接口
函数原型

uint16_t app_qspi_command_transmit_sync(app_qspi_id_t id, app_qspi_command_t *p_cmd, uint8_t *p_data, uint32_t timeout)

功能说明

QSPI轮询方式(同步)发送数据,带控制命令封装

输入参数
  • id:QSPI模块ID

  • p_cmd:封装的控制命令,参考app_qspi_command_t结构体描述

  • p_data:待发送数据存放的buffer

  • timeout:超时时间,以ms为单位

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

app_qspi_command_transmit_async

表 556 app_qspi_command_transmit_async接口
函数原型

uint16_t app_qspi_command_transmit_async(app_qspi_id_t id, app_qspi_command_t *p_cmd, uint8_t *p_data)

功能说明

QSPI中断方式(异步)发送数据,带控制命令封装

输入参数
  • id:QSPI模块ID

  • p_cmd:封装的控制命令,参考app_qspi_command_t结构体描述

  • p_data:待发送数据存放的buffer

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

app_qspi_command_sync

表 557 app_qspi_command_sync接口
函数原型

uint16_t app_qspi_command_sync(app_qspi_id_t id, app_qspi_command_t *p_cmd, uint32_t timeout)

功能说明

QSPI轮询方式(同步)发送命令

输入参数
  • id:QSPI模块ID

  • p_cmd:待发送命令的buffer

  • timeout:超时时间,以ms为单位

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

app_qspi_command_async

表 558 app_qspi_command_async接口
函数原型

uint16_t app_qspi_command_async(app_qspi_id_t id, app_qspi_command_t *p_cmd)

功能说明

QSPI中断方式(异步)发送命令

输入参数
  • id:QSPI模块ID

  • p_cmd:待发送命令的buffer

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

app_qspi_transmit_sync

表 559 app_qspi_transmit_sync接口
函数原型

uint16_t app_qspi_transmit_sync(app_qspi_id_t id, uint8_t *p_data, uint32_t length, uint32_t timeout)

功能说明

QSPI轮询方式(同步)发送数据

输入参数
  • id:QSPI模块ID

  • p_data:需要发送数据的buffer

  • length:发送数据的长度,以Byte为单位

  • timeout:超时时间,以ms为单位

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注 该函数仅适用于GR551x

app_qspi_transmit_async

表 560 app_qspi_transmit_async接口
函数原型

uint16_t app_qspi_transmit_async(app_qspi_id_t id, uint8_t *p_data, uint32_t length)

功能说明

QSPI中断方式(异步)发送数据

输入参数
  • id:QSPI模块ID

  • p_data:需要发送数据的buffer

  • length:待发送数据的长度,以Byte为单位

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注 该函数仅适用于GR551x

app_qspi_receive_sync

表 561 app_qspi_receive_sync接口
函数原型

uint16_t app_qspi_receive_sync(app_qspi_id_t id, uint8_t *p_data, uint32_t length, uint32_t timeout)

功能说明

QSPI轮询方式(同步)接收数据

输入参数
  • id:QSPI模块ID

  • p_data:接收数据的buffer

  • length:接收数据的长度,以Byte为单位

  • timeout:超时时间,以ms为单位

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注 该函数仅适用于GR551x

app_qspi_receive_async

表 562 app_qspi_receive_async接口
函数原型

uint16_t app_qspi_receive_async(app_qspi_id_t id, uint8_t *p_data, uint32_t length)

功能说明

QSPI中断方式(异步)接收数据

输入参数
  • id:QSPI模块ID

  • p_data:接收数据的buffer

  • length:接收数据的长度,以Byte为单位

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注 该函数仅适用于GR551x

app_qspi_transmit_sync_ex

表 563 app_qspi_transmit_sync_ex接口
函数原型

uint16_t app_qspi_transmit_sync_ex(app_qspi_id_t id, uint32_t qspi_mode, uint32_t data_width, uint8_t *p_data, uint32_t length, uint32_t timeout)

功能说明

QSPI轮询方式(同步)发送数据,可设置时序模式和传输数据位宽

输入参数
  • id:QSPI模块ID(详见app_qspi_params_t中描述)

  • qspi_mode:数据传输采用的时序模式,可选QSPI_DATA_MODE_SPI(标准SPI模式)、QSPI_DATA_MODE_DUALSPI(Dual SPI模式)、QSPI_DATA_MODE_QUADSPI(Quad SPI模式)
  • data_width:数据位宽(支持QSPI_DATASIZE_08_BITS、QSPI_DATASIZE_16_BITS、QSPI_DATASIZE_32_BITS)

  • p_data:需要传输数据的buffer

  • length:待发送数据的长度,以Byte为单位

  • timeout:超时时间,以ms为单位

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注 GR551x使用该函数时,qspi_mode和data_width无意义

app_qspi_transmit_async_ex

表 564 app_qspi_transmit_async_ex接口
函数原型

uint16_t app_qspi_transmit_async_ex(app_qspi_id_t id, uint32_t qspi_mode, uint32_t data_width, uint8_t *p_data, uint32_t length)

功能说明

QSPI中断方式(异步)发送数据,可设置时序模式和传输数据位宽

输入参数
  • id:QSPI模块ID(详见app_qspi_params_t中描述)

  • qspi_mode:数据传输采用的时序模式,可选QSPI_DATA_MODE_SPI(标准SPI模式)、QSPI_DATA_MO DE_DUALSPI(Dual SPI模式)、QSPI_DATA_MODE_QUADSPI(Quad SPI模式)

  • data_width:数据位宽(支持QSPI_DATASIZE_08_BITS、QSPI_DATASIZE_16_BITS、QSPI_DATASIZE_32_BITS)

  • p_data:需要发送数据的buffer

  • length:待发送数据的长度,以Byte为单位

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注 当GR551x使用该函数时,qspi_mode和data_width无意义

app_qspi_receive_sync_ex

表 565 app_qspi_receive_sync_ex接口
函数原型

uint16_t app_qspi_receive_sync_ex(app_qspi_id_t id, uint32_t qspi_mode, uint32_t data_width, uint8_t *p_data, uint32_t length , uint32_t timeout, uint32_t timeout)

功能说明

QSPI轮询方式(同步)接收数据,可设置时序模式和传输数据位宽

输入参数
  • id:QSPI模块ID(详见app_qspi_params_t中描述)

  • qspi_mode:数据传输采用的时序模式,可选QSPI_DATA_MODE_SPI(标准SPI模式)、QSPI_DATA_MO DE_DUALSPI(Dual SPI模式)、QSPI_DATA_MODE_QUADSPI(Quad SPI模式)

  • data_width:传输数据位宽(支持QSPI_DATASIZE_08_BITS、QSPI_DATASIZE_16_BITS、QSPI_DATASIZE_32_BITS)

  • p_data:需要接收数据的buffer

  • length:待接收数据的长度,以Byte为单位

  • timeout:超时时间,以ms为单位

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注 当GR551x使用该函数时,qspi_mode和data_width无意义

app_qspi_receive_async_ex

表 566 app_qspi_receive_async_ex接口
函数原型

uint16_t app_qspi_receive_async_ex(app_qspi_id_t id, uint32_t qspi_mode, uint32_t data_width, uint8_t *p_data, uint32_t length)

功能说明

QSPI中断方式(异步)接收数据,可设置时序模式和传输数据位宽

输入参数
  • id:QSPI模块ID(详见app_qspi_params_t中描述)

  • qspi_mode:数据传输采用的时序模式,可选QSPI_DATA_MODE_SPI(标准SPI模式)、QSPI_DATA_MO DE_DUALSPI(Dual SPI模式)、QSPI_DATA_MODE_QUADSPI(Quad SPI模式)

  • data_width:传输数据位宽(支持QSPI_DATASIZE_08_BITS、QSPI_DATASIZE_16_BITS、QSPI_DATASIZE_32_BITS)

  • p_data:需要接收数据的buffer

  • length:待接收数据的长度,以Byte为单位

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注 当GR551x使用该函数时,qspi_mode和data_width无意义

app_qspi_mmap_set_endian_mode

表 567 app_qspi_mmap_set_endian_mode接口
函数原型

bool app_qspi_mmap_set_endian_mode(app_qspi_id_t id, app_qspi_mmap_endian_mode_e mode)

功能说明

设置内存映射模式下的端序模式

输入参数
返回值
  • true:设置成功
  • false:设置失败
备注

app_qspi_mmap_read_u8

表 568 app_qspi_mmap_read_u8接口
函数原型

uint8_t app_qspi_mmap_read_u8(app_qspi_id_t id, uint32_t address)

功能说明

内存映射模式下,读取U8数据,用于Flash/PSRAM设备

输入参数
  • id:QSPI模块ID(详见app_qspi_params_t中描述)

  • address:待访问设备的偏移地址(Flash/PSRAM)

返回值

读取的数据

备注

app_qspi_mmap_read_u16

表 569 app_qspi_mmap_read_u16接口
函数原型

uint16_t app_qspi_mmap_read_u16(app_qspi_id_t id, uint32_t address)

功能说明

内存映射模式下,读取U16数据,用于Flash/PSRAM设备

输入参数
  • id:QSPI模块ID(详见app_qspi_params_t中描述)

  • address:待访问设备的偏移地址(Flash/PSRAM)

返回值

读取的数据

备注

app_qspi_mmap_read_u32

表 570 app_qspi_mmap_read_u32接口
函数原型

uint32_t app_qspi_mmap_read_u32(app_qspi_id_t id, uint32_t address)

功能说明

内存映射模式下,读取U32数据,用于Flash/PSRAM设备

输入参数
  • id:QSPI模块ID(详见app_qspi_params_t中描述)

  • address:待访问设备的偏移地址(Flash/PSRAM)

返回值

读取的数据

备注

app_qspi_mmap_read_block

表 571 app_qspi_mmap_read_block接口
函数原型

bool app_qspi_mmap_read_block(app_qspi_id_t id, uint32_t address, uint8_t * buffer, uint32_t length)

功能说明

内存映射模式下读取一个数据块

输入参数
  • id:QSPI模块ID(详见app_qspi_params_t中描述)

  • address:待访问设备的偏移地址(Flash/PSRAM)

  • buffer:读取数据存放的缓存指针
  • length:读取数据长度,以Byte为单位

返回值
  • true:成功

  • false:失败

备注

app_qspi_get_xip_base_address

表 572 app_qspi_get_xip_base_address接口
函数原型 uint32_t app_qspi_get_xip_base_address(app_qspi_id_t id)
功能说明 获取QSPI内存映射在系统总线的基地址
输入参数 id:QSPI模块ID
返回值 QSPI内存映射在系统总线的基地址
备注

app_qspi_transmit_in_qpi_async

表 573 app_qspi_transmit_in_qpi_async接口
函数原型

uint16_t app_qspi_transmit_in_qpi_async(app_qspi_id_t id, uint32_t data_width, uint8_t *p_data, uint32_t length)

功能说明

QSPI在QPI模式下中断方式(异步)发送数据

输入参数
  • id:QSPI模块ID

  • data_width:数据位宽(支持QSPI_DATASIZE_08_BITS、QSPI_DATASIZE_16_BITS、QSPI_DATASIZE_32_BITS)

  • p_data:需要发送数据的buffer

  • length:待发送数据的长度,以Byte为单位

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

仅适用于GR551x

app_qspi_get_handle

表 574 app_qspi_get_handle接口
函数原型

qspi_handle_t *app_qspi_get_handle(app_qspi_id_t id)

功能说明

获取QSPI句柄

输入参数

id:QSPI模块ID

返回值

QSPI句柄:参考SDK_Folder\drivers\inc\gr55xx_hal_qspi.h

备注

DMA接口函数

表 575 DMA接口函数
API 芯片
GR551x GR5526 GR5x25 GR533x GR5405

app_qspi_dma_init

Y

Y

Y N N

app_qspi_dma_deinit

Y

Y

Y N N

app_qspi_dma_command_receive_async

Y

Y

Y N N

app_qspi_dma_command_transmit_async

Y

Y

Y N N

app_qspi_dma_command_async

Y

Y

Y N N

app_qspi_dma_transmit_async

Y

N

N N N

app_qspi_dma_receive_async

Y

N

N N N

app_qspi_dma_transmit_in_qpi_async

Y

N

N N N

app_qspi_dma_transmit_async_ex

Y

Y

Y N N

app_qspi_dma_receive_async_ex

Y

Y

Y N N

app_qspi_dma_mmap_read_block

N

Y

Y N N

app_qspi_async_draw_screen

N

Y

Y N N

app_qspi_async_veri_draw_screen

N

Y

Y N N

app_qspi_mmap_blit_image

N

Y

Y N N
app_qspi_async_llp_draw_block N Y Y N N

app_qspi_dma_init

表 576 app_qspi_dma_init接口
函数原型

uint16_t app_qspi_dma_init(app_qspi_params_t *p_params)

功能说明

初始化QSPI DMA模式

输入参数

p_params:初始化参数的结构体指针

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

app_qspi_dma_deinit

表 577 app_qspi_dma_deinit接口
函数原型

uint16_t app_qspi_dma_deinit(app_qspi_id_t id)

功能说明

反初始化QSPI DMA模式

输入参数

id:QSPI模块ID(详见app_qspi_params_t中描述)

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

app_qspi_dma_command_receive_async

表 578 app_qspi_dma_command_receive_async接口
函数原型

uint16_t app_qspi_dma_command_receive_async(app_qspi_id_t id, app_qspi_command_t *p_cmd, uint8_t *p_data)

功能说明

QSPI以DMA方式(异步)读取数据,带控制命令封装

输入参数
  • id:QSPI模块ID

  • p_cmd:封装的控制命令,参考app_qspi_command_t结构体描述

  • p_data:读取数据存放的buffer

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

app_qspi_dma_command_transmit_async

表 579 app_qspi_dma_command_transmit_async接口
函数原型

uint16_t app_qspi_dma_command_transmit_async(app_qspi_id_t id, app_qspi_command_t *p_cmd, uint8_t *p_data)

功能说明

QSPI以DMA方式(异步)发送数据,带控制命令封装

输入参数
  • id:QSPI模块ID

  • p_cmd:封装的控制命令,参考app_qspi_command_t结构体描述

  • p_data:待发送数据存放的buffer

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

app_qspi_dma_command_async

表 580 app_qspi_dma_command_async接口
函数原型

uint16_t app_qspi_dma_command_async(app_qspi_id_t id, app_qspi_command_t *p_cmd)

功能说明

QSPI以DMA方式(异步)发送命令

输入参数
  • id:QSPI模块ID

  • p_cmd:待发送命令的buffer

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

app_qspi_dma_transmit_async

表 581 app_qspi_dma_transmit_async接口
函数原型

uint16_t app_qspi_dma_transmit_async(app_qspi_id_t id, uint8_t *p_data, uint32_t length)

功能说明

QSPI以DMA方式(异步)发送数据

输入参数
  • id:QSPI模块ID

  • p_data:需要发送数据的buffer

  • length:待发送数据的长度,以Byte为单位

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注 仅适用于GR551x

app_qspi_dma_receive_async

表 582 app_qspi_dma_receive_async接口
函数原型

uint16_t app_qspi_dma_receive_async(app_qspi_id_t id, uint8_t *p_data, uint32_t length)

功能说明

QSPI以DMA方式(异步)接收数据

输入参数
  • id:QSPI模块ID

  • p_data:接收数据的buffer

  • length:接收数据的长度,以Byte为单位

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注 仅适用于GR551x

app_qspi_dma_transmit_in_qpi_async

表 583 app_qspi_dma_transmit_in_qpi_async接口
函数原型

uint16_t app_qspi_dma_transmit_in_qpi_async(app_qspi_id_t id, uint32_t data_width, uint8_t *p_data, uint32_t length)

功能说明

QSPI在QPI模式下以DMA方式(异步)发送数据

输入参数
  • id:QSPI模块ID

  • data_width:数据宽度(支持QSPI_DATASIZE_08_BITS、QSPI_DATASIZE_16_BITS、QSPI_DATASIZE_32_BITS)

  • p_data:需要发送数据的buffer

  • length:待发送数据的长度,以Byte为单位

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

仅适用于GR551x

app_qspi_dma_receive_async_ex

表 584 app_qspi_dma_receive_async_ex接口
函数原型

uint16_t app_qspi_dma_receive_async_ex(app_qspi_id_t id, uint32_t qspi_mode, uint32_t data_width, uint8_t *p_data, uint32_t length)

功能说明

QSPI以DMA方式(异步)接收数据,可设置时序模式和数据位宽

输入参数
  • id:QSPI模块ID(详见app_qspi_params_t中描述)

  • qspi_mode:数据传输采用的时序模式,可选QSPI_DATA_MODE_SPI(标准SPI模式)、QSPI_DATA_MO DE_DUALSPI(Dual SPI模式)、QSPI_DATA_MODE_QUADSPI(Quad SPI模式)

  • data_width:传输数据位宽(支持QSPI_DATASIZE_08_BITS、QSPI_DATASIZE_16_BITS、QSPI_DATASIZE_32_BITS)

  • p_data:需要接收数据的buffer

  • length:待接收数据的长度,以Byte为单位

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注 当GR551x使用该函数时,qspi_mode和data_width无意义

app_qspi_dma_transmit_async_ex

表 585 app_qspi_dma_transmit_async_ex接口
函数原型

uint16_t app_qspi_dma_transmit_async_ex(app_qspi_id_t id, uint32_t qspi_mode, uint32_t data_width, uint8_t *p_data, uint32_t length)

功能说明

QSPI以DMA方式(异步)发送数据,可设置时序模式和数据位宽

输入参数
  • id:QSPI模块ID(详见app_qspi_params_t中描述)

  • qspi_mode:数据传输采用的时序模式,可选QSPI_DATA_MODE_SPI(标准SPI模式)、QSPI_DATA_MO DE_DUALSPI(Dual SPI模式)、QSPI_DATA_MODE_QUADSPI(Quad SPI模式)

  • data_width:传输数据位宽(支持QSPI_DATASIZE_08_BITS、QSPI_DATASIZE_16_BITS、QSPI_DATASIZE_32_BITS)

  • p_data:需要发送数据的buffer

  • length:待发送数据的长度,以Byte为单位

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注 当GR551x使用该函数时,qspi_mode和data_width无意义

app_qspi_dma_mmap_read_block

表 586 app_qspi_dma_mmap_read_block接口
函数原型

bool app_qspi_dma_mmap_read_block(app_qspi_id_t id, uint32_t address, uint8_t * buffer, uint32_t length)

功能说明

内存映射模式下DMA方式(异步)读取一个数据块,数据按Flash/PSRAM设备的顺序排序

输入参数
  • id:QSPI模块ID(详见app_qspi_params_t中描述)

  • address:待访问设备的偏移地址(Flash/PSRAM)

  • length:读取数据长度,以Byte为单位

返回值
  • true:成功

  • false:失败

备注

驱屏接口单独抽离在SDK_Folder\drivers\inc\app_graphics_qspi.h

app_qspi_async_draw_screen

表 587 app_qspi_async_draw_screen接口
函数原型

bool app_qspi_async_draw_screen(app_qspi_id_t screen_id, app_qspi_id_t storage_id, const app_qspi_screen_command_t * const p_screen_cmd, const app_qspi_screen_info_t * const p_screen_info, app_qspi_screen_scroll_t * p_scroll_config, bool is_first_call)

功能说明

异步刷屏专用接口

输入参数
  • screen_id:屏幕ID

  • storage_id:指定素材所在的QSPI存储器ID

  • p_screen_cmd:指向刷屏控制命令的指针

  • p_screen_info:屏幕信息

  • p_scroll_config:屏幕滚动控制信息

  • is_first_call:用户前台调用请设置为true

返回值
  • true:成功

  • false:失败

备注
  • 如果图片素材不是在QSPI设备上,storage_id需设定为APP_STORAGE_RAM_ID
  • storage_id和screen_id不能相同
  • 入参p_screen_info的scrn_pixel_depth只能设为2,即该接口只能处理16 bits的显示输出
  • 驱屏接口单独抽离在SDK_Folder\drivers\inc\app_graphics_qspi.h

app_qspi_async_veri_draw_screen

表 588 app_qspi_async_veri_draw_screen接口
函数原型

bool app_qspi_async_veri_draw_screen(app_qspi_id_t screen_id, app_qspi_id_t storage_id, const app_qspi_screen_command_t * const p_screen_cmd, const app_qspi_screen_info_t * const p_screen_info, app_qspi_screen_veri_link_scroll_t * p_link_scroll, bool is_first_call)

功能说明

异步链式刷屏专用接口(垂直链)

输入参数
  • screen_id:屏幕ID

  • storage_id:指定素材所在的QSPI存储器ID

  • p_screen_cmd:指向刷屏控制命令的指针

  • p_screen_info:屏幕信息

  • p_link_scroll:链式滚动参数配置

  • is_first_call:用户前台调用请设置为true

返回值
  • true:成功

  • false:失败

备注
  • 如果图片素材不是在QSPI设备上,storage_id需设定为APP_STORAGE_RAM_ID
  • storage_id和screen_id不能相同
  • 入参p_screen_info的scrn_pixel_depth只能设为2,即该接口只能处理16 bits的显示输出
  • 驱屏接口单独抽离在SDK_Folder\drivers\inc\app_graphics_qspi.h

app_qspi_mmap_blit_image

表 589 app_qspi_mmap_blit_image接口
函数原型

bool app_qspi_mmap_blit_image(app_qspi_id_t storage_id, blit_image_config_t * p_blit_config, blit_xfer_type_e xfer_type)

功能说明

使用DMA进行二维数据搬运接口

输入参数
  • storage_id:指定素材所在的QSPI存储器ID

  • p_blit_config:Blit传输配置

  • xfer_type:传输类型,支持SG和LLP

返回值
  • true:成功
  • false:失败
备注
  • 驱屏接口单独抽离在SDK_Folder\drivers\inc\app_graphics_qspi.h
  • 使用该接口,需要把app_qspi_user_config.h中的宏定义QSPI_BLIT_RECT_IMAGE_SUPPORT设为大于0的值(默认为0)

app_qspi_async_llp_draw_block

表 590 app_qspi_async_llp_draw_block接口
函数原型

bool app_qspi_async_llp_draw_block(app_qspi_id_t screen_id,

app_qspi_id_t storage_id,

const app_qspi_screen_command_t *const p_screen_cmd,

const app_qspi_screen_info_t *const p_screen_info,

app_qspi_screen_block_t *p_block_info,

bool is_first_call)

功能说明 使用DMA-LLP(DMA链式)方式刷新屏幕的块区域,链表的节点为待刷新图像数据块的每行数据
输入参数
  • screen_id:屏幕ID
  • storage_id:指定素材所在的QSPI存储器ID
  • p_screen_cmd:指向刷屏控制命令的指针
  • p_screen_info:屏幕信息
  • p_block_info:刷屏的图像区域块
  • is_first_call:是否第一次调用,第一次调用设置为true(设置为true表明一帧图像的开始,需要发送命令字节)
返回值
  • true:成功
  • false:失败
备注
  • 当传输结束,会产生APP_QSPI_EVT_TX_CPLT事件
  • 驱屏接口单独抽离在SDK_Folder\drivers\inc\app_graphics_qspi.h

示例工程

QSPI

示例工程实现了对外接Flash的擦除和读写,工程路径:SDK_Folder\projects\peripheral\qspi\app_qspi

流程图

图 32 QSPI实现Flash的擦除和读写流程图

初始化参数

static app_qspi_params_t g_qspi_params = {
    .id = QSPI_ID,
    .pin_cfg = {
        .cs = {
            .type   = APP_FLASH_CS_IO_TYPE,
            .mux    = APP_FLASH_GPIO_MUX,
            .pin    = APP_FLASH_CS_PIN,
            .mode   = APP_IO_MODE_MUX,
            .pull   = APP_IO_PULLUP,
            .enable = APP_QSPI_PIN_ENABLE,
        },
        .clk = {
            .type   = APP_FLASH_CLK_IO_TYPE,
            .mux    = APP_FLASH_GPIO_MUX,
            .pin    = APP_FLASH_CLK_PIN,
            .mode   = APP_IO_MODE_MUX,
            .pull   = APP_IO_PULLUP,
            .enable = APP_QSPI_PIN_ENABLE,
        },
        .io_0 = {
            .type   = APP_FLASH_IO0_IO_TYPE,
            .mux    = APP_FLASH_GPIO_MUX,
            .pin    = APP_FLASH_IO0_PIN,
            .mode   = APP_IO_MODE_MUX,
            .pull   = APP_IO_PULLUP,
            .enable = APP_QSPI_PIN_ENABLE,
        },
        .io_1 = {
            .type   = APP_FLASH_IO1_IO_TYPE,
            .mux    = APP_FLASH_GPIO_MUX,
            .pin    = APP_FLASH_IO1_PIN,
            .mode   = APP_IO_MODE_MUX,
            .pull   = APP_IO_PULLUP,
            .enable = APP_QSPI_PIN_ENABLE,
        },
        .io_2 = {
            .type   = APP_FLASH_IO2_IO_TYPE,
            .mux    = APP_FLASH_GPIO_MUX,
            .pin    = APP_FLASH_IO2_PIN,
            .mode   = APP_IO_MODE_MUX,
            .pull   = APP_IO_PULLUP,
            .enable = APP_QSPI_PIN_ENABLE,
        },
        .io_3 = {
            .type   = APP_FLASH_IO3_IO_TYPE,
            .mux    = APP_FLASH_GPIO_MUX,
            .pin    = APP_FLASH_IO3_PIN,
            .mode   = APP_IO_MODE_MUX,
            .pull   = APP_IO_PULLUP,
            .enable = APP_QSPI_PIN_ENABLE,
        },
    },
    .dma_cfg = {
        .dma_instance = QSPI_USED_DMA,
        .dma_channel  = DMA_Channel0,
    },
    .init = {
        .clock_mode      = QSPI_TIMING_MODE,
        .clock_prescaler = QSPI_CLOCK_PRESCALER,
        .rx_sample_delay = QSPI_RX_SAMPLE_DELAY,
    },
};
  • id:QSPI使用的ID选择QSPI_ID,选择的具体ID请参见board_SK.h
  • pin_cfg:QSPI引脚配置,包含时钟引脚clk、片选引脚cs、数据引脚io0 ~ io3,配置引脚IO类型,PIN脚,复用模式和上下拉模式,是否使能,具体引脚参数定义请参见board_SK.h
  • dma_cfg:DMA参数配置

    dma_cfg.dma_instance:选择使用的DMA实例

    dma_cfg.dma_channel:选择使用的DMA实例通道0

  • init:QSPI传输参数配置

    init.clock_mode:时钟模式选择QSPI_CLOCK_MODE_0,时钟模式0

    init.clock_prescaler:分频系数,外设时钟等于外设总线时钟除以分频系数

    init.rx_sample_delay:时钟延时,以QSPI SCLK时钟周期为单位

重要函数

  • Flash初始化

    SPI_FLASH_init()
  • 读取设备ID

    device_id = SPI_FLASH_Read_Device_ID()
  • 不使能Quad,Quad模式请参考Flash手册

    SPI_FLASH_Disable_Quad()
  • 读取Flash数据

    SPI_FLASH_Read(FLASH_PROGRAM_START_ADDR, read_buffer, FLASH_OPERATION_LENGTH)
  • 擦除Flash数据

    SPI_FLASH_Sector_Erase(FLASH_PROGRAM_START_ADDR)
  • 写入数据到Flash

    SPI_FLASH_Page_Program(FLASH_PROGRAM_START_ADDR, write_buffer)
  • 使能Quad,Quad模式请参考Flash手册

    SPI_FLASH_Enable_Quad()
  • Quad模式读取Flash数据

    SPI_FLASH_Dual_Output_Fast_Read(FLASH_PROGRAM_START_ADDR, read_buffer, 
                                    FLASH_OPERATION_LENGTH)

测试验证

Flash已集成到开发板,连接开发板到PC端,打开串口调试助手查看打印日志,读取Flash的数据和写入一致,则测试成功。

This is SPI_flash example.
Read_Device_ID = 0x0B6017
Erase Sector...
Erase Sector Success.
Page_Program...
Page Program Success.
SPI_Read.
0x00040000: 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 
0x00040008: 0x08 0x09 0x0A 0x0B 0x0C 0x0D 0x0E 0x0F 
0x00040010: 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 
0x00040018: 0x18 0x19 0x1A 0x1B 0x1C 0x1D 0x1E 0x1F 
0x00040020: 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 
0x00040028: 0x28 0x29 0x2A 0x2B 0x2C 0x2D 0x2E 0x2F 
0x00040030: 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 
0x00040038: 0x38 0x39 0x3A 0x3B 0x3C 0x3D 0x3E 0x3F 
0x00040040: 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 
0x00040048: 0x48 0x49 0x4A 0x4B 0x4C 0x4D 0x4E 0x4F 
0x00040050: 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 
0x00040058: 0x58 0x59 0x5A 0x5B 0x5C 0x5D 0x5E 0x5F 
0x00040060: 0x60 0x61 0x62 0x63 0x64 0x65 0x66 0x67 
0x00040068: 0x68 0x69 0x6A 0x6B 0x6C 0x6D 0x6E 0x6F 
0x00040070: 0x70 0x71 0x72 0x73 0x74 0x75 0x76 0x77 
0x00040078: 0x78 0x79 0x7A 0x7B 0x7C 0x7D 0x7E 0x7F 
0x00040080: 0x80 0x81 0x82 0x83 0x84 0x85 0x86 0x87 
0x00040088: 0x88 0x89 0x8A 0x8B 0x8C 0x8D 0x8E 0x8F 
0x00040090: 0x90 0x91 0x92 0x93 0x94 0x95 0x96 0x97 
0x00040098: 0x98 0x99 0x9A 0x9B 0x9C 0x9D 0x9E 0x9F 
0x000400a0: 0xA0 0xA1 0xA2 0xA3 0xA4 0xA5 0xA6 0xA7 
0x000400a8: 0xA8 0xA9 0xAA 0xAB 0xAC 0xAD 0xAE 0xAF 
0x000400b0: 0xB0 0xB1 0xB2 0xB3 0xB4 0xB5 0xB6 0xB7 
0x000400b8: 0xB8 0xB9 0xBA 0xBB 0xBC 0xBD 0xBE 0xBF 
0x000400c0: 0xC0 0xC1 0xC2 0xC3 0xC4 0xC5 0xC6 0xC7 
0x000400c8: 0xC8 0xC9 0xCA 0xCB 0xCC 0xCD 0xCE 0xCF 
0x000400d0: 0xD0 0xD1 0xD2 0xD3 0xD4 0xD5 0xD6 0xD7 
0x000400d8: 0xD8 0xD9 0xDA 0xDB 0xDC 0xDD 0xDE 0xDF 
0x000400e0: 0xE0 0xE1 0xE2 0xE3 0xE4 0xE5 0xE6 0xE7 
0x000400e8: 0xE8 0xE9 0xEA 0xEB 0xEC 0xED 0xEE 0xEF 
0x000400f0: 0xF0 0xF1 0xF2 0xF3 0xF4 0xF5 0xF6 0xF7 
0x000400f8: 0xF8 0xF9 0xFA 0xFB 0xFC 0xFD 0xFE 0xFF 
QSPI DMA read data...
Dual_Output_Fast_Read.
0x00040000: 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 
0x00040008: 0x08 0x09 0x0A 0x0B 0x0C 0x0D 0x0E 0x0F 
0x00040010: 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 
0x00040018: 0x18 0x19 0x1A 0x1B 0x1C 0x1D 0x1E 0x1F 
0x00040020: 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 
0x00040028: 0x28 0x29 0x2A 0x2B 0x2C 0x2D 0x2E 0x2F 
0x00040030: 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 
0x00040038: 0x38 0x39 0x3A 0x3B 0x3C 0x3D 0x3E 0x3F 
0x00040040: 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 
0x00040048: 0x48 0x49 0x4A 0x4B 0x4C 0x4D 0x4E 0x4F 
0x00040050: 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 
0x00040058: 0x58 0x59 0x5A 0x5B 0x5C 0x5D 0x5E 0x5F 
0x00040060: 0x60 0x61 0x62 0x63 0x64 0x65 0x66 0x67 
0x00040068: 0x68 0x69 0x6A 0x6B 0x6C 0x6D 0x6E 0x6F 
0x00040070: 0x70 0x71 0x72 0x73 0x74 0x75 0x76 0x77 
0x00040078: 0x78 0x79 0x7A 0x7B 0x7C 0x7D 0x7E 0x7F 
0x00040080: 0x80 0x81 0x82 0x83 0x84 0x85 0x86 0x87 
0x00040088: 0x88 0x89 0x8A 0x8B 0x8C 0x8D 0x8E 0x8F 
0x00040090: 0x90 0x91 0x92 0x93 0x94 0x95 0x96 0x97 
0x00040098: 0x98 0x99 0x9A 0x9B 0x9C 0x9D 0x9E 0x9F 
0x000400a0: 0xA0 0xA1 0xA2 0xA3 0xA4 0xA5 0xA6 0xA7 
0x000400a8: 0xA8 0xA9 0xAA 0xAB 0xAC 0xAD 0xAE 0xAF 
0x000400b0: 0xB0 0xB1 0xB2 0xB3 0xB4 0xB5 0xB6 0xB7 
0x000400b8: 0xB8 0xB9 0xBA 0xBB 0xBC 0xBD 0xBE 0xBF 
0x000400c0: 0xC0 0xC1 0xC2 0xC3 0xC4 0xC5 0xC6 0xC7 
0x000400c8: 0xC8 0xC9 0xCA 0xCB 0xCC 0xCD 0xCE 0xCF 
0x000400d0: 0xD0 0xD1 0xD2 0xD3 0xD4 0xD5 0xD6 0xD7 
0x000400d8: 0xD8 0xD9 0xDA 0xDB 0xDC 0xDD 0xDE 0xDF 
0x000400e0: 0xE0 0xE1 0xE2 0xE3 0xE4 0xE5 0xE6 0xE7 
0x000400e8: 0xE8 0xE9 0xEA 0xEB 0xEC 0xED 0xEE 0xEF 
0x000400f0: 0xF0 0xF1 0xF2 0xF3 0xF4 0xF5 0xF6 0xF7 
0x000400f8: 0xF8 0xF9 0xFA 0xFB 0xFC 0xFD 0xFE 0xFF 
This example demo end.

扫描关注

打开微信,使用“扫一扫”即可关注。