Edit online

接口设计

RT-Thread 中的 QSPI 接口设计,在 RT-Thread 的文档中已经有详细说明。 此处介绍 QSPI HAL 层的接口设计。

1. hal_qspi_master_init
函数原型 int hal_qspi_master_init(qspi_master_handle *h, struct qspi_master_config *cfg)
功能说明 QSPI 控制器的初始化函数
参数定义 qspi_master_handle *hQSPI 控制器 Handlestruct qspi_master_config *cfgQSPI 控制器的初始化配置参数
返回值 0: 成功其他: 失败
注意事项 初始化时,Handle 的空间由使用者负责分配和释放
2. hal_qspi_master_deinit
函数原型 int hal_qspi_master_deinit(qspi_master_handle *h)
功能说明 QSPI 控制器的反初始化函数,在 QSPI 控制器关闭时使用
参数定义 qspi_master_handle *hQSPI 控制器 Handle
返回值 0: 成功其他: 失败
注意事项 -
3. hal_qspi_master_set_cs
函数原型 int hal_qspi_master_set_cs(qspi_master_handle *h, uint32_t cs_num, bool enable)
功能说明 设置 SPI 设备的片选信号
参数定义 qspi_master_handle *hQSPI 控制器 Handlebool enableCS 信号是否有效
返回值 0: 成功其他: 失败
注意事项 -
4. hal_qspi_master_set_bus_freq
函数原型 int hal_qspi_master_set_bus_freq(qspi_master_handle *h, uint32_t bus_hz)
功能说明 设置 QSPI 控制器的接口总线工作时钟
参数定义 qspi_master_handle *hQSPI 控制器 Handleuint32_t bus_hz 接口总线的工作时钟
返回值 0: 成功其他: 失败
注意事项 QSPI 控制器的模块输入时钟,在 hal_qspi_master_init() 调用时配置
5. hal_qspi_master_set_bus_width
函数原型 int hal_qspi_master_set_bus_width(qspi_master_handle *h, uint32_t bus_width)
功能说明 设置传输所使用的总线位宽
参数定义 qspi_master_handle *hQSPI 控制器 Handleuint32_t bus_width 总线位宽,取值可以为 1、2、4
返回值 0: 成功其他: 失败
注意事项 -
6. hal_qspi_master_dma_config
函数原型 int hal_qspi_master_dma_config(qspi_master_handle *h, struct qspi_master_dma_config *cfg)
功能说明 配置和使能 DMA
参数定义 qspi_master_handle *hQSPI 控制器 Handlestruct qspi_master_dma_config *cfgQSPI 控制器使用的 TX、RX DMA 通道配置
返回值 0: 成功其他: 失败
注意事项 需要使能系统 DMA 进行数据传输,则需要在初始化时调用本 API,否则不使用系统 DMA。
7. hal_qspi_master_register_cb
函数原型 int hal_qspi_master_register_cb(qspi_master_handle *h, qspi_master_async_cb cb, void *priv)
功能说明 注册异步传输的回调函数
参数定义 qspi_master_handle *hQSPI 控制器 Handleqspi_master_async_cb cb 回调函数指针 void *priv 回调函数的私有数据
返回值 0: 成功其他: 失败
注意事项 -
8. hal_qspi_master_transfer_async
函数原型 int hal_qspi_master_transfer_async(qspi_master_handle *h, struct qspi_transfer *t);
功能说明 异步数据传输接口
参数定义 qspi_master_handle *hQSPI 控制器 Handlestruct qspi_transfer *t 传输的数据信息
返回值 0: 成功其他: 失败
注意事项 该函数启动硬件传输即返回,具体是否完成,需要检查硬件状态,或者等待回调函数
9. hal_qspi_master_transfer_sync
函数原型 int hal_qspi_master_transfer_sync(qspi_master_handle *h, struct qspi_transfer *t)
功能说明 同步数据传输接口
参数定义 qspi_master_handle *hQSPI 控制器 Handlestruct qspi_transfer *t 传输的数据信息
返回值 0: 成功其他: 失败
注意事项 该函数为同步函数,阻塞式调用,数据传输完成或者出错才返回。
10. hal_qspi_master_get_status
函数原型 int hal_qspi_master_get_status(qspi_master_handle *h)
功能说明 传输状态读取接口
参数定义 qspi_master_handle *hQSPI 控制器 Handle
返回值 0: 传输成功完成其他: 传输失败,具体错误信息可参考 hal_qspi.h 中的定义
注意事项 -
11. hal_qspi_master_irq_handler
函数原型 void hal_qspi_master_irq_handler(qspi_master_handle *h)
功能说明 QSPI 中断处理接口
参数定义 qspi_master_handle *hQSPI 控制器 Handle
返回值
注意事项 使用者需要向系统注册中断,并且在中断回调函数中调用本 API 进行中断处理