I2S

介绍

对于不同底层驱动的I2S操作实现,统一封装成本文所述hal i2s接口。 hal相关头文件位于目录:include/aos/hal hal相关实现位于具体的mcu目录下,如:platform/mcu/stm32f1xx/hal

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端口

API详情

请参考include/aos/hal/timer.h

相关结数据结构

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,   /**< Philips standard */
    STANDARD_MSB,       /**< MSB align standard */
    STANDARD_LSB,       /**< LSB align standard */
    STANDARD_PCM_SHORT, /**< PCM short frame standard */
    STANDARD_PCM_LONG   /**< PCM long frame standard */
} hal_i2s_std_t;

hal_i2s_data_format_t

typedef enum {
    DATAFORMAT_16B,             /**< 16 bit dataformat */
    DATAFORMAT_16B_EXTENDED,    /**< 16 bit externded dataformat, 32 bit frame */
    DATAFORMAT_24B,             /**< 24 bit dataformat */
    DATAFORMAT_32B              /**< 32 bit dataformat */
} hal_i2s_data_format_t;

hal_i2s_init

初始化指定I2S端口

函数原型

int32_t hal_i2s_init(i2s_dev_t *i2s);

参数

参数名称 出入参 参数描述 参数示例
i2s_dev_t *i2s 入参 I2S设备描述,定义需要初始化的I2S参数 用户自定义一个i2s_dev_t结构体

返回值

返回成功或失败, 返回0表示I2S初始化成功,非0表示失败

调用示例

hal_i2s_send

从指定的I2S端口发送数据

函数原型

int32_t hal_i2s_send(i2s_dev_t *i2s, const void *data, uint32_t size, uint32_t timeout);

参数

参数名称 出入参 参数描述 参数示例
i2s_dev_t *i2s 入参 I2S设备描述 使用hal_i2s_init传入结构体
const void *data 入参 指向发送缓冲区的数据指针 char pdata[10]
uint32_t size 入参 要发送的数据字节数 10
uint32_t timeout 入参 超时时间(单位ms),如果希望一直等待设置为HAL_WAIT_FOREVER 10

返回值

返回成功或失败, 返回0表示I2S数据发送成功,非0表示失败

调用示例

hal_i2s_recv

从指定的I2S端口接收数据

函数原型

int32_t hal_i2s_recv(i2s_dev_t *i2s, void *data, uint32_t size, uint32_t timeout);

参数

参数名称 出入参 参数描述 参数示例
i2s_dev_t *i2s 入参 I2S设备描述 使用hal_i2s_init传入结构体
void *data 入参 指向接收缓冲区的数据指针 char pdata[10]
uint32_t size 入参 要发送的数据字节数 10
uint32_t timeout 入参 超时时间(单位ms),如果希望一直等待设置为HAL_WAIT_FOREVER 10

返回值

返回成功或失败, 返回0表示成功接收size个数据,非0表示失败

调用示例

hal_i2s_pause

暂停指定I2S端口

函数原型

int32_t hal_i2s_pause(i2s_dev_t *i2s);

参数

参数名称 出入参 参数描述 参数示例
i2s_dev_t *i2s 入参 I2S设备描述 使用hal_i2s_init传入结构体

返回值

返回成功或失败, 返回0表示暂停成功,非0表示失败

调用示例

hal_i2s_resume

恢复指定I2S端口

函数原型

int32_t hal_i2s_resume(i2s_dev_t *i2s);

参数

参数名称 出入参 参数描述 参数示例
i2s_dev_t *i2s 入参 I2S设备描述 使用hal_i2s_init传入结构体

返回值

返回成功或失败, 返回0恢复成功,非0表示失败

调用示例

hal_i2s_stop

停止指定I2S端口

函数原型

int32_t hal_i2s_stop(i2s_dev_t *i2s);

参数

参数名称 出入参 参数描述 参数示例
i2s_dev_t *i2s 入参 I2S设备描述 使用hal_i2s_init传入结构体

返回值

返回成功或失败, 返回0表示停止成功,非0表示失败

调用示例

hal_i2s_finalize

关闭指定I2S端口

函数原型

int32_t hal_i2s_finalize(i2s_dev_t *i2s);

参数

参数名称 出入参 参数描述 参数示例
i2s_dev_t *i2s 入参 I2S设备描述 使用hal_i2s_init传入结构体

返回值

返回成功或失败, 返回0表示关闭成功,非0表示失败

调用示例

使用

添加该组件

在相应的platform/mcu的mk内,添加对应hal文件的编译包含。

包含头文件

#include "aos/hal/i2s.h"

使用示例

移植说明

results matching ""

    No results matching ""