CN / EN
文档反馈
感谢关注汇顶文档,期待您的宝贵建议!
感谢您的反馈,祝您愉快!
无匹配项 共计114个匹配页面

I2S驱动的结构体

i2s_init_t

I2S驱动的初始化结构体i2s_init_t的定义如下:

表 446 i2s_init_t结构体
数据域 域段描述 取值

uint32_t data_size

数据传输宽度

该参数的取值可以是下列值中的任意一个:

  • I2S_DATASIZE_12BIT(12 bits)
  • I2S_DATASIZE_16BIT(16 bits)
  • I2S_DATASIZE_20BIT(20 bits)
  • I2S_DATASIZE_24BIT(24 bits)
  • I2S_DATASIZE_32BIT(32 bits)

说明

  • data_size = I2S_DATASIZE_12BIT(12 bits),传输的数据以16bit地址对齐存放,高4 bits数据被忽略;硬件使用的WSS(字采样长度)为16 sclk cycles,高4 bits被忽略;
  • data_size = I2S_DATASIZE_20BIT(20 bits),传输的数据以32 bit地址对齐存放,高12 bits数据被忽略;硬件使用的WSS(字采样长度)为24 sclk cycles,高4 bit被忽略;
  • data_size = I2S_DATASIZE_24BIT(24 bits),传输的数据以32 bit地址对齐存放,高8 bits数据被忽略;硬件使用的WSS(字采样长度)为24 sclk cycles。

uint32_t clock_source

时钟源

该参数的取值可以是下列值中的任意一个:

  • I2S_CLOCK_SRC_96M
  • I2S_CLOCK_SRC_32M

uint32_t audio_freq

音频频率

audio_freq = fsck/(2 * wss),fsck是I2S的串行时钟频率,最大取值为3027 kHz;WSS依赖于位宽参数可取值16、24、32,比如位宽配置为16 bit,WSS取值为16,audio_freq最大可配置为96 kHz。

i2s_handle_t

I2S驱动的句柄结构体i2s_handle_t的定义如下:

表 447 i2s_handle_t结构体
数据域 域段描述 取值

i2s_regs_t *p_instance

I2S实例。

该参数的取值可以是下列值中的任意一个:

  • I2S_M
  • I2S_S

i2s_init_t init

初始化结构体。

参考i2s_init_t结构体。

uint16_t *p_tx_buffer

指向数据传输缓冲区的指针(驱动负责管理,无需开发者初始化)。

N/A

__IO uint32_t tx_xfer_size

数据传输长度(驱动负责管理,无需开发者初始化)。

N/A

__IO uint32_t tx_xfer_count

数据传输计数(驱动负责管理,无需开发者初始化)。

N/A

uint16_t *p_rx_buffer

指向数据接收缓冲区的指针(驱动负责管理,无需开发者初始化)。

N/A

__IO uint32_t rx_xfer_size

数据接收长度(驱动负责管理,无需开发者初始化)。

N/A

__IO uint32_t rx_xfer_count

数据接收计数(驱动负责管理,无需开发者初始化)。

N/A

void (*write_fifo)(struct _i2s_handle *p_i2s)

指向I2S TX写FIFO函数的指针(驱动负责管理,无需开发者初始化)。

N/A

void (*read_fifo)(struct _i2s_handle *p_i2s)

指向I2S RX读FIFO函数的指针(驱动负责管理,无需开发者初始化)。

N/A

dma_handle_t *p_dmatx

指向I2S TX通道的DMA句柄的指针。

发送通道的DMA句柄dma_handle_t结构体。

dma_handle_t *p_dmarx

指向I2S RX通道的 DMA句柄的指针。

接收通道的DMA句柄dma_handle_t结构体。

__IO hal_lock_t lock

I2S锁(驱动负责管理,无需开发者初始化)。

N/A

__IO hal_i2s_state_t state

I2S运行状态(无需开发者初始化)。

该参数的取值可以是下列值中的任意一个:

  • HAL_I2S_STATE_RESET(未初始化)
  • HAL_I2S_STATE_READY(已初始化且空闲)
  • HAL_I2S_STATE_BUSY(忙)
  • HAL_I2S_STATE_BUSY_TX(正在发送)
  • HAL_I2S_STATE_BUSY_RX (正在接收)
  • HAL_I2S_STATE_BUSY_TX_RX (正在进行发送与接收)
  • HAL_I2S_STATE_ABORT(被中断)
  • HAL_I2S_STATE_ERROR(错误)

__IO uint32_t error_code

I2S错误码(无需开发者初始化)。

该参数的取值可以是下列值中的任意一个:

  • HAL_I2S_ERROR_NONE(无错误)
  • HAL_I2S_ERROR_TIMEOUT(超时)
  • HAL_I2S_ERROR_TRANSFER(传输错误)
  • HAL_I2S_ERROR_DMA(DMA传输错误)
  • HAL_I2S_ERROR_INVALID_PARAM(参数错误)

扫描关注

打开微信,使用“扫一扫”即可关注。