1 /** 2 * @file hi_i2s.h 3 * 4 * Copyright (c) 2020 HiSilicon (Shanghai) Technologies CO., LIMITED. 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 /** 19 * @defgroup iot_i2s I2S 20 * @ingroup drivers 21 */ 22 #ifndef __HI_I2S_H__ 23 #define __HI_I2S_H__ 24 25 /** 26 * @ingroup iot_i2s 27 * 28 * sample rate. 29 */ 30 typedef enum { 31 HI_I2S_SAMPLE_RATE_8K = 8, 32 HI_I2S_SAMPLE_RATE_16K = 16, 33 HI_I2S_SAMPLE_RATE_32K = 32, 34 HI_I2S_SAMPLE_RATE_48K = 48, 35 } hi_i2s_sample_rate; 36 37 /** 38 * @ingroup iot_i2s 39 * 40 * resolution. 41 */ 42 typedef enum { 43 HI_I2S_RESOLUTION_16BIT = 16, 44 HI_I2S_RESOLUTION_24BIT = 24, 45 } hi_i2s_resolution; 46 47 /** 48 * @ingroup iot_i2s 49 * 50 * I2S attributes. 51 */ 52 typedef struct { 53 hi_i2s_sample_rate sample_rate; /**< i2s sample rate, type hi_i2s_sample_rate.CNcomment:采样率,类型为 54 hi_i2s_sample_rate。CNend */ 55 hi_i2s_resolution resolution; /**< i2s resolution, type hi_i2s_resolution.CNcomment:解析度,类型为 56 hi_i2s_resolution。CNend */ 57 } hi_i2s_attribute; 58 59 /** 60 * @ingroup iot_i2s 61 * @brief I2S initialization. CNcomment:I2S初始化。CNend 62 * 63 * @par 描述: 64 * Set I2S with configuration. CNcomment:根据参数配置I2S。CNend 65 * 66 * @attention Should init DMA driver before using I2S. CNcomment:使用I2S驱动前,需要初始化DMA驱动。CNend 67 * 68 * @param i2s_attribute [IN] type #hi_i2s_attribute*,I2S configuration parameter. CNcomment:I2S配置参数。CNend 69 * 70 * @retval #HI_ERR_SUCCESS Success. 71 * @retval #Other Failure. For details, see hi_errno.h. 72 * @par 依赖: 73 * @li hi_i2s.h:Describes I2S APIs.CNcomment:I2S相关接口。CNend 74 * @see hi_i2s_deinit。 75 */ 76 hi_u32 hi_i2s_init(const hi_i2s_attribute *i2s_attribute); 77 78 /** 79 * @ingroup iot_i2s 80 * @brief Deinitializes I2S.CNcomment:去初始化I2S。CNend 81 * 82 * @par 描述: 83 * Deinitializes I2S.CNcomment:去初始化I2S。CNend 84 * 85 * @attention This API is used together with hi_i2s_init.CNcomment:与hi_i2s_init成对使用。CNend 86 * @param None 87 * 88 * @retval #HI_ERR_SUCCESS Success. 89 * @retval #Other Failure. For details, see hi_errno.h. 90 * @par 依赖: 91 * @li hi_i2s.h:Describes I2S APIs.CNcomment:I2S相关接口。CNend 92 * @see hi_i2s_deinit。 93 */ 94 hi_u32 hi_i2s_deinit(hi_void); 95 96 /** 97 * @ingroup iot_i2s 98 * @brief TX interface for the I2S.CNcomment:I2S发送接口。CNend 99 * 100 * @par 描述: 101 * TX interface for the I2S.CNcomment:I2S发送接口。CNend 102 * 103 * @attention None 104 * 105 * @param wr_data [OUT] type #hi_u8*,TX data pointer.CNcomment:接收数据指针。CNend 106 * @param wr_len [IN] type #hi_u32,length of the target data to be send (unit: byte). 107 CNcomment:发送数据长度(单位:byte)。CNend 108 * @param time_out_ms [IN] type #hi_u32,wait timeout period.CNcomment:超时时间。CNend 109 * 110 * @retval #HI_ERR_SUCCESS Success. 111 * @retval #Other Failure. For details, see hi_errno.h. 112 * @par 依赖: 113 * @li hi_i2s.h:Describes I2S APIs.CNcomment:I2S相关接口。CNend 114 * @see hi_i2s_read。 115 */ 116 hi_u32 hi_i2s_write(hi_u8 *wr_data, hi_u32 wr_len, hi_u32 time_out_ms); 117 118 /** 119 * @ingroup iot_i2s 120 * @brief Read interface for the I2S.CNcomment:I2S接收接口。CNend 121 * 122 * @par 描述: 123 * Read interface for the I2S.CNcomment:I2S接收接口。CNend 124 * 125 * @attention None 126 * 127 * @param rd_data [OUT] type #hi_u8*,RX data pointer.CNcomment:接收数据指针。CNend 128 * @param rd_len [IN] type #hi_u32,length of the target data to be received (unit: byte). 129 CNcomment:接收数据长度(单位:byte)。CNend 130 * @param time_out_ms [IN] type #hi_u32,wait timeout period.CNcomment:超时时间。CNend 131 * 132 * @retval #HI_ERR_SUCCESS Success. 133 * @retval #Other Failure. For details, see hi_errno.h. 134 * @par 依赖: 135 * @li hi_i2s.h:Describes I2S APIs.CNcomment:I2S相关接口。CNend 136 * @see hi_i2s_write。 137 */ 138 hi_u32 hi_i2s_read(hi_u8 *rd_data, hi_u32 rd_len, hi_u32 time_out_ms); 139 140 #endif 141