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 进行中断处理 |