介绍关于I2S初始化、收发数据、暂停、恢复、停止、关闭等功能所调用的一些抽象函数。

API列表

函数名称 功能描述
hal_i2s_init 初始化指定I2S端口
hal_i2s_send 从指定的I2S端口发送数据
hal_i2s_recv 从指定的I2S端口接收数据
hal_i2s_pause 暂停指定的I2S端口
hal_i2s_resume 恢复指定的I2S端口
hal_i2s_stop 停止指定的I2S端口
hal_i2s_finalize 关闭指定I2S端口

hal_i2s_init

定义描述
定义 描述
函数原型 int32_t hal_i2s_init(i2s_dev_t *i2s)
描述 初始化指定I2S端口
参数 i2s:I2S设备描述,定义需要初始化的I2S参数
返回值 返回成功或失败,返回0表示I2S初始化成功,非0表示失败

hal_i2s_send

定义描述
定义 描述
函数原型 int32_t hal_i2s_send(i2s_dev_t *i2s, const void *data, uint32_t size, uint32_t timeout)
描述 从指定的I2S端口发送数据
参数
  • i2s:I2S设备描述
  • data:指向发送缓冲区的数据指针
  • size:要发送的数据字节数
  • timeout:超时时间(单位ms),如果希望一直等待设置为HAL_WAIT_FOREVER
返回值 返回成功或失败,返回0表示I2S数据发送成功,非0表示失败

hal_i2s_recv

定义描述
定义 描述
函数原型 int32_t hal_i2s_recv(i2s_dev_t *i2s, void *data, uint32_t size, uint32_t timeout)
描述 从指定的I2S端口接收数据
参数
  • i2s:I2S设备描述
  • data:指向接收缓冲区的数据指针
  • size:期望接收的数据字节数
  • timeout:超时时间(单位ms),如果希望一直等待设置为HAL_WAIT_FOREVER
返回值 返回成功或失败,返回0表示成功接收size个数据,非0表示失败

hal_i2s_pause

定义描述
定义 描述
函数原型 int32_t hal_i2s_pause(i2s_dev_t *i2s)
描述 暂停指定I2S端口
参数 i2s:I2S设备描述
返回值 返回成功或失败,返回0表示暂停成功,非0表示失败

hal_i2s_resume

定义描述
定义 描述
函数原型 int32_t hal_i2s_resume(i2s_dev_t *i2s)
描述 恢复指定I2S端口
参数 i2s:I2S设备描述
返回值 返回成功或失败,返回0表示恢复成功,非0表示失败

hal_i2s_stop

定义描述
定义 描述
函数原型 int32_t hal_i2s_stop(i2s_dev_t *i2s)
描述 停止指定I2S端口
参数 i2s:I2S设备描述
返回值 返回成功或失败,返回0表示停止成功,非0表示失败

hal_i2s_finalize

定义描述
定义 描述
函数原型 int32_t hal_i2s_finalize(i2s_dev_t *i2s)
描述 关闭指定I2S端口
参数 i2s:I2S设备描述
返回值 返回成功或失败,返回0表示关闭成功,非0表示失败

i2s_dev_t数据结构

typedef struct {
    uint8_t      port;   /* i2s port */
    i2s_config_t config; /* i2s config */
    void        *priv;   /* priv data */
} i2s_dev_t;

i2s_config_t数据结构

typedef struct {
    uint32_t              freq;         /* I2S communication frequency */
    hal_i2s_mode_t        mode;         /* I2S operating mode */
    hal_i2s_std_t         standard;     /* I2S communication standard */
    hal_i2s_data_format_t data_format;  /* I2S communication data format */
} i2s_config_t;

hal_i2s_mode_t数据结构

typedef enum {
    MODE_SLAVE_TX,
    MODE_SLAVE_RX,
    MODE_MASTER_TX,
    MODE_MASTER_RX
} hal_i2s_mode_t;

hal_i2s_std_t数据结构

typedef enum {
    STANDARD_PHILIPS,
    STANDARD_MSB,
    STANDARD_LSB,
    STANDARD_PCM_SHORT,
    STANDARD_PCM_LONG
} hal_i2s_std_t;

hal_i2s_data_format_t数据结构

typedef enum {
    DATAFORMAT_16B,
    DATAFORMAT_16B_EXTENDED,
    DATAFORMAT_24B,
    DATAFORMAT_32B
} hal_i2s_data_format_t;