QSPI驱动API描述
QSPI驱动的API主要包括:
| API类别 | API名称 | 描述 |
|---|---|---|
| 初始化 | hal_qspi_init() | 初始化QSPI外设,配置时钟分频系数等参数。 |
| hal_qspi_deinit() | 反初始化QSPI外设。 | |
| hal_qspi_msp_init() | 初始化QSPI外设所使用的GPIO引脚复用、NVIC中断、DMA通道。 | |
| hal_qspi_msp_deinit() | 反初始化QSPI外设所使用的GPIO引脚复用、NVIC中断、DMA通道。 | |
| IO操作 | hal_qspi_command_transmit() | 发送数据(包含:指令,地址,数据),轮询方式。 |
| hal_qspi_command_receive() | 接收数据(包含:指令,地址,数据),轮询方式。 | |
| hal_qspi_command() | 发送指令,轮询方式。 | |
| hal_qspi_transmit() | 以SPI方式发送数据,轮询方式。 | |
| hal_qspi_receive() | 以SPI方式接收数据,轮询方式。 | |
| hal_qspi_command_transmit_it() | 发送数据(包含:指令,地址,数据),中断方式。 | |
| hal_qspi_command_receive_it() | 接收数据(包含:指令,地址,数据),中断方式。 | |
| hal_qspi_command_it() | 发送指令,中断方式。 | |
| hal_qspi_transmit_it() | 以SPI方式发送数据,中断方式。 | |
| hal_qspi_receive_it() | 以SPI方式接收数据,中断式。 | |
| hal_qspi_command_transmit_dma() | 发送数据(包含:指令,地址,数据),DMA方式。 | |
| hal_qspi_command_receive_dma() | 接收数据(包含:指令,地址,数据),DMA方式。 | |
| hal_qspi_command_dma() | 发送指令,DMA方式。 | |
| hal_qspi_transmit_dma() | 以SPI方式发送数据,DMA方式。 | |
| hal_qspi_receive_dma() | 以SPI方式接收数据,DMA方式。 | |
| hal_qspi_abort() | 中止中断及DMA方式下的数据传输,轮询方式。 | |
| hal_qspi_abort_it() | 中止中断及DMA方式下的数据传输,中断方式。 | |
| 中断处理及回调函数 | hal_qspi_irq_handler() | 中断处理函数。 |
| hal_qspi_tx_cplt_callback() | 发送完成中断回调函数。 | |
| hal_qspi_rx_cplt_callback() | 接收完成中断回调函数。 | |
| hal_qspi_error_callback() | 错误中断回调函数。 | |
| hal_qspi_abort_cplt_callback() | 中止完成中断回调函数。 | |
| 状态及错误 | hal_qspi_get_state() | 获取驱动运行状态。 |
| hal_qspi_get_error() | 获取错误码。 | |
| 控制 | hal_qspi_set_timeout() | 设置超时时间。 |
| hal_qspi_set_tx_fifo_threshold() | 设置TX FIFO阈值。 | |
| hal_qspi_set_rx_fifo_threshold() | 设置RX FIFO阈值。 | |
| hal_qspi_get_tx_fifo_threshold() | 获取TX FIFO阈值。 | |
| hal_qspi_get_rx_fifo_threshold() | 获取RX FIFO阈值。 | |
| 睡眠相关 | hal_qspi_suspend_reg() | 睡眠时挂起QSPI配置相关的寄存器。 |
| hal_qspi_resume_reg() | 唤醒时恢复QSPI配置相关的寄存器。 |
下面章节将对各API进行详细描述。
hal_qspi_init
| 函数原型 | hal_status_t hal_qspi_init(qspi_handle_t *p_qspi) |
|---|---|
| 功能说明 | 根据qspi_init_t中的指定参数初始化QSPI模式,并初始化相关句柄。 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 |
| 返回值 | HAL状态。 |
| 备注 |
hal_qspi_deinit
| 函数原型 | hal_status_t hal_qspi_deinit(qspi_handle_t *p_qspi) |
|---|---|
| 功能说明 | 反初始化QSPI外设。 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 |
| 返回值 | HAL状态。 |
| 备注 |
hal_qspi_msp_init
| 函数原型 | void hal_qspi_msp_init(qspi_handle_t *p_qspi) |
|---|---|
| 功能说明 | 初始化QSPI所使用的GPIO引脚复用、NVIC中断、DMA通道等配置。 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 |
| 返回值 | 无 |
| 备注 | 该函数为weak类型的空函数,开发者需重写该API完成GPIO引脚复用、NVIC中断、DMA通道的初始化。 |
hal_qspi_msp_deinit
| 函数原型 | void hal_qspi_msp_deinit(qspi_handle_t *p_qspi) |
|---|---|
| 功能说明 | 反初始化QSPI所使用的GPIO引脚复用、NVIC中断、DMA通道等配置。 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 |
| 返回值 | 无 |
| 备注 | 该函数为weak类型的空函数,开发者需重写该API完成GPIO引脚复用、NVIC中断、DMA通道的反初始化。 |
hal_qspi_command_transmit
| 函数原型 | hal_status_t hal_qspi_command_transmit(qspi_handle_t *p_qspi, qspi_command_t *p_cmd, uint8_t *p_data, uint32_t timeout) |
|---|---|
| 功能说明 | 发送数据(包含:指令,地址,数据),轮询方式。 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 p_cmd:指向qspi_command_t结构体变量的指针,该结构体变量包含命令配置信息。 p_data:指向数据缓冲区的指针。 timeout:超时时间。 |
| 返回值 | HAL状态。 |
| 备注 |
hal_qspi_command_receive
| 函数原型 | hal_status_t hal_qspi_command_receive(qspi_handle_t *p_qspi, qspi_command_t *p_cmd, uint8_t *p_data, uint32_t timeout) |
|---|---|
| 功能说明 | 接收数据(包含:指令,地址,dummy,数据),轮询方式。 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 p_cmd:指向qspi_command_t结构体变量的指针,该结构体变量包含命令配置信息。 p_data:指向数据缓冲区的指针。 timeout:超时时间。 |
| 返回值 | HAL状态。 |
| 备注 |
hal_qspi_command
| 函数原型 | hal_status_t hal_qspi_command(qspi_handle_t *p_qspi, qspi_command_t *p_cmd, uint32_t timeout) |
|---|---|
| 功能说明 | 发送指令,轮询方式。 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 p_cmd:指向qspi_command_t结构体变量的指针,该结构体变量包含命令配置信息。 timeout:超时时间。 |
| 返回值 | HAL状态。 |
| 备注 | 该接口只用于轮询方式下的指令发送,可与hal_qspi_transmit()及hal_qspi_receive()配合使用进行指令、地址、数据的收发,或者可直接使用hal_qspi_command_transmit()和hal_qspi_command_receive()进行指令、地址、数据的收发。 |
hal_qspi_transmit
| 函数原型 | hal_status_t hal_qspi_transmit(qspi_handle_t *p_qspi, uint8_t *p_data, uint32_t length, uint32_t timeout) |
|---|---|
| 功能说明 | 以SPI方式发送大量数据,轮询方式。 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 p_data:指向数据缓冲区的指针。 length:待发送数据的长度。 timeout:超时时间。 |
| 返回值 | HAL状态。 |
| 备注 | 该函数只在Standard SPI模式里使用。 |
hal_qspi_receive
| 函数原型 | hal_status_t hal_qspi_receive(qspi_handle_t *p_qspi, uint8_t *p_data, uint32_t length, uint32_t timeout) |
|---|---|
| 功能说明 | 以SPI方式接收大量数据,轮询方式。 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 p_data:指向数据缓冲区的指针。 length:待接收数据的长度。 timeout:超时时间。 |
| 返回值 | HAL状态。 |
| 备注 | 该函数只在Standard SPI模式里使用。 |
hal_qspi_command_transmit_it
| 函数原型 | hal_status_t hal_qspi_command_transmit_it(qspi_handle_t *p_qspi, qspi_command_t *p_cmd, uint8_t *p_data) |
|---|---|
| 功能说明 | 发送数据((包含:指令,地址,数据),中断方式。 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 p_cmd:指向qspi_command_t结构体变量的指针,该结构体变量包含命令配置信息。 p_data:指向数据缓冲区的指针。 |
| 返回值 | HAL状态。 |
| 备注 |
传输过程中,QSPI中断处理无法及时响应,可能出现发送数据错误的情况。 |
hal_qspi_command_receive_it
| 函数原型 | hal_status_t hal_qspi_command_receive_it(qspi_handle_t *p_qspi, qspi_command_t *p_cmd, uint8_t *p_data) |
|---|---|
| 功能说明 | 接收数据((包含:指令,地址,dummy,数据),中断方式。 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 p_cmd:指向qspi_command_t结构体变量的指针,该结构体变量包含命令配置信息。 p_data:指向数据缓冲区的指针。 |
| 返回值 | HAL状态。 |
| 备注 |
传输过程中,QSPI中断处理无法及时响应,可能出现接收数据错误的情况。 |
hal_qspi_command_it
| 函数原型 | hal_status_t hal_qspi_command_it(qspi_handle_t *p_qspi, qspi_command_t *p_cmd) |
|---|---|
| 功能说明 | 发送指令,中断方式。 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 p_cmd:指向qspi_command_t结构体变量的指针,该结构体变量包含命令配置信息。 |
| 返回值 | HAL状态。 |
| 备注 | 该接口只用于中断方式下的指令发送,可与hal_qspi_receive_it()及hal_qspi_transmit_it()配合使用进行指令、地址、数据的收发,或者直接使用hal_qspi_command_receive_it()和hal_qspi_command_transmit_it()进行指令、地址、数据的收发。 |
hal_qspi_transmit_it
| 函数原型 | hal_status_t hal_qspi_transmit_it(qspi_handle_t *p_qspi, uint8_t *p_data, uint32_t length) |
|---|---|
| 功能说明 | 以SPI方式发送数据,中断方式。 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 p_data:指向数据缓冲区的指针。 length:待发送数据的长度。 |
| 返回值 | HAL状态。 |
| 备注 |
|
hal_qspi_receive_it
| 函数原型 | hal_status_t hal_qspi_receive_it(qspi_handle_t *p_qspi, uint8_t *p_data, uint32_t length) |
|---|---|
| 功能说明 | 以SPI方式接收数据,中断方式。 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 p_data:指向数据缓冲区的指针。 length:待接收数据的长度。 |
| 返回值 | HAL状态。 |
| 备注 |
|
hal_qspi_command_transmit_dma
| 函数原型 | hal_status_t hal_qspi_command_transmit_dma(qspi_handle_t *p_qspi, qspi_command_t *p_cmd, uint8_t *p_data) |
|---|---|
| 功能说明 | 发送数据(包含:指令,地址,数据),DMA方式。 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 p_cmd:指向qspi_command_t结构体变量的指针,该结构体变量包含命令配置信息。 p_data:指向数据缓冲区的指针。 |
| 返回值 | HAL状态。 |
| 备注 |
hal_qspi_command_receive_dma
| 函数原型 | hal_status_t hal_qspi_command_receive_dma(qspi_handle_t *p_qspi, qspi_command_t *p_cmd, uint8_t *p_data) |
|---|---|
| 功能说明 | 接收数据(包含:指令,地址,dummy,数据),DMA方式。 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 p_cmd:指向qspi_command_t结构体变量的指针,该结构体变量包含命令配置信息。 p_data:指向数据缓冲区的指针。 |
| 返回值 | HAL状态。 |
| 备注 |
hal_qspi_command_dma
| 函数原型 | hal_status_t hal_qspi_command_dma(qspi_handle_t *p_qspi, qspi_command_t *p_cmd) |
|---|---|
| 功能说明 | 发送指令,DMA方式。 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 p_cmd:指向qspi_command_t结构体变量的指针,该结构体变量包含命令配置信息。 |
| 返回值 | HAL状态。 |
| 备注 | 该接口只用于DMA方式下的指令发送,可与hal_qspi_receive_dma()及hal_qspi_transmit_dma()配合使用进行指令、地址、数据的收发,或者可直接使用hal_qspi_command_receive_dma()和hal_qspi_command_transmit_dma()进行指令、地址、数据的收发。 |
hal_qspi_transmit_dma
| 函数原型 | hal_status_t hal_qspi_transmit_dma(qspi_handle_t *p_qspi, uint8_t *p_data, uint32_t length) |
|---|---|
| 功能说明 | 以SPI方式发送数据,DMA方式。 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 p_data:指向数据缓冲区的指针。 length:待发送数据的长度。 |
| 返回值 | HAL状态。 |
| 备注 |
该函数只在Standard SPI模式里使用:
|
hal_qspi_receive_dma
| 函数原型 | hal_status_t hal_qspi_receive_dma(qspi_handle_t *p_qspi, uint8_t *p_data, uint32_t length) |
|---|---|
| 功能说明 | 以SPI方式接收数据,DMA方式。 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 p_data:指向数据缓冲区的指针。 length:待接收数据的长度。 |
| 返回值 | HAL状态。 |
| 备注 |
该函数只在Standard SPI模式里使用:
|
hal_qspi_abort
| 函数原型 | hal_status_t hal_qspi_abort(qspi_handle_t *p_qspi) |
|---|---|
| 功能说明 | 中止中断及DMA方式下的数据传输,轮询方式。 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 |
| 返回值 | HAL状态。 |
| 备注 |
hal_qspi_abort_it
| 函数原型 | hal_status_t hal_qspi_abort_it(qspi_handle_t *p_qspi) |
|---|---|
| 功能说明 | 中止中断及DMA方式下的数据传输,中断方式。 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 |
| 返回值 | HAL状态。 |
| 备注 |
hal_qspi_irq_handler
| 函数原型 | void hal_qspi_irq_handler(qspi_handle_t *p_qspi) |
|---|---|
| 功能说明 | 处理QSPI中断请求。 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 |
| 返回值 | 无 |
| 备注 |
hal_qspi_tx_cplt_callback
| 函数原型 | void hal_qspi_tx_cplt_callback(qspi_handle_t *p_qspi) |
|---|---|
| 功能说明 | 发送完成回调。 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 |
| 返回值 | 无 |
| 备注 | 该函数为weak类型的空函数,当开发者需要使用该回调函数时,可重写该API。 |
hal_qspi_rx_cplt_callback
| 函数原型 | void hal_qspi_rx_cplt_callback(qspi_handle_t *p_qspi) |
|---|---|
| 功能说明 | 接收完成回调。 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 |
| 返回值 | 无 |
| 备注 | 该函数为weak类型的空函数,当开发者需要使用该回调函数时,可重写该API。 |
hal_qspi_error_callback
| 函数原型 | void hal_qspi_error_callback(qspi_handle_t *p_qspi) |
|---|---|
| 功能说明 | 传输错误回调。 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 |
| 返回值 | 无 |
| 备注 | 该函数为weak类型的空函数,当开发者需要使用该回调函数时,可重写该API。 |
hal_qspi_abort_cplt_callback
| 函数原型 | void hal_qspi_abort_cplt_callback(qspi_handle_t *p_qspi) |
|---|---|
| 功能说明 | 中止完成回调。 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 |
| 返回值 | 无 |
| 备注 | 该函数为weak类型的空函数,当开发者需要使用该回调函数时,可重写该API。 |
hal_qspi_get_state
| 函数原型 | hal_qspi_state_t hal_qspi_get_state(qspi_handle_t *p_qspi) |
|---|---|
| 功能说明 | 获取QSPI运行状态。 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 |
| 返回值 |
QSPI运行状态,该参数的取值可以是下列值中的任意一个:
|
| 备注 |
hal_qspi_get_error
| 函数原型 | uint32_t hal_qspi_get_error(qspi_handle_t *p_qspi) |
|---|---|
| 功能说明 | 获取QSPI错误码。 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 |
| 返回值 |
QSPI错误代码,该参数的取值可以是下列值中的任意一个:
|
| 备注 |
hal_qspi_set_timeout
| 函数原型 | void hal_qspi_set_timeout(qspi_handle_t *p_qspi, uint32_t timeout) |
|---|---|
| 功能说明 | 设置QSPI超时时间。 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 timeout:QSPI内存访问超时时间。 |
| 返回值 | 无 |
| 备注 |
hal_qspi_set_tx_fifo_threshold
| 函数原型 | hal_status_t hal_qspi_set_tx_fifo_threshold(qspi_handle_t *p_qspi, uint32_t threshold) |
|---|---|
| 功能说明 | 设置QSPI TX FIFO阈值。 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 threshold:待设置的TX FIFO阈值(取值范围0 ~ 7,其中0表示TX FIFO为空,7表示TX FIFO差一个字节满)。 |
| 返回值 | HAL状态 |
| 备注 |
hal_qspi_set_rx_fifo_threshold
| 函数原型 | hal_status_t hal_qspi_set_rx_fifo_threshold(qspi_handle_t *p_qspi, uint32_t threshold) |
|---|---|
| 功能说明 | 设置QSPI RX FIFO阈值。 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 threshold:待设置的RX FIFO阈值(取值范围0 ~ 7,其中0表示RX FIFO中有一个字节,7表示RX FIFO满)。 |
| 返回值 | HAL状态 |
| 备注 |
hal_qspi_get_tx_fifo_threshold
| 函数原型 | uint32_t hal_qspi_get_tx_fifo_threshold(qspi_handle_t *p_qspi) |
|---|---|
| 功能说明 | 获取QSPI TX FIFO阈值。 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 |
| 返回值 | TX FIFO阈值(取值范围0 ~ 7,其中0表示TX FIFO为空,7表示TX FIFO差一个字节满)。 |
| 备注 |
hal_qspi_get_rx_fifo_threshold
| 函数原型 | uint32_t hal_qspi_get_rx_fifo_threshold(qspi_handle_t *p_qspi) |
|---|---|
| 功能说明 | 获取QSPI RX FIFO阈值。 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 |
| 返回值 | RX FIFO阈值(取值范围0 ~ 7,其中0表示RX FIFO中有一个字节,7表示RX FIFO满)。 |
| 备注 |
hal_qspi_suspend_reg
| 函数原型 | hal_status_t hal_qspi_suspend_reg(qspi_handle_t *p_qspi) |
|---|---|
| 功能说明 | 睡眠时挂起QSPI配置相关的寄存器 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 |
| 返回值 | HAL状态 |
| 备注 |
hal_qspi_resume_reg
| 函数原型 | hal_status_t hal_qspi_resume_reg(qspi_handle_t *p_qspi) |
|---|---|
| 功能说明 | 唤醒时恢复QSPI配置相关的寄存器 |
| 输入参数 | p_qspi:指向qspi_handle_t结构体变量的指针,该结构体变量包含指定的QSPI的配置信息。 |
| 返回值 | HAL状态 |
| 备注 |