• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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