SPI驱动API描述
SPI驱动的API主要如下:
| API类别 | API名称 | 描述 |
|---|---|---|
| 初始化 | hal_spi_init() | 初始化SPI外设,配置时钟分频系数等参数。 |
| hal_spi_deinit() | 反初始化SPI外设。 | |
| hal_spi_msp_init() | 初始化SPI外设所使用的GPIO引脚复用、NVIC中断、DMA通道。 | |
| hal_spi_msp_deinit() | 反初始化SPI外设所使用的GPIO引脚复用、NVIC中断、DMA通道。 | |
| IO操作 | hal_spi_transmit() | 发送数据,轮询方式。 |
| hal_spi_receive() | 接收数据,轮询方式。 | |
| hal_spi_transmit_receive() | 收发数据,轮询方式。 | |
| hal_spi_read_eeprom() | 读取EEPROM,轮询方式。 | |
| hal_spi_transmit_it() | 发送数据,中断方式。 | |
| hal_spi_receive_it() | 接收数据,中断方式。 | |
| hal_spi_transmit_receive_it() | 收发数据,中断方式。 | |
| hal_spi_read_eeprom_it() | 读取EEPROM,中断方式。 | |
| hal_spi_transmit_dma() | 发送数据,DMA方式。 | |
| hal_spi_receive_dma() | 接收数据,DMA方式。 | |
| hal_spi_transmit_receive_dma() | 收发数据,DMA方式。 | |
| hal_spi_read_eeprom_dma() | 读取EEPROM,DMA方式。 | |
| hal_spi_abort() | 中止中断及DMA方式下的数据传输,轮询方式。 | |
| hal_spi_abort_it() | 中止中断及DMA方式下的数据传输,中断方式。 | |
| 中断处理及回调函数 | hal_spi_irq_handler() | 中断处理函数。 |
| hal_spi_tx_cplt_callback() | 发送完成中断回调函数。 | |
| hal_spi_rx_cplt_callback() | 接收完成中断回调函数。 | |
| hal_spi_tx_rx_cplt_callback() | 收发完成中断回调函数。 | |
| hal_spi_error_callback() | 错误中断回调函数。 | |
| hal_spi_abort_cplt_callback() | 中止完成中断回调函数。 | |
| 状态及错误 | hal_spi_get_state() | 获取驱动运行状态。 |
| hal_spi_get_error() | 获取错误码。 | |
| 控制 | hal_spi_set_timeout() | 设置超时时间。 |
| hal_spi_set_tx_fifo_threshold() | 设置TX FIFO阈值。 | |
| hal_spi_set_rx_fifo_threshold() | 设置RX FIFO阈值。 | |
| hal_spi_get_tx_fifo_threshold() | 获取TX FIFO阈值。 | |
| hal_spi_get_rx_fifo_threshold() | 获取RX FIFO阈值。 | |
| 睡眠相关 | hal_spi_suspend_reg() | 睡眠时挂起SPI配置相关的寄存器。 |
| hal_spi_resume_reg() | 唤醒时恢复SPI配置相关的寄存器。 |
下面章节将对各API进行详细描述。
hal_spi_init
| 函数原型 |
hal_status_t hal_spi_init(spi_handle_t *p_spi) |
|---|---|
| 功能说明 |
根据spi_init_t里的参数初始化SPI外设和初始化关联句柄。 |
| 输入参数 |
p_spi:指向spi_handle_t结构体变量的指针,该结构体变量包含指定的SPI的配置信息。 |
| 返回值 |
HAL状态。 |
| 备注 |
hal_spi_deinit
| 函数原型 | hal_status_t hal_spi_deinit(spi_handle_t *p_spi) |
|---|---|
| 功能说明 | 反初始化SPI外设。 |
| 输入参数 | p_spi:指向spi_handle_t结构体变量的指针,该结构体变量包含指定的SPI的配置信息。 |
| 返回值 | HAL状态。 |
| 备注 |
hal_spi_msp_init
| 函数原型 | void hal_spi_msp_init(spi_handle_t *p_spi) |
|---|---|
| 功能说明 | 初始化SPI所使用的GPIO引脚复用、NVIC中断、DMA通道等配置。 |
| 输入参数 | p_spi:指向spi_handle_t结构体变量的指针,该结构体变量包含指定的SPI的配置信息。 |
| 返回值 | 无 |
| 备注 | 该函数为weak类型的空函数,开发者需重写该API完成GPIO引脚复用、NVIC中断、DMA通道的初始化。 |
hal_spi_msp_deinit
| 函数原型 | void hal_spi_msp_deinit(spi_handle_t *p_spi) |
|---|---|
| 功能说明 | 反初始化SPI所使用的GPIO引脚复用、NVIC中断、DMA通道等配置。 |
| 输入参数 | p_spi:指向spi_handle_t结构体变量的指针,该结构体变量包含指定的SPI的配置信息。 |
| 返回值 | 无 |
| 备注 | 该函数为weak类型的空函数,开发者需重写该API完成GPIO引脚复用、NVIC中断、DMA通道的反初始化。 |
hal_spi_transmit
| 函数原型 | hal_status_t hal_spi_transmit(spi_handle_t *p_spi, uint8_t *p_data, uint32_t length, uint32_t timeout) |
|---|---|
| 功能说明 | 发送大量数据,轮询方式。 |
| 输入参数 | p_spi:指向spi_handle_t结构体变量的指针,该结构体变量包含指定的SPI的配置信息。 p_data:指向数据缓冲区的指针。 length:待发送数据的长度。 timout:超时时间。 |
| 返回值 | HAL状态。 |
| 备注 | 返回HAL_ERROR时可调用hal_spi_get_error()获取具体的错误码。 |
hal_spi_receive
| 函数原型 | hal_status_t hal_spi_receive(spi_handle_t *p_spi, uint8_t *p_data, uint32_t length, uint32_t timeout) |
|---|---|
| 功能说明 | 接收大量数据,轮询方式。 |
| 输入参数 | p_spi:指向spi_handle_t结构体变量的指针,该结构体变量包含指定的SPI的配置信息。 p_data:指向数据缓冲区的指针。 length:待接收数据的长度。 timout:超时时间。 |
| 返回值 | HAL状态。 |
| 备注 | 返回HAL_ERROR时可调用hal_spi_get_error()获取具体的错误码。 |
hal_spi_transmit_receive
| 函数原型 | hal_status_t hal_spi_transmit_receive(spi_handle_t *p_spi, uint8_t *p_tx_data, uint8_t *p_rx_data, uint32_t length, uint32_t timeout) |
|---|---|
| 功能说明 | 发送和接收大量数据,全双工,轮询方式。 |
| 输入参数 | p_spi:指向spi_handle_t结构体变量的指针,该结构体变量包含指定的SPI的配置信息。 p_tx_data:指向发送数据缓冲区的指针。 p_rx_data:指向接收数据缓冲区的指针。 length:待发送和接收数据的长度。 timout:超时时间。 |
| 返回值 | HAL状态。 |
| 备注 | 返回HAL_ERROR时可调用hal_spi_get_error()获取具体的错误码。 |
hal_spi_read_eeprom
| 函数原型 | hal_status_t hal_spi_read_eeprom(spi_handle_t *p_spi, uint8_t *p_tx_data, uint8_t *p_rx_data, uint32_t tx_number_data, uint32_t rx_number_data, uint32_t timeout) |
|---|---|
| 功能说明 | 读取EEPROM中的数据,半双工,轮询方式。 |
| 输入参数 | p_spi:指向spi_handle_t结构体变量的指针,该结构体变量包含指定的SPI的配置信息。 p_tx_data:指向发送数据缓冲区的指针。 p_rx_data:指向接收数据缓冲区的指针。 tx_number_data:待发送数据的长度。 rx_number_data:待接收数据的长度。 timout:超时时间。 |
| 返回值 | HAL状态。 |
| 备注 | 返回HAL_ERROR时可调用hal_spi_get_error()获取具体的错误码。 |
hal_spi_transmit_it
| 函数原型 | hal_status_t hal_spi_transmit_it(spi_handle_t *p_spi, uint8_t *p_data, uint32_t length) |
|---|---|
| 功能说明 | 发送大量数据,中断方式。 |
| 输入参数 | p_spi:指向spi_handle_t结构体变量的指针,该结构体变量包含指定的SPI的配置信息。 p_data:指向数据缓冲区的指针。 length:待发送数据的长度。 |
| 返回值 | HAL状态。 |
| 备注 |
|
hal_spi_receive_it
| 函数原型 | hal_status_t hal_spi_receive_it(spi_handle_t *p_spi, uint8_t *p_data, uint32_t length) |
|---|---|
| 功能说明 | 接收大量数据,中断方式。 |
| 输入参数 | p_spi:指向spi_handle_t结构体变量的指针,该结构体变量包含指定的SPI的配置信息。 p_data:指向数据缓冲区的指针。 length:待接收数据的长度。 |
| 返回值 | HAL状态 |
| 备注 |
|
hal_spi_transmit_receive_it
| 函数原型 | hal_status_t hal_spi_transmit_receive_it(spi_handle_t *p_spi, uint8_t *p_tx_data, uint8_t *p_rx_data, uint32_t length) |
|---|---|
| 功能说明 | 发送和接收大量数据,全双工,中断方式。 |
| 输入参数 | p_spi:指向spi_handle_t结构体变量的指针,该结构体变量包含指定的SPI的配置信息 p_tx_data:指向发送数据缓冲区的指针。 p_rx_data:指向接收数据缓冲区的指针。 length:待发送和接收数据的长度。 |
| 返回值 | HAL状态。 |
| 备注 |
|
hal_spi_read_eeprom_it
| 函数原型 | hal_status_t hal_spi_read_eeprom_it(spi_handle_t *p_spi, uint8_t *p_tx_data, uint8_t *p_rx_data, uint32_t tx_number_data, uint32_t rx_number_data) |
|---|---|
| 功能说明 | 读取EEPROM中的数据,半双工,中断方式。 |
| 输入参数 | p_spi:指向spi_handle_t结构体变量的指针,该结构体变量包含指定的SPI的配置信息。 p_tx_data:指向发送数据缓冲区的指针。 p_rx_data:指向接收数据缓冲区的指针。 tx_number_data:待发送数据的长度。 rx_number_data:待接收数据的长度。 |
| 返回值 | HAL状态。 |
| 备注 |
|
hal_spi_transmit_dma
| 函数原型 | hal_status_t hal_spi_transmit_dma(spi_handle_t *p_spi, uint8_t *p_data, uint32_t length) |
|---|---|
| 功能说明 | 发送大量数据,DMA方式。 |
| 输入参数 | p_spi:指向spi_handle_t结构体变量的指针,该结构体变量包含指定的SPI的配置信息。 p_data:指向数据缓冲区的指针。 length:待发送数据的长度。 |
| 返回值 | HAL状态。 |
| 备注 |
|
hal_spi_receive_dma
| 函数原型 | hal_status_t hal_spi_receive_dma(spi_handle_t *p_spi, uint8_t *p_data, uint32_t length) |
|---|---|
| 功能说明 | 接收大量数据,DMA方式。 |
| 输入参数 | p_spi:指向spi_handle_t结构体变量的指针,该结构体变量包含指定的SPI的配置信息。 p_data:指向数据缓冲区的指针。 length:待接收数据的长度。 |
| 返回值 | HAL状态。 |
| 备注 |
|
hal_spi_transmit_receive_dma
| 函数原型 | hal_status_t hal_spi_transmit_receive_dma(spi_handle_t *p_spi, uint8_t *p_tx_data, uint8_t *p_rx_data, uint32_t length) |
|---|---|
| 功能说明 | 发送和接收大量数据,全双工,DMA方式。 |
| 输入参数 | p_spi:指向spi_handle_t结构体变量的指针,该结构体变量包含指定的SPI的配置信息。 p_tx_data:指向发送数据缓冲区的指针。 p_rx_data:指向接收数据缓冲区的指针。 length:待发送和接收数据的长度。 |
| 返回值 | HAL状态 |
| 备注 |
|
hal_spi_read_eeprom_dma
| 函数原型 | hal_status_t hal_spi_read_eeprom_dma(spi_handle_t *p_spi, uint8_t *p_tx_data, uint8_t *p_rx_data, uint32_t tx_number_data, uint32_t rx_number_data) |
|---|---|
| 功能说明 | 读取EEPROM中的数据,半双工,DMA方式。 |
| 输入参数 | p_spi:指向spi_handle_t结构体变量的指针,该结构体变量包含指定的SPI的配置信息。 p_tx_data:指向发送数据缓冲区的指针。 p_rx_data:指向接收数据缓冲区的指针。 tx_number_data:待发送数据的长度。 rx_number_data:待接收数据的长度。 |
| 返回值 | HAL状态 |
| 备注 |
|
hal_spi_abort
| 函数原型 | hal_status_t hal_spi_abort(spi_handle_t *p_spi) |
|---|---|
| 功能说明 | 中止中断及DMA方式下的数据传输,轮询方式。 |
| 输入参数 | p_spi:指向spi_handle_t结构体变量的指针,该结构体变量包含指定的SPI的配置信息。 |
| 返回值 | HAL状态。 |
| 备注 | 该函数为轮询式函数,传输中止完成后退出函数。 |
hal_spi_abort_it
| 函数原型 | hal_status_t hal_spi_abort_it(spi_handle_t *p_spi) |
|---|---|
| 功能说明 | 中止中断及DMA方式下的数据传输,中断方式。 |
| 输入参数 | p_spi:指向spi_handle_t结构体变量的指针,该结构体变量包含指定的SPI的配置信息。 |
| 返回值 | HAL状态。 |
| 备注 | 该函数为非轮询式函数,使能收发中断后,该函数立即返回。TX_ABRT中断触发后中止完成,此时hal_spi_abort_cplt_callback()将会被调用。 |
hal_spi_irq_handler
| 函数原型 | void hal_spi_irq_handler(spi_handle_t *p_spi) |
|---|---|
| 功能说明 | 处理SPI中断请求。 |
| 输入参数 | p_spi:指向spi_handle_t结构体变量的指针,该结构体变量包含指定的SPI的配置信息。 |
| 返回值 | 无 |
| 备注 |
hal_spi_tx_cplt_callback
| 函数原型 | void hal_spi_tx_cplt_callback(spi_handle_t *p_spi) |
|---|---|
| 功能说明 | 发送完成中断回调函数。 |
| 输入参数 | p_spi:指向spi_handle_t结构体变量的指针,该结构体变量包含指定的SPI的配置信息。 |
| 返回值 | 无 |
| 备注 | 该函数为weak类型的空函数,当开发者需要使用该回调函数时,可重写该API。 |
hal_spi_rx_cplt_callback
| 函数原型 | void hal_spi_rx_cplt_callback(spi_handle_t *p_spi) |
|---|---|
| 功能说明 | 接收完成中断回调函数。 |
| 输入参数 | p_spi:指向spi_handle_t结构体变量的指针,该结构体变量包含指定的SPI的配置信息。 |
| 返回值 | 无 |
| 备注 | 该函数为weak类型的空函数,当开发者需要使用该回调函数时,可重写该API。 |
hal_spi_tx_rx_cplt_callback
| 函数原型 | void hal_spi_tx_rx_cplt_callback(spi_handle_t *p_spi) |
|---|---|
| 功能说明 | 收发完成中断回调函数。 |
| 输入参数 | p_spi:指向spi_handle_t结构体变量的指针,该结构体变量包含指定的SPI的配置信息。 |
| 返回值 | 无 |
| 备注 | 该函数为weak类型的空函数,当开发者需要使用该回调函数时,可重写该API。 |
hal_spi_error_callback
| 函数原型 | void hal_spi_error_callback(spi_handle_t *p_spi) |
|---|---|
| 功能说明 | SPI错误回调函数。 |
| 输入参数 | p_spi:指向spi_handle_t结构体变量的指针,该结构体变量包含指定的SPI的配置信息。 |
| 返回值 | 无 |
| 备注 | 该函数为weak类型的空函数,当开发者需要使用该回调函数时,可重写该API。 |
hal_spi_abort_cplt_callback
| 函数原型 | void hal_spi_abort_cplt_callback(spi_handle_t *p_spi) |
|---|---|
| 功能说明 | SPI中止完成回调函数。 |
| 输入参数 | p_spi:指向spi_handle_t结构体变量的指针,该结构体变量包含指定的SPI的配置信息。 |
| 返回值 | 无 |
| 备注 | 该函数为weak类型的空函数,当开发者需要使用该回调函数时,可重写该API。 |
hal_spi_get_state
| 函数原型 | hal_spi_state_t hal_spi_get_state(spi_handle_t *p_spi) |
|---|---|
| 功能说明 | 获取SPI运行状态。 |
| 输入参数 | p_spi:指向spi_handle_t结构体变量的指针,该结构体变量包含指定的SPI的配置信息。 |
| 返回值 |
SPI运行状态,该参数的取值可以是下列值中的任意一个:
|
| 备注 |
hal_spi_get_error
| 函数原型 | uint32_t hal_spi_get_error(spi_handle_t *p_spi) |
|---|---|
| 功能说明 | 获取SPI错误码。 |
| 输入参数 | p_spi:指向spi_handle_t结构体变量的指针,该结构体变量包含指定的SPI的配置信息。 |
| 返回值 |
SPI错误码,该参数的取值可以是下列值中的任意一个:
|
| 备注 |
hal_spi_set_timeout
| 函数原型 | void hal_spi_set_timeout(spi_handle_t *p_spi, uint32_t timeout) |
|---|---|
| 功能说明 | 设置SPI内部API的超时时间。 |
| 输入参数 | p_spi:指向spi_handle_t结构体变量的指针,该结构体变量包含指定的SPI的配置信息。 timeout:超时时间(ms)。 |
| 返回值 | 无 |
| 备注 |
hal_spi_set_tx_fifo_threshold
| 函数原型 | hal_status_t hal_spi_set_tx_fifo_threshold(spi_handle_t *p_spi, uint32_t threshold) |
|---|---|
| 功能说明 | 设置TX FIFO阈值。 |
| 输入参数 | p_spi:指向spi_handle_t结构体变量的指针,该结构体变量包含指定的SPI的配置信息。 threshold:TX FIFO阈值。 |
| 返回值 | HAL状态。 |
| 备注 |
hal_spi_set_rx_fifo_threshold
| 函数原型 | hal_status_t hal_spi_set_rx_fifo_threshold(spi_handle_t *p_spi, uint32_t threshold) |
|---|---|
| 功能说明 | 设置RX FIFO阈值。 |
| 输入参数 | p_spi:指向spi_handle_t结构体变量的指针,该结构体变量包含指定的SPI的配置信息。 threshold:RX FIFO阈值。 |
| 返回值 | HAL状态。 |
| 备注 |
hal_spi_get_tx_fifo_threshold
| 函数原型 | uint32_t hal_spi_get_tx_fifo_threshold(spi_handle_t *p_spi) |
|---|---|
| 功能说明 | 获取TX FIFO阈值。 |
| 输入参数 | p_spi:指向spi_handle_t结构体变量的指针,该结构体变量包含指定的SPI的配置信息。 |
| 返回值 | TX FIFO阈值(取值范围0 ~ 7,其中0表示TX FIFO为空,7表示TX FIFO差一个字节满)。 |
| 备注 |
hal_spi_get_rx_fifo_threshold
| 函数原型 | uint32_t hal_spi_get_rx_fifo_threshold(spi_handle_t *p_spi) |
|---|---|
| 功能说明 | 获取RX FIFO阈值。 |
| 输入参数 | p_spi:指向spi_handle_t结构体变量的指针,该结构体变量包含指定的SPI的配置信息。 |
| 返回值 | RX FIFO阈值(取值范围0 ~ 7,其中0表示RX FIFO中有一个字节,7表示RX FIFO满)。 |
| 备注 |
hal_spi_suspend_reg
| 函数原型 | hal_status_t hal_spi_suspend_reg(spi_handle_t *p_spi) |
|---|---|
| 功能说明 | 睡眠时挂起SPI配置相关的寄存器。 |
| 输入参数 | p_spi:指向spi_handle_t结构体变量的指针,该结构体变量包含指定的SPI的配置信息。 |
| 返回值 | HAL状态。 |
| 备注 |
hal_spi_resume_reg
| 函数原型 | hal_status_t hal_spi_resume_reg(spi_handle_t *p_spi) |
|---|---|
| 功能说明 | 唤醒时恢复SPI配置相关的寄存器。 |
| 输入参数 | p_spi:指向spi_handle_t结构体变量的指针,该结构体变量包含指定的SPI的配置信息。 |
| 返回值 | HAL状态。 |
| 备注 |