I2S驱动API描述
I2S驱动的API主要包括:
| API类别 | API名称 | 描述 |
|---|---|---|
| 初始化 | hal_i2s_init() | 初始化I2S外设,配置参数。 |
| hal_i2s_deinit() | 反初始化I2S外设。 | |
| hal_i2s_msp_init() | 初始化I2S外设所使用的GPIO引脚复用、NVIC中断、DMA通道。 | |
| hal_i2s_msp_deinit() | 反初始化I2S外设所使用的GPIO引脚复用、NVIC中断、DMA通道。 | |
| IO操作 | hal_i2s_transmit() | 数据发送,轮询方式。 |
| hal_i2s_receive() | 数据接收,轮询方式。 | |
| hal_i2s_transmit_receive() | 数据发送与接收,轮询方式。 | |
| hal_i2s_transmit_it() | 数据发送,中断方式。 | |
| hal_i2s_receive_it() | 数据接收,中断方式。 | |
| hal_i2s_transmit_receive_it() | 数据发送与接收,中断方式。 | |
| hal_i2s_transmit_dma() | 数据发送,DMA方式。 | |
| hal_i2s_receive_dma() | 数据接收,DMA方式。 | |
| hal_i2s_transmit_receive_dma() | 数据发送与接收,DMA方式。 | |
| hal_i2s_abort() | 中止中断及DMA方式下的数据传输。 | |
| 中断处理及回调函数 | hal_i2s_irq_handler() | 中断处理函数。 |
| hal_i2s_tx_cplt_callback() | 发送完成中断回调函数。 | |
| hal_i2s_rx_cplt_callback() | 接收完成中断回调函数。 | |
| hal_i2s_error_callback() | 错误中断回调函数。 | |
| 状态及错误 | hal_i2s_get_state() | 获取驱动运行状态。 |
| hal_i2s_get_error() | 获取错误码。 | |
| 时钟控制 | hal_i2s_start_clock() | 作为主模式的时候开始输出时钟。 |
| hal_i2s_stop_clock() | 作为主模式的时候停止输出时钟。 | |
| FIFO阈值操作函数 | hal_i2s_set_tx_fifo_threshold | 设置TX FIFO阈值。 |
| hal_i2s_set_rx_fifo_threshold | 设置RX FIFO阈值。 | |
| hal_i2s_get_tx_fifo_threshold | 获取TX FIFO阈值。 | |
| hal_i2s_get_rx_fifo_threshold | 获取RX FIFO阈值。 | |
| 睡眠相关 | hal_i2s_suspend_reg() | 睡眠之前挂起和I2S配置相关的寄存器。 |
| hal_i2s_resume_reg() | 唤醒时恢复和I2S配置相关的寄存器。 |
下面章节将对各API进行详细描述。
hal_i2s_init
| 函数原型 | hal_status_t hal_i2s_init(i2s_handle_t *p_i2s) |
|---|---|
| 功能说明 | 根据i2s_init_t中的指定参数初始化I2S和关联句柄。 |
| 输入参数 | p_i2s:指向i2s_handle_t结构体变量的指针,该结构体变量包含指定的I2S的配置信息。 |
| 返回值 | HAL状态。 |
| 备注 |
hal_i2s_deinit
| 函数原型 | hal_status_t hal_i2s_deinit(i2s_handle_t *p_i2s) |
|---|---|
| 功能说明 | 反初始化I2S。 |
| 输入参数 | p_i2s:指向i2s_handle_t结构体变量的指针,该结构体变量包含指定的I2S的配置信息。 |
| 返回值 | HAL状态。 |
| 备注 |
hal_i2s_msp_init
| 函数原型 | void hal_i2s_msp_init(i2s_handle_t *p_i2s) |
|---|---|
| 功能说明 | 初始化I2S所使用的GPIO引脚复用、NVIC中断、DMA通道等配置。 |
| 输入参数 | p_i2s:指向i2s_handle_t结构体变量的指针,该结构体变量包含指定的I2S的配置信息 |
| 返回值 | 无 |
| 备注 | 该函数为weak类型的空函数,开发者需重写该API完成GPIO引脚复用、NVIC中断、DMA通道的初始化。 |
hal_i2s_msp_deinit
| 函数原型 | void hal_i2s_msp_deinit(i2s_handle_t *p_i2s) |
|---|---|
| 功能说明 | 反初始化I2S所使用的GPIO引脚复用、NVIC中断、DMA通道等配置。 |
| 输入参数 | p_i2s:指向i2s_handle_t结构体变量的指针,该结构体变量包含指定的I2S的配置信息 |
| 返回值 | 无 |
| 备注 | 该函数为weak类型的空函数,开发者需重写该API完成GPIO引脚复用、NVIC中断、DMA通道的反初始化。 |
hal_i2s_transmit
| 函数原型 | hal_status_t hal_i2s_transmit(i2s_handle_t *p_i2s, uint16_t *p_data, uint32_t length, uint32_t timeout) |
|---|---|
| 功能说明 | 发送大量数据,轮询方式。 |
| 输入参数 | p_i2s:指向i2s_handle_t结构体变量的指针,该结构体变量包含指定的I2S的配置信息。 p_data:指向数据缓冲区的指针。 length:待发送数据的长度,单声道的数据量,单位2 Bytes。 timeout:超时时间,单位ms。 |
| 返回值 | HAL状态。 |
| 备注 | 返回HAL_ERROR时可调用hal_i2s_get_error()获取具体的错误码。 |
hal_i2s_receive
| 函数原型 | hal_status_t hal_i2s_receive(i2s_handle_t *p_i2s, uint16_t *p_data, uint32_t length, uint32_t timeout) |
|---|---|
| 功能说明 | 接收大量数据,轮询方式。 |
| 输入参数 | p_i2s:指向i2s_handle_t结构体变量的指针,该结构体变量包含指定的I2S的配置信息。 p_data:指向数据缓冲区的指针。 length:待接收数据的长度,单声道的数据量,单位2 Bytes。 timeout:超时时间,单位ms。 |
| 返回值 | HAL状态。 |
| 备注 | 返回HAL_ERROR时可调用hal_i2s_get_error()获取具体的错误码。 |
hal_i2s_transmit_receive
| 函数原型 | hal_status_t hal_i2s_transmit_receive(i2s_handle_t *p_i2s, uint16_t *p_tx_data, uint16_t *p_rx_data, uint32_t length, uint32_t timeout) |
|---|---|
| 功能说明 | 发送与接收大量数据,轮询方式。 |
| 输入参数 | p_i2s:指向i2s_handle_t结构体变量的指针,该结构体变量包含指定的I2S的配置信息。 p_tx_data:指向发送数据缓冲区的指针。 p_rx_data:指向接收数据缓冲区的指针。 length:发送与接收数据的长度,单位Byte。 timeout:超时时间,单位ms。 |
| 返回值 | HAL状态。 |
| 备注 | 返回HAL_ERROR时可调用hal_i2s_get_error()获取具体的错误码。 |
hal_i2s_transmit_it
| 函数原型 | hal_status_t hal_i2s_transmit_it(i2s_handle_t *p_i2s, uint16_t *p_data, uint32_t length) |
|---|---|
| 功能说明 | 发送大量数据,中断方式。 |
| 输入参数 | p_i2s:指向i2s_handle_t结构体变量的指针,该结构体变量包含指定的I2S的配置信息。 p_data:指向数据缓冲区的指针。 length:待发送数据的长度,单声道的数据量,单位2 Bytes。 |
| 返回值 | HAL状态。 |
| 备注 |
|
hal_i2s_receive_it
| 函数原型 |
hal_status_t hal_i2s_receive_it(i2s_handle_t *p_i2s, uint16_t *p_data, uint32_t length) |
|---|---|
| 功能说明 |
接收大量数据,中断方式。 |
| 输入参数 |
p_i2s:指向i2s_handle_t结构体变量的指针,该结构体变量包含指定的I2S的配置信息。 p_data:指向数据缓冲区的指针。 length:待接收数据的长度,单声道的数据量,单位2 Bytes。 |
| 返回值 |
HAL状态。 |
| 备注 |
|
hal_i2s_transmit_receive_it
| 函数原型 |
hal_status_t hal_i2s_transmit_receive_it(i2s_handle_t *p_i2s, uint16_t *p_tx_data, uint16_t *p_rx_data, uint32_t length) |
|---|---|
| 功能说明 |
发送与接收大量数据,中断方式。 |
| 输入参数 |
p_i2s:指向i2s_handle_t结构体变量的指针,该结构体变量包含指定的I2S的配置信息。 p_tx_data:指向发送数据缓冲区的指针。 p_rx_data:指向接收数据缓冲区的指针。 length:发送与接收数据的长度,单位Byte。 |
| 返回值 |
HAL状态。 |
| 备注 |
|
hal_i2s_abort
| 函数原型 | hal_status_t hal_i2s_abort(i2s_handle_t *p_i2s) |
|---|---|
| 功能说明 | 中止I2S中断或DMA方式的数据传输。 |
| 输入参数 | p_i2s:指向i2s_handle_t结构体变量的指针,该结构体变量包含指定的I2S的配置信息。 |
| 返回值 | HAL状态。 |
| 备注 | 该函数为轮询式函数,退出函数时,中止完成。 |
hal_i2s_transmit_dma
| 函数原型 | hal_status_t hal_i2s_transmit_dma(i2s_handle_t *p_i2s, uint16_t *p_data, uint32_t length) |
|---|---|
| 功能说明 | 发送大量数据,DMA方式。 |
| 输入参数 | p_i2s:指向i2s_handle_t结构体变量的指针,该结构体变量包含指定的I2S的配置信息。 p_data:指向数据缓冲区的指针。 length:待发送数据的长度。 |
| 返回值 | HAL状态。 |
| 备注 |
|
hal_i2s_receive_dma
| 函数原型 | hal_status_t hal_i2s_receive_dma(i2s_handle_t *p_i2s, uint16_t *p_data, uint32_t length) |
|---|---|
| 功能说明 | 以DMA非轮询模式接收大量数据。 |
| 输入参数 | p_i2s:指向i2s_handle_t结构体变量的指针,该结构体变量包含指定的I2S的配置信息。 p_data:指向数据缓冲区的指针。 length:待接收数据的长度。 |
| 返回值 | HAL状态。 |
| 备注 |
|
hal_i2s_transmit_receive_dma
| 函数原型 | hal_status_t hal_i2s_transmit_receive_dma(i2s_handle_t *p_i2s, uint16_t *p_tx_data, uint16_t *p_rx_data, uint32_t length) |
|---|---|
| 功能说明 | 发送与接收大量数据,DMA方式。 |
| 输入参数 | p_i2s:指向i2s_handle_t结构体变量的指针,该结构体变量包含指定的I2S的配置信息。 p_tx_data:指向发送数据缓冲区的指针。 p_rx_data:指向接收数据缓冲区的指针。 length:发送与接收数据的长度,单位Byte。 |
| 返回值 | HAL状态。 |
| 备注 |
|
hal_i2s_irq_handler
| 函数原型 | void hal_i2s_irq_handler(i2s_handle_t *p_i2s) |
|---|---|
| 功能说明 | 处理I2S中断请求。 |
| 输入参数 | p_i2s:指向i2s_handle_t结构体变量的指针,该结构体变量包含指定的I2S的配置信息。 |
| 返回值 | 无 |
| 备注 |
hal_i2s_tx_cplt_callback
| 函数原型 | void hal_i2s_tx_cplt_callback(i2s_handle_t *p_i2s) |
|---|---|
| 功能说明 | 发送完成回调函数。 |
| 输入参数 | p_i2s:指向i2s_handle_t结构体变量的指针,该结构体变量包含指定的I2S的配置信息。 |
| 返回值 | 无 |
| 备注 | 该函数为weak类型的空函数,当开发者需要使用该回调函数时,可重写该API。 |
hal_i2s_tx_rx_cplt_callback
| 函数原型 | void hal_i2s_tx_rx_cplt_callback(i2s_handle_t *p_i2s) |
|---|---|
| 功能说明 | 发送与接收完成回调函数。 |
| 输入参数 | p_i2s:指向i2s_handle_t结构体变量的指针,该结构体变量包含指定的I2S的配置信息。 |
| 返回值 | 无 |
| 备注 | 该函数为weak类型的空函数,当开发者需要使用该回调函数时,可重写该API。 |
hal_i2s_rx_cplt_callback
| 函数原型 | void hal_i2s_rx_cplt_callback(i2s_handle_t *p_i2s) |
|---|---|
| 功能说明 | 接收完成回调函数。 |
| 输入参数 | p_i2s:指向i2s_handle_t结构体变量的指针,该结构体变量包含指定的I2S的配置信息。 |
| 返回值 | 无 |
| 备注 | 该函数为weak类型的空函数,当开发者需要使用该回调函数时,可重写该API。 |
hal_i2s_error_callback
| 函数原型 | void hal_i2s_error_callback(i2s_handle_t *p_i2s) |
|---|---|
| 功能说明 | I2S错误回调函数。 |
| 输入参数 | p_i2s:指向i2s_handle_t结构体变量的指针,该结构体变量包含指定的I2S的配置信息。 |
| 返回值 | 无 |
| 备注 | 该函数为weak类型的空函数,当开发者需要使用该回调函数时,可重写该API。 |
hal_i2s_get_state
| 函数原型 | hal_i2s_state_t hal_i2s_state_t hal_i2s_get_state(i2s_handle_t *p_i2s) |
|---|---|
| 功能说明 | 获取I2S运行状态。 |
| 输入参数 | p_i2s:指向i2s_handle_t结构体变量的指针,该结构体变量包含指定的I2S的配置信息。 |
| 返回值 |
I2S运行状态,该参数的取值可以是下列值中的任意一个:
|
| 备注 |
hal_i2s_get_error
| 函数原型 | uint32_t hal_i2s_get_error(i2s_handle_t *p_i2s) |
|---|---|
| 功能说明 | 返回I2S句柄错误码。 |
| 输入参数 | p_i2s:指向i2s_handle_t结构体变量的指针,该结构体变量包含指定的I2S的配置信息。 |
| 返回值 |
I2S错误码,该参数的取值可以是下列值中的任意一个:
|
| 备注 |
hal_i2s_start_clock
| 函数原型 |
hal_status_t hal_i2s_start_clock(i2s_handle_t *p_i2s) |
|---|---|
| 功能说明 |
开始输出时钟(作为主设备)。 |
| 输入参数 |
p_i2s:指向i2s_handle_t结构体变量的指针,该结构体变量包含指定的I2S的配置信息。 |
| 返回值 |
HAL状态。 |
| 备注 |
hal_i2s_stop_clock
| 函数原型 | hal_status_t hal_i2s_stop_clock(i2s_handle_t *p_i2s) |
|---|---|
| 功能说明 | 停止输出时钟(作为主设备)。 |
| 输入参数 | p_i2s:指向i2s_handle_t结构体变量的指针,该结构体变量包含指定的I2S的配置信息。 |
| 返回值 | HAL状态。 |
| 备注 |
hal_i2s_set_tx_fifo_threshold
| 函数原型 | hal_status_t hal_i2s_set_tx_fifo_threshold(i2s_handle_t *p_i2s, uint32_t threshold) |
|---|---|
| 功能说明 | 设置TX FIFO阈值。 |
| 输入参数 | p_i2s:指向i2s_handle_t结构体变量的指针,该结构体变量包含指定的I2S的配置信息。 threshold:待设置的阈值参数。 |
| 返回值 | HAL状态。 |
| 备注 |
hal_i2s_set_rx_fifo_threshold
| 函数原型 | hal_status_t hal_i2s_set_rx_fifo_threshold(i2s_handle_t *p_i2s, uint32_t threshold) |
|---|---|
| 功能说明 | 设置RX FIFO阈值。 |
| 输入参数 | p_i2s:指向i2s_handle_t结构体变量的指针,该结构体变量包含指定的I2S的配置信息。 threshold: 待设置的阈值参数。 |
| 返回值 | HAL状态。 |
| 备注 |
hal_i2s_get_tx_fifo_threshold
| 函数原型 | uint32_t hal_i2s_get_tx_fifo_threshold(i2s_handle_t *p_i2s) |
|---|---|
| 功能说明 | 获取TX FIFO阈值。 |
| 输入参数 | p_i2s:指向i2s_handle_t结构体变量的指针,该结构体变量包含指定的I2S的配置信息。 |
| 返回值 | TX FIFO阈值。 |
| 备注 |
hal_i2s_get_rx_fifo_threshold
| 函数原型 | uint32_t hal_i2s_get_tx_fifo_threshold(i2s_handle_t *p_i2s) |
|---|---|
| 功能说明 | 获取RX FIFO阈值。 |
| 输入参数 | p_i2s:指向i2s_handle_t结构体变量的指针,该结构体变量包含指定的I2S的配置信息。 |
| 返回值 | RX FIFO阈值。 |
| 备注 |
hal_i2s_suspend_reg
| 函数原型 | hal_status_t hal_i2s_suspend_reg(i2s_handle_t *p_i2s) |
|---|---|
| 功能说明 | 睡眠之前挂起和I2S配置相关的寄存器 |
| 输入参数 | p_i2s:指向i2s_handle_t结构体变量的指针,该结构体变量包含指定的I2S的配置信息。 |
| 返回值 | HAL状态。 |
| 备注 |
hal_i2s_resume_reg
| 函数原型 | hal_status_t hal_i2s_resume_reg(i2s_handle_t *p_i2s) |
|---|---|
| 功能说明 | 唤醒时恢复和I2S配置相关的寄存器 |
| 输入参数 | p_i2s:指向i2s_handle_t结构体变量的指针,该结构体变量包含指定的I2S的配置信息。 |
| 返回值 | HAL状态。 |
| 备注 |