1 // Copyright (C) 2022 Beken Corporation
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14
15 /***********************************************************************************************************************************
16 * This file is generated from BK7256_ADDR Mapping_20211224_format_change_highlight_20220113_update.xlsm automatically
17 * Modify it manually is not recommended
18 * CHIP ID:BK7256,GENARATE TIME:2022-02-09 17:28:47
19 ************************************************************************************************************************************/
20
21 #pragma once
22
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26
27 #include <soc/soc.h>
28
29 #define I2S_LL_REG_BASE (SOC_I2S_REG_BASE) //REG_BASE:0x47810000
30
31 /* REG_0x00 */
32 #define I2S_REG0X0_ADDR (I2S_LL_REG_BASE + 0x0*4) //REG ADDR :0x47810000
33 #define I2S_REG0X0_BITRATIO_POS (0)
34 #define I2S_REG0X0_BITRATIO_MASK (0xFF)
35
36 #define I2S_REG0X0_SMPRATIO_POS (8)
37 #define I2S_REG0X0_SMPRATIO_MASK (0x1F)
38
39 #define I2S_REG0X0_PCM_DLEN_POS (13)
40 #define I2S_REG0X0_PCM_DLEN_MASK (0x7)
41
42 #define I2S_REG0X0_DATALEN_POS (16)
43 #define I2S_REG0X0_DATALEN_MASK (0x1F)
44
45 #define I2S_REG0X0_SYNCLEN_POS (21)
46 #define I2S_REG0X0_SYNCLEN_MASK (0x7)
47
48 #define I2S_REG0X0_LSBFIRST_POS (24)
49 #define I2S_REG0X0_LSBFIRST_MASK (0x1)
50
51 #define I2S_REG0X0_SCLKINV_POS (25)
52 #define I2S_REG0X0_SCLKINV_MASK (0x1)
53
54 #define I2S_REG0X0_LRCKRP_POS (26)
55 #define I2S_REG0X0_LRCKRP_MASK (0x1)
56
57 #define I2S_REG0X0_MODESEL_POS (27)
58 #define I2S_REG0X0_MODESEL_MASK (0x7)
59
60 #define I2S_REG0X0_MSTEN_POS (30)
61 #define I2S_REG0X0_MSTEN_MASK (0x1)
62
63 #define I2S_REG0X0_I2SPCMEN_POS (31)
64 #define I2S_REG0X0_I2SPCMEN_MASK (0x1)
65
i2s_ll_get_reg0x0_value(void)66 static inline uint32_t i2s_ll_get_reg0x0_value(void)
67 {
68 return REG_READ(I2S_REG0X0_ADDR);
69 }
70
i2s_ll_set_reg0x0_value(uint32_t value)71 static inline void i2s_ll_set_reg0x0_value(uint32_t value)
72 {
73 REG_WRITE(I2S_REG0X0_ADDR,value);
74 }
75
76 /* REG_0x00:reg0x0->BITRATIO:0x0[7:0],串行时钟SCK的比特率,即相对于系统时钟SYS_CLK的分频比(仅Maseter有效); Fsck = Fsys_clk / 2*(BITRATIO)。; 【注意】配置0对应不分频,0x0,R/W*/
i2s_ll_get_reg0x0_bitratio(void)77 static inline uint32_t i2s_ll_get_reg0x0_bitratio(void)
78 {
79 uint32_t reg_value;
80 reg_value = REG_READ(I2S_REG0X0_ADDR);
81 reg_value = ((reg_value >> I2S_REG0X0_BITRATIO_POS) & I2S_REG0X0_BITRATIO_MASK);
82 return reg_value;
83 }
84
i2s_ll_set_reg0x0_bitratio(uint32_t value)85 static inline void i2s_ll_set_reg0x0_bitratio(uint32_t value)
86 {
87 uint32_t reg_value;
88 reg_value = REG_READ(I2S_REG0X0_ADDR);
89 reg_value &= ~(I2S_REG0X0_BITRATIO_MASK << I2S_REG0X0_BITRATIO_POS);
90 reg_value |= ((value & I2S_REG0X0_BITRATIO_MASK) << I2S_REG0X0_BITRATIO_POS);
91 REG_WRITE(I2S_REG0X0_ADDR,reg_value);
92 }
93
94 /* REG_0x00:reg0x0->SMPRATIO:0x0[12:8],采样速率指示。(单位是SCK); Fs = Fsck / 2*(SMPRATIO+1); 【注意】该配置值表示单个声道的SCK个数。若2B+D模式下,同步信号之间的间隔等于2*(SMPRATIO+1),其它模式下同步(左右声道指示)信号的变化间隔等于(SMPRATIO+1)。,0x0,R/W*/
i2s_ll_get_reg0x0_smpratio(void)95 static inline uint32_t i2s_ll_get_reg0x0_smpratio(void)
96 {
97 uint32_t reg_value;
98 reg_value = REG_READ(I2S_REG0X0_ADDR);
99 reg_value = ((reg_value >> I2S_REG0X0_SMPRATIO_POS) & I2S_REG0X0_SMPRATIO_MASK);
100 return reg_value;
101 }
102
i2s_ll_set_reg0x0_smpratio(uint32_t value)103 static inline void i2s_ll_set_reg0x0_smpratio(uint32_t value)
104 {
105 uint32_t reg_value;
106 reg_value = REG_READ(I2S_REG0X0_ADDR);
107 reg_value &= ~(I2S_REG0X0_SMPRATIO_MASK << I2S_REG0X0_SMPRATIO_POS);
108 reg_value |= ((value & I2S_REG0X0_SMPRATIO_MASK) << I2S_REG0X0_SMPRATIO_POS);
109 REG_WRITE(I2S_REG0X0_ADDR,reg_value);
110 }
111
112 /* REG_0x00:reg0x0->PCM_DLEN:0x0[15:13],2B+D的PCM模式中D的长度(单位是SCK)。,0x0,R/W*/
i2s_ll_get_reg0x0_pcm_dlen(void)113 static inline uint32_t i2s_ll_get_reg0x0_pcm_dlen(void)
114 {
115 uint32_t reg_value;
116 reg_value = REG_READ(I2S_REG0X0_ADDR);
117 reg_value = ((reg_value >> I2S_REG0X0_PCM_DLEN_POS) & I2S_REG0X0_PCM_DLEN_MASK);
118 return reg_value;
119 }
120
i2s_ll_set_reg0x0_pcm_dlen(uint32_t value)121 static inline void i2s_ll_set_reg0x0_pcm_dlen(uint32_t value)
122 {
123 uint32_t reg_value;
124 reg_value = REG_READ(I2S_REG0X0_ADDR);
125 reg_value &= ~(I2S_REG0X0_PCM_DLEN_MASK << I2S_REG0X0_PCM_DLEN_POS);
126 reg_value |= ((value & I2S_REG0X0_PCM_DLEN_MASK) << I2S_REG0X0_PCM_DLEN_POS);
127 REG_WRITE(I2S_REG0X0_ADDR,reg_value);
128 }
129
130 /* REG_0x00:reg0x0->DATALEN:0x0[20:16],传输数据长度; 0~31分别表示1~32bit。,0x0,R/W*/
i2s_ll_get_reg0x0_datalen(void)131 static inline uint32_t i2s_ll_get_reg0x0_datalen(void)
132 {
133 uint32_t reg_value;
134 reg_value = REG_READ(I2S_REG0X0_ADDR);
135 reg_value = ((reg_value >> I2S_REG0X0_DATALEN_POS) & I2S_REG0X0_DATALEN_MASK);
136 return reg_value;
137 }
138
i2s_ll_set_reg0x0_datalen(uint32_t value)139 static inline void i2s_ll_set_reg0x0_datalen(uint32_t value)
140 {
141 uint32_t reg_value;
142 reg_value = REG_READ(I2S_REG0X0_ADDR);
143 reg_value &= ~(I2S_REG0X0_DATALEN_MASK << I2S_REG0X0_DATALEN_POS);
144 reg_value |= ((value & I2S_REG0X0_DATALEN_MASK) << I2S_REG0X0_DATALEN_POS);
145 REG_WRITE(I2S_REG0X0_ADDR,reg_value);
146 }
147
148 /* REG_0x00:reg0x0->SYNCLEN:0x0[23:21],Sync长度(仅Long Frame Sync模式下有效)。; 1~7分别对应2~8个Bit Clock Cycle,0x0,R/W*/
i2s_ll_get_reg0x0_synclen(void)149 static inline uint32_t i2s_ll_get_reg0x0_synclen(void)
150 {
151 uint32_t reg_value;
152 reg_value = REG_READ(I2S_REG0X0_ADDR);
153 reg_value = ((reg_value >> I2S_REG0X0_SYNCLEN_POS) & I2S_REG0X0_SYNCLEN_MASK);
154 return reg_value;
155 }
156
i2s_ll_set_reg0x0_synclen(uint32_t value)157 static inline void i2s_ll_set_reg0x0_synclen(uint32_t value)
158 {
159 uint32_t reg_value;
160 reg_value = REG_READ(I2S_REG0X0_ADDR);
161 reg_value &= ~(I2S_REG0X0_SYNCLEN_MASK << I2S_REG0X0_SYNCLEN_POS);
162 reg_value |= ((value & I2S_REG0X0_SYNCLEN_MASK) << I2S_REG0X0_SYNCLEN_POS);
163 REG_WRITE(I2S_REG0X0_ADDR,reg_value);
164 }
165
166 /* REG_0x00:reg0x0->LSBFIRST:0x0[24],LSB先发送/接收使能信号; 0:MSB先发送/接收; 1:LSB先发送/接收,0x0,R/W*/
i2s_ll_get_reg0x0_lsbfirst(void)167 static inline uint32_t i2s_ll_get_reg0x0_lsbfirst(void)
168 {
169 uint32_t reg_value;
170 reg_value = REG_READ(I2S_REG0X0_ADDR);
171 reg_value = ((reg_value >> I2S_REG0X0_LSBFIRST_POS) & I2S_REG0X0_LSBFIRST_MASK);
172 return reg_value;
173 }
174
i2s_ll_set_reg0x0_lsbfirst(uint32_t value)175 static inline void i2s_ll_set_reg0x0_lsbfirst(uint32_t value)
176 {
177 uint32_t reg_value;
178 reg_value = REG_READ(I2S_REG0X0_ADDR);
179 reg_value &= ~(I2S_REG0X0_LSBFIRST_MASK << I2S_REG0X0_LSBFIRST_POS);
180 reg_value |= ((value & I2S_REG0X0_LSBFIRST_MASK) << I2S_REG0X0_LSBFIRST_POS);
181 REG_WRITE(I2S_REG0X0_ADDR,reg_value);
182 }
183
184 /* REG_0x00:reg0x0->SCLKINV:0x0[25],SCK信号反转指示; 0:不反转; 1:反转; 【注意】本模块的输入数据在SCLK的上升沿采样,输出数据在SCLK的下降沿变化。若对端通信的器件的时序要求与本模块不同,则需将该比特配置为’1’。,0x0,R/W*/
i2s_ll_get_reg0x0_sclkinv(void)185 static inline uint32_t i2s_ll_get_reg0x0_sclkinv(void)
186 {
187 uint32_t reg_value;
188 reg_value = REG_READ(I2S_REG0X0_ADDR);
189 reg_value = ((reg_value >> I2S_REG0X0_SCLKINV_POS) & I2S_REG0X0_SCLKINV_MASK);
190 return reg_value;
191 }
192
i2s_ll_set_reg0x0_sclkinv(uint32_t value)193 static inline void i2s_ll_set_reg0x0_sclkinv(uint32_t value)
194 {
195 uint32_t reg_value;
196 reg_value = REG_READ(I2S_REG0X0_ADDR);
197 reg_value &= ~(I2S_REG0X0_SCLKINV_MASK << I2S_REG0X0_SCLKINV_POS);
198 reg_value |= ((value & I2S_REG0X0_SCLKINV_MASK) << I2S_REG0X0_SCLKINV_POS);
199 REG_WRITE(I2S_REG0X0_ADDR,reg_value);
200 }
201
202 /* REG_0x00:reg0x0->LRCKRP:0x0[26],LRCK信号反转指示(仅MODESEL的最高位配置’0’时有效); 0:不反转; 1:反转; 【注意】本模块中LRCK的低电平表示右声道,高电平表示左声道。而有些应用的时序刚好相反(即低表示左声道,高表示右声道),此时需将该比特配置为’1’。,0x0,R/W*/
i2s_ll_get_reg0x0_lrckrp(void)203 static inline uint32_t i2s_ll_get_reg0x0_lrckrp(void)
204 {
205 uint32_t reg_value;
206 reg_value = REG_READ(I2S_REG0X0_ADDR);
207 reg_value = ((reg_value >> I2S_REG0X0_LRCKRP_POS) & I2S_REG0X0_LRCKRP_MASK);
208 return reg_value;
209 }
210
i2s_ll_set_reg0x0_lrckrp(uint32_t value)211 static inline void i2s_ll_set_reg0x0_lrckrp(uint32_t value)
212 {
213 uint32_t reg_value;
214 reg_value = REG_READ(I2S_REG0X0_ADDR);
215 reg_value &= ~(I2S_REG0X0_LRCKRP_MASK << I2S_REG0X0_LRCKRP_POS);
216 reg_value |= ((value & I2S_REG0X0_LRCKRP_MASK) << I2S_REG0X0_LRCKRP_POS);
217 REG_WRITE(I2S_REG0X0_ADDR,reg_value);
218 }
219
220 /* REG_0x00:reg0x0->MODESEL:0x0[29:27],模块工作模式选择信号; 000:I2S (Philips); 001:Left Justified; 010:Right Justified; 011:保留; 100:Short Frame Sync; 101:Long Frame Sync; 110:Normal 2B+D(MSB位于LRCK的第一个上升沿位置); 111:Delay 2B+D (MSB位于LRCK的第二个上升沿位置); 【注意】2B+D模式下,若D等于0即GCI时序,若D不等于0即IDL时序,0x0,R/W*/
i2s_ll_get_reg0x0_modesel(void)221 static inline uint32_t i2s_ll_get_reg0x0_modesel(void)
222 {
223 uint32_t reg_value;
224 reg_value = REG_READ(I2S_REG0X0_ADDR);
225 reg_value = ((reg_value >> I2S_REG0X0_MODESEL_POS) & I2S_REG0X0_MODESEL_MASK);
226 return reg_value;
227 }
228
i2s_ll_set_reg0x0_modesel(uint32_t value)229 static inline void i2s_ll_set_reg0x0_modesel(uint32_t value)
230 {
231 uint32_t reg_value;
232 reg_value = REG_READ(I2S_REG0X0_ADDR);
233 reg_value &= ~(I2S_REG0X0_MODESEL_MASK << I2S_REG0X0_MODESEL_POS);
234 reg_value |= ((value & I2S_REG0X0_MODESEL_MASK) << I2S_REG0X0_MODESEL_POS);
235 REG_WRITE(I2S_REG0X0_ADDR,reg_value);
236 }
237
238 /* REG_0x00:reg0x0->MSTEN:0x0[30],主模式使能信号; 0:工作于从模式; 1:工作于主模式,0x0,R/W*/
i2s_ll_get_reg0x0_msten(void)239 static inline uint32_t i2s_ll_get_reg0x0_msten(void)
240 {
241 uint32_t reg_value;
242 reg_value = REG_READ(I2S_REG0X0_ADDR);
243 reg_value = ((reg_value >> I2S_REG0X0_MSTEN_POS) & I2S_REG0X0_MSTEN_MASK);
244 return reg_value;
245 }
246
i2s_ll_set_reg0x0_msten(uint32_t value)247 static inline void i2s_ll_set_reg0x0_msten(uint32_t value)
248 {
249 uint32_t reg_value;
250 reg_value = REG_READ(I2S_REG0X0_ADDR);
251 reg_value &= ~(I2S_REG0X0_MSTEN_MASK << I2S_REG0X0_MSTEN_POS);
252 reg_value |= ((value & I2S_REG0X0_MSTEN_MASK) << I2S_REG0X0_MSTEN_POS);
253 REG_WRITE(I2S_REG0X0_ADDR,reg_value);
254 }
255
256 /* REG_0x00:reg0x0->I2SPCMEN:0x0[31],I2S使能信号; 0:禁止模块工作; 1:允许模块工作,0x0,R/W*/
i2s_ll_get_reg0x0_i2spcmen(void)257 static inline uint32_t i2s_ll_get_reg0x0_i2spcmen(void)
258 {
259 uint32_t reg_value;
260 reg_value = REG_READ(I2S_REG0X0_ADDR);
261 reg_value = ((reg_value >> I2S_REG0X0_I2SPCMEN_POS) & I2S_REG0X0_I2SPCMEN_MASK);
262 return reg_value;
263 }
264
i2s_ll_set_reg0x0_i2spcmen(uint32_t value)265 static inline void i2s_ll_set_reg0x0_i2spcmen(uint32_t value)
266 {
267 uint32_t reg_value;
268 reg_value = REG_READ(I2S_REG0X0_ADDR);
269 reg_value &= ~(I2S_REG0X0_I2SPCMEN_MASK << I2S_REG0X0_I2SPCMEN_POS);
270 reg_value |= ((value & I2S_REG0X0_I2SPCMEN_MASK) << I2S_REG0X0_I2SPCMEN_POS);
271 REG_WRITE(I2S_REG0X0_ADDR,reg_value);
272 }
273
274 /* REG_0x01 */
275 #define I2S_REG0X1_ADDR (I2S_LL_REG_BASE + 0x1*4) //REG ADDR :0x47810004
276 #define I2S_REG0X1_RXINT_EN_POS (0)
277 #define I2S_REG0X1_RXINT_EN_MASK (0x1)
278
279 #define I2S_REG0X1_TXINT_EN_POS (1)
280 #define I2S_REG0X1_TXINT_EN_MASK (0x1)
281
282 #define I2S_REG0X1_RXOVF_EN_POS (2)
283 #define I2S_REG0X1_RXOVF_EN_MASK (0x1)
284
285 #define I2S_REG0X1_TXUDF_EN_POS (3)
286 #define I2S_REG0X1_TXUDF_EN_MASK (0x1)
287
288 #define I2S_REG0X1_RXINT_LEVEL_POS (4)
289 #define I2S_REG0X1_RXINT_LEVEL_MASK (0x3)
290
291 #define I2S_REG0X1_TXINT_LEVEL_POS (6)
292 #define I2S_REG0X1_TXINT_LEVEL_MASK (0x3)
293
294 #define I2S_REG0X1_TXFIFO_CLR_POS (8)
295 #define I2S_REG0X1_TXFIFO_CLR_MASK (0x1)
296
297 #define I2S_REG0X1_RXFIFO_CLR_POS (9)
298 #define I2S_REG0X1_RXFIFO_CLR_MASK (0x1)
299
300 #define I2S_REG0X1_SMPRATIO_H2B_POS (10)
301 #define I2S_REG0X1_SMPRATIO_H2B_MASK (0x3)
302
303 #define I2S_REG0X1_BITRATIO_H4B_POS (12)
304 #define I2S_REG0X1_BITRATIO_H4B_MASK (0xF)
305
306 #define I2S_REG0X1_LRCOM_STORE_POS (16)
307 #define I2S_REG0X1_LRCOM_STORE_MASK (0x1)
308
309 #define I2S_REG0X1_PARALLEL_EN_POS (17)
310 #define I2S_REG0X1_PARALLEL_EN_MASK (0x1)
311
312 #define I2S_REG0X1_RESERVED_POS (18)
313 #define I2S_REG0X1_RESERVED_MASK (0x3FFF)
314
i2s_ll_get_reg0x1_value(void)315 static inline uint32_t i2s_ll_get_reg0x1_value(void)
316 {
317 return REG_READ(I2S_REG0X1_ADDR);
318 }
319
i2s_ll_set_reg0x1_value(uint32_t value)320 static inline void i2s_ll_set_reg0x1_value(uint32_t value)
321 {
322 REG_WRITE(I2S_REG0X1_ADDR,value);
323 }
324
325 /* REG_0x01:reg0x1->RXINT_EN:0x1[0],接收中断使能,0x0,R/W*/
i2s_ll_get_reg0x1_rxint_en(void)326 static inline uint32_t i2s_ll_get_reg0x1_rxint_en(void)
327 {
328 uint32_t reg_value;
329 reg_value = REG_READ(I2S_REG0X1_ADDR);
330 reg_value = ((reg_value >> I2S_REG0X1_RXINT_EN_POS) & I2S_REG0X1_RXINT_EN_MASK);
331 return reg_value;
332 }
333
i2s_ll_set_reg0x1_rxint_en(uint32_t value)334 static inline void i2s_ll_set_reg0x1_rxint_en(uint32_t value)
335 {
336 uint32_t reg_value;
337 reg_value = REG_READ(I2S_REG0X1_ADDR);
338 reg_value &= ~(I2S_REG0X1_RXINT_EN_MASK << I2S_REG0X1_RXINT_EN_POS);
339 reg_value |= ((value & I2S_REG0X1_RXINT_EN_MASK) << I2S_REG0X1_RXINT_EN_POS);
340 REG_WRITE(I2S_REG0X1_ADDR,reg_value);
341 }
342
343 /* REG_0x01:reg0x1->TXINT_EN:0x1[1],发送中断使能,0x0,R/W*/
i2s_ll_get_reg0x1_txint_en(void)344 static inline uint32_t i2s_ll_get_reg0x1_txint_en(void)
345 {
346 uint32_t reg_value;
347 reg_value = REG_READ(I2S_REG0X1_ADDR);
348 reg_value = ((reg_value >> I2S_REG0X1_TXINT_EN_POS) & I2S_REG0X1_TXINT_EN_MASK);
349 return reg_value;
350 }
351
i2s_ll_set_reg0x1_txint_en(uint32_t value)352 static inline void i2s_ll_set_reg0x1_txint_en(uint32_t value)
353 {
354 uint32_t reg_value;
355 reg_value = REG_READ(I2S_REG0X1_ADDR);
356 reg_value &= ~(I2S_REG0X1_TXINT_EN_MASK << I2S_REG0X1_TXINT_EN_POS);
357 reg_value |= ((value & I2S_REG0X1_TXINT_EN_MASK) << I2S_REG0X1_TXINT_EN_POS);
358 REG_WRITE(I2S_REG0X1_ADDR,reg_value);
359 }
360
361 /* REG_0x01:reg0x1->RXOVF_EN:0x1[2],接收上溢(RXOVF)中断告警使能,0x0,R/W*/
i2s_ll_get_reg0x1_rxovf_en(void)362 static inline uint32_t i2s_ll_get_reg0x1_rxovf_en(void)
363 {
364 uint32_t reg_value;
365 reg_value = REG_READ(I2S_REG0X1_ADDR);
366 reg_value = ((reg_value >> I2S_REG0X1_RXOVF_EN_POS) & I2S_REG0X1_RXOVF_EN_MASK);
367 return reg_value;
368 }
369
i2s_ll_set_reg0x1_rxovf_en(uint32_t value)370 static inline void i2s_ll_set_reg0x1_rxovf_en(uint32_t value)
371 {
372 uint32_t reg_value;
373 reg_value = REG_READ(I2S_REG0X1_ADDR);
374 reg_value &= ~(I2S_REG0X1_RXOVF_EN_MASK << I2S_REG0X1_RXOVF_EN_POS);
375 reg_value |= ((value & I2S_REG0X1_RXOVF_EN_MASK) << I2S_REG0X1_RXOVF_EN_POS);
376 REG_WRITE(I2S_REG0X1_ADDR,reg_value);
377 }
378
379 /* REG_0x01:reg0x1->TXUDF_EN:0x1[3],发送下溢(TXUDF)中断告警使能,0x0,R/W*/
i2s_ll_get_reg0x1_txudf_en(void)380 static inline uint32_t i2s_ll_get_reg0x1_txudf_en(void)
381 {
382 uint32_t reg_value;
383 reg_value = REG_READ(I2S_REG0X1_ADDR);
384 reg_value = ((reg_value >> I2S_REG0X1_TXUDF_EN_POS) & I2S_REG0X1_TXUDF_EN_MASK);
385 return reg_value;
386 }
387
i2s_ll_set_reg0x1_txudf_en(uint32_t value)388 static inline void i2s_ll_set_reg0x1_txudf_en(uint32_t value)
389 {
390 uint32_t reg_value;
391 reg_value = REG_READ(I2S_REG0X1_ADDR);
392 reg_value &= ~(I2S_REG0X1_TXUDF_EN_MASK << I2S_REG0X1_TXUDF_EN_POS);
393 reg_value |= ((value & I2S_REG0X1_TXUDF_EN_MASK) << I2S_REG0X1_TXUDF_EN_POS);
394 REG_WRITE(I2S_REG0X1_ADDR,reg_value);
395 }
396
397 /* REG_0x01:reg0x1->RXINT_LEVEL:0x1[5:4],接收中断产生条件; 0:接收FIFO中有效数据超过1个就产生中断; 1:接收FIFO中有效数据超过8个才产生中断; 2:接收FIFO中有效数据超过16个才产生中断; 3:接收FIFO中有效数据超过24个才产生中断,0x0,R/W*/
i2s_ll_get_reg0x1_rxint_level(void)398 static inline uint32_t i2s_ll_get_reg0x1_rxint_level(void)
399 {
400 uint32_t reg_value;
401 reg_value = REG_READ(I2S_REG0X1_ADDR);
402 reg_value = ((reg_value >> I2S_REG0X1_RXINT_LEVEL_POS) & I2S_REG0X1_RXINT_LEVEL_MASK);
403 return reg_value;
404 }
405
i2s_ll_set_reg0x1_rxint_level(uint32_t value)406 static inline void i2s_ll_set_reg0x1_rxint_level(uint32_t value)
407 {
408 uint32_t reg_value;
409 reg_value = REG_READ(I2S_REG0X1_ADDR);
410 reg_value &= ~(I2S_REG0X1_RXINT_LEVEL_MASK << I2S_REG0X1_RXINT_LEVEL_POS);
411 reg_value |= ((value & I2S_REG0X1_RXINT_LEVEL_MASK) << I2S_REG0X1_RXINT_LEVEL_POS);
412 REG_WRITE(I2S_REG0X1_ADDR,reg_value);
413 }
414
415 /* REG_0x01:reg0x1->TXINT_LEVEL:0x1[7:6],发送中断产生条件; 0:发送FIFO中有效数据少于1个就产生中断; 1:发送FIFO中有效数据少于8个就产生中断; 2:发送FIFO中有效数据少于16个就产生中断; 3:发送FIFO中有效数据少于24个就产生中断,0x0,R/W*/
i2s_ll_get_reg0x1_txint_level(void)416 static inline uint32_t i2s_ll_get_reg0x1_txint_level(void)
417 {
418 uint32_t reg_value;
419 reg_value = REG_READ(I2S_REG0X1_ADDR);
420 reg_value = ((reg_value >> I2S_REG0X1_TXINT_LEVEL_POS) & I2S_REG0X1_TXINT_LEVEL_MASK);
421 return reg_value;
422 }
423
i2s_ll_set_reg0x1_txint_level(uint32_t value)424 static inline void i2s_ll_set_reg0x1_txint_level(uint32_t value)
425 {
426 uint32_t reg_value;
427 reg_value = REG_READ(I2S_REG0X1_ADDR);
428 reg_value &= ~(I2S_REG0X1_TXINT_LEVEL_MASK << I2S_REG0X1_TXINT_LEVEL_POS);
429 reg_value |= ((value & I2S_REG0X1_TXINT_LEVEL_MASK) << I2S_REG0X1_TXINT_LEVEL_POS);
430 REG_WRITE(I2S_REG0X1_ADDR,reg_value);
431 }
432
433 /* REG_0x01:reg0x1->TXFIFO_CLR:0x1[8],发送FIFO清除。读回值永远是0,0x0,R/W*/
i2s_ll_get_reg0x1_txfifo_clr(void)434 static inline uint32_t i2s_ll_get_reg0x1_txfifo_clr(void)
435 {
436 uint32_t reg_value;
437 reg_value = REG_READ(I2S_REG0X1_ADDR);
438 reg_value = ((reg_value >> I2S_REG0X1_TXFIFO_CLR_POS) & I2S_REG0X1_TXFIFO_CLR_MASK);
439 return reg_value;
440 }
441
i2s_ll_set_reg0x1_txfifo_clr(uint32_t value)442 static inline void i2s_ll_set_reg0x1_txfifo_clr(uint32_t value)
443 {
444 uint32_t reg_value;
445 reg_value = REG_READ(I2S_REG0X1_ADDR);
446 reg_value &= ~(I2S_REG0X1_TXFIFO_CLR_MASK << I2S_REG0X1_TXFIFO_CLR_POS);
447 reg_value |= ((value & I2S_REG0X1_TXFIFO_CLR_MASK) << I2S_REG0X1_TXFIFO_CLR_POS);
448 REG_WRITE(I2S_REG0X1_ADDR,reg_value);
449 }
450
451 /* REG_0x01:reg0x1->RXFIFO_CLR:0x1[9],接收FIFO清除。读回值永远是0,0x0,R/W*/
i2s_ll_get_reg0x1_rxfifo_clr(void)452 static inline uint32_t i2s_ll_get_reg0x1_rxfifo_clr(void)
453 {
454 uint32_t reg_value;
455 reg_value = REG_READ(I2S_REG0X1_ADDR);
456 reg_value = ((reg_value >> I2S_REG0X1_RXFIFO_CLR_POS) & I2S_REG0X1_RXFIFO_CLR_MASK);
457 return reg_value;
458 }
459
i2s_ll_set_reg0x1_rxfifo_clr(uint32_t value)460 static inline void i2s_ll_set_reg0x1_rxfifo_clr(uint32_t value)
461 {
462 uint32_t reg_value;
463 reg_value = REG_READ(I2S_REG0X1_ADDR);
464 reg_value &= ~(I2S_REG0X1_RXFIFO_CLR_MASK << I2S_REG0X1_RXFIFO_CLR_POS);
465 reg_value |= ((value & I2S_REG0X1_RXFIFO_CLR_MASK) << I2S_REG0X1_RXFIFO_CLR_POS);
466 REG_WRITE(I2S_REG0X1_ADDR,reg_value);
467 }
468
469 /* REG_0x01:reg0x1->SMPRATIO_H2B:0x1[11:10],采样速率指示值的高2bit,0x0,R/W*/
i2s_ll_get_reg0x1_smpratio_h2b(void)470 static inline uint32_t i2s_ll_get_reg0x1_smpratio_h2b(void)
471 {
472 uint32_t reg_value;
473 reg_value = REG_READ(I2S_REG0X1_ADDR);
474 reg_value = ((reg_value >> I2S_REG0X1_SMPRATIO_H2B_POS) & I2S_REG0X1_SMPRATIO_H2B_MASK);
475 return reg_value;
476 }
477
i2s_ll_set_reg0x1_smpratio_h2b(uint32_t value)478 static inline void i2s_ll_set_reg0x1_smpratio_h2b(uint32_t value)
479 {
480 uint32_t reg_value;
481 reg_value = REG_READ(I2S_REG0X1_ADDR);
482 reg_value &= ~(I2S_REG0X1_SMPRATIO_H2B_MASK << I2S_REG0X1_SMPRATIO_H2B_POS);
483 reg_value |= ((value & I2S_REG0X1_SMPRATIO_H2B_MASK) << I2S_REG0X1_SMPRATIO_H2B_POS);
484 REG_WRITE(I2S_REG0X1_ADDR,reg_value);
485 }
486
487 /* REG_0x01:reg0x1->BITRATIO_H4B:0x1[15:12],比特速率指示值的高4bit,0x0,R/W*/
i2s_ll_get_reg0x1_bitratio_h4b(void)488 static inline uint32_t i2s_ll_get_reg0x1_bitratio_h4b(void)
489 {
490 uint32_t reg_value;
491 reg_value = REG_READ(I2S_REG0X1_ADDR);
492 reg_value = ((reg_value >> I2S_REG0X1_BITRATIO_H4B_POS) & I2S_REG0X1_BITRATIO_H4B_MASK);
493 return reg_value;
494 }
495
i2s_ll_set_reg0x1_bitratio_h4b(uint32_t value)496 static inline void i2s_ll_set_reg0x1_bitratio_h4b(uint32_t value)
497 {
498 uint32_t reg_value;
499 reg_value = REG_READ(I2S_REG0X1_ADDR);
500 reg_value &= ~(I2S_REG0X1_BITRATIO_H4B_MASK << I2S_REG0X1_BITRATIO_H4B_POS);
501 reg_value |= ((value & I2S_REG0X1_BITRATIO_H4B_MASK) << I2S_REG0X1_BITRATIO_H4B_POS);
502 REG_WRITE(I2S_REG0X1_ADDR,reg_value);
503 }
504
505 /* REG_0x01:reg0x1->LRCOM_STORE:0x1[16],0x1:左右声道数据拼成一个32bit同时写入PCM_DAT中,低16bit对应左声道,高16bit对应右声道。即{R,L}->{R,L}->……; 0x0:左右声道数据按时间顺序交替写入PCM_DAT中,即L->R->L->R->…… ; 【注意】仅当数据长度小于16时才能配置该位为1,0x0,R/W*/
i2s_ll_get_reg0x1_lrcom_store(void)506 static inline uint32_t i2s_ll_get_reg0x1_lrcom_store(void)
507 {
508 uint32_t reg_value;
509 reg_value = REG_READ(I2S_REG0X1_ADDR);
510 reg_value = ((reg_value >> I2S_REG0X1_LRCOM_STORE_POS) & I2S_REG0X1_LRCOM_STORE_MASK);
511 return reg_value;
512 }
513
i2s_ll_set_reg0x1_lrcom_store(uint32_t value)514 static inline void i2s_ll_set_reg0x1_lrcom_store(uint32_t value)
515 {
516 uint32_t reg_value;
517 reg_value = REG_READ(I2S_REG0X1_ADDR);
518 reg_value &= ~(I2S_REG0X1_LRCOM_STORE_MASK << I2S_REG0X1_LRCOM_STORE_POS);
519 reg_value |= ((value & I2S_REG0X1_LRCOM_STORE_MASK) << I2S_REG0X1_LRCOM_STORE_POS);
520 REG_WRITE(I2S_REG0X1_ADDR,reg_value);
521 }
522
523 /* REG_0x01:reg0x1->PARALLEL_EN:0x1[17],0x0: N(1~4)通道的数据通过sda_i[0]/sda_o[0]串行输入/输出; 0x1: N(1~4)通道的数据通过N个信号线sda_i[N-1:0]/sda_o[N-1:0]输入/输出,0x0,R/W*/
i2s_ll_get_reg0x1_parallel_en(void)524 static inline uint32_t i2s_ll_get_reg0x1_parallel_en(void)
525 {
526 uint32_t reg_value;
527 reg_value = REG_READ(I2S_REG0X1_ADDR);
528 reg_value = ((reg_value >> I2S_REG0X1_PARALLEL_EN_POS) & I2S_REG0X1_PARALLEL_EN_MASK);
529 return reg_value;
530 }
531
i2s_ll_set_reg0x1_parallel_en(uint32_t value)532 static inline void i2s_ll_set_reg0x1_parallel_en(uint32_t value)
533 {
534 uint32_t reg_value;
535 reg_value = REG_READ(I2S_REG0X1_ADDR);
536 reg_value &= ~(I2S_REG0X1_PARALLEL_EN_MASK << I2S_REG0X1_PARALLEL_EN_POS);
537 reg_value |= ((value & I2S_REG0X1_PARALLEL_EN_MASK) << I2S_REG0X1_PARALLEL_EN_POS);
538 REG_WRITE(I2S_REG0X1_ADDR,reg_value);
539 }
540
541 /* REG_0x02 */
542 #define I2S_REG0X2_ADDR (I2S_LL_REG_BASE + 0x2*4) //REG ADDR :0x47810008
543 #define I2S_REG0X2_RXINT_POS (0)
544 #define I2S_REG0X2_RXINT_MASK (0x1)
545
546 #define I2S_REG0X2_TXINT_POS (1)
547 #define I2S_REG0X2_TXINT_MASK (0x1)
548
549 #define I2S_REG0X2_RXOVF_POS (2)
550 #define I2S_REG0X2_RXOVF_MASK (0x1)
551
552 #define I2S_REG0X2_TXUDF_POS (3)
553 #define I2S_REG0X2_TXUDF_MASK (0x1)
554
555 #define I2S_REG0X2_RXFIFO_RD_READY_POS (4)
556 #define I2S_REG0X2_RXFIFO_RD_READY_MASK (0x1)
557
558 #define I2S_REG0X2_TXFIFO_WR_READY_POS (5)
559 #define I2S_REG0X2_TXFIFO_WR_READY_MASK (0x1)
560
561 #define I2S_REG0X2_RESERVED_POS (6)
562 #define I2S_REG0X2_RESERVED_MASK (0x3FFFFFF)
563
i2s_ll_get_reg0x2_value(void)564 static inline uint32_t i2s_ll_get_reg0x2_value(void)
565 {
566 return REG_READ(I2S_REG0X2_ADDR);
567 }
568
569 /* REG_0x02:reg0x2->RXINT:0x2[0],I2S接收中断标志。软件从接收FIFO中读取足够数据后该中断会自动清除,0x0,R*/
i2s_ll_get_reg0x2_rxint(void)570 static inline uint32_t i2s_ll_get_reg0x2_rxint(void)
571 {
572 uint32_t reg_value;
573 reg_value = REG_READ(I2S_REG0X2_ADDR);
574 reg_value = ((reg_value >> I2S_REG0X2_RXINT_POS)&I2S_REG0X2_RXINT_MASK);
575 return reg_value;
576 }
577
578 /* REG_0x02:reg0x2->TXINT:0x2[1],I2S发送中断标志。软件往发送FIFO中写入足够数据后该中断会自动清除,0x0,R*/
i2s_ll_get_reg0x2_txint(void)579 static inline uint32_t i2s_ll_get_reg0x2_txint(void)
580 {
581 uint32_t reg_value;
582 reg_value = REG_READ(I2S_REG0X2_ADDR);
583 reg_value = ((reg_value >> I2S_REG0X2_TXINT_POS)&I2S_REG0X2_TXINT_MASK);
584 return reg_value;
585 }
586
587 /* REG_0x02:reg0x2->RXOVF:0x2[2],接收上溢标志。即接收左声道FIFO发生满写错误,会产生一个I2S中断,该位不能被硬件自动清0,必须由软件写1清0。.,0x0,R/W*/
i2s_ll_get_reg0x2_rxovf(void)588 static inline uint32_t i2s_ll_get_reg0x2_rxovf(void)
589 {
590 uint32_t reg_value;
591 reg_value = REG_READ(I2S_REG0X2_ADDR);
592 reg_value = ((reg_value >> I2S_REG0X2_RXOVF_POS) & I2S_REG0X2_RXOVF_MASK);
593 return reg_value;
594 }
595
i2s_ll_set_reg0x2_rxovf(uint32_t value)596 static inline void i2s_ll_set_reg0x2_rxovf(uint32_t value)
597 {
598 uint32_t reg_value;
599 reg_value = REG_READ(I2S_REG0X2_ADDR);
600 reg_value &= ~(I2S_REG0X2_RXOVF_MASK << I2S_REG0X2_RXOVF_POS);
601 reg_value |= ((value & I2S_REG0X2_RXOVF_MASK) << I2S_REG0X2_RXOVF_POS);
602 REG_WRITE(I2S_REG0X2_ADDR,reg_value);
603 }
604
605 /* REG_0x02:reg0x2->TXUDF:0x2[3],发送下溢标志。即发送左声道FIFO发生空读错误,会产生一个I2S中断,该位不能被硬件自动清0,必须由软件写1清0。.,0x0,R/W*/
i2s_ll_get_reg0x2_txudf(void)606 static inline uint32_t i2s_ll_get_reg0x2_txudf(void)
607 {
608 uint32_t reg_value;
609 reg_value = REG_READ(I2S_REG0X2_ADDR);
610 reg_value = ((reg_value >> I2S_REG0X2_TXUDF_POS) & I2S_REG0X2_TXUDF_MASK);
611 return reg_value;
612 }
613
i2s_ll_set_reg0x2_txudf(uint32_t value)614 static inline void i2s_ll_set_reg0x2_txudf(uint32_t value)
615 {
616 uint32_t reg_value;
617 reg_value = REG_READ(I2S_REG0X2_ADDR);
618 reg_value &= ~(I2S_REG0X2_TXUDF_MASK << I2S_REG0X2_TXUDF_POS);
619 reg_value |= ((value & I2S_REG0X2_TXUDF_MASK) << I2S_REG0X2_TXUDF_POS);
620 REG_WRITE(I2S_REG0X2_ADDR,reg_value);
621 }
622
623 /* REG_0x02:reg0x2->RXFIFO_RD_READY:0x2[4],RXFIFO读允许标志信号,0x0,R*/
i2s_ll_get_reg0x2_rxfifo_rd_ready(void)624 static inline uint32_t i2s_ll_get_reg0x2_rxfifo_rd_ready(void)
625 {
626 uint32_t reg_value;
627 reg_value = REG_READ(I2S_REG0X2_ADDR);
628 reg_value = ((reg_value >> I2S_REG0X2_RXFIFO_RD_READY_POS)&I2S_REG0X2_RXFIFO_RD_READY_MASK);
629 return reg_value;
630 }
631
632 /* REG_0x02:reg0x2->TXFIFO_WR_READY:0x2[5],TXFIFO写允许标志信号,0x0,R*/
i2s_ll_get_reg0x2_txfifo_wr_ready(void)633 static inline uint32_t i2s_ll_get_reg0x2_txfifo_wr_ready(void)
634 {
635 uint32_t reg_value;
636 reg_value = REG_READ(I2S_REG0X2_ADDR);
637 reg_value = ((reg_value >> I2S_REG0X2_TXFIFO_WR_READY_POS)&I2S_REG0X2_TXFIFO_WR_READY_MASK);
638 return reg_value;
639 }
640
641 /* REG_0x03 */
642 #define I2S_REG0X3_ADDR (I2S_LL_REG_BASE + 0x3*4) //REG ADDR :0x4781000c
643 #define I2S_REG0X3_I2S_DAT_POS (0)
644 #define I2S_REG0X3_I2S_DAT_MASK (0xFFFFFFFF)
645
i2s_ll_get_reg0x3_value(void)646 static inline uint32_t i2s_ll_get_reg0x3_value(void)
647 {
648 return REG_READ(I2S_REG0X3_ADDR);
649 }
650
i2s_ll_set_reg0x3_value(uint32_t value)651 static inline void i2s_ll_set_reg0x3_value(uint32_t value)
652 {
653 REG_WRITE(I2S_REG0X3_ADDR,value);
654 }
655
656 /* REG_0x03:reg0x3->I2S_DAT:0x3[31:0],I2S/PCM数据寄存器。(对该寄存器的写操作对应写发送FIFO,读操作对应读接收FIFO); 【注意】当LRCOM_STORE配置为0时,左右声道数据需要交替读写。当LRCOM_STORE配置为1时,低16bit对应左声道,高16bit对应右声道,None,R/W*/
i2s_ll_get_reg0x3_i2s_dat(void)657 static inline uint32_t i2s_ll_get_reg0x3_i2s_dat(void)
658 {
659 return REG_READ(I2S_REG0X3_ADDR);
660 }
661
i2s_ll_set_reg0x3_i2s_dat(uint32_t value)662 static inline void i2s_ll_set_reg0x3_i2s_dat(uint32_t value)
663 {
664 REG_WRITE(I2S_REG0X3_ADDR,value);
665 }
666
667 /* REG_0x04 */
668 #define I2S_REG0X4_ADDR (I2S_LL_REG_BASE + 0x4*4) //REG ADDR :0x47810010
669 #define I2S_REG0X4_RX2INT_EN_POS (0)
670 #define I2S_REG0X4_RX2INT_EN_MASK (0x1)
671
672 #define I2S_REG0X4_TX2INT_EN_POS (1)
673 #define I2S_REG0X4_TX2INT_EN_MASK (0x1)
674
675 #define I2S_REG0X4_RX2OVF_EN_POS (2)
676 #define I2S_REG0X4_RX2OVF_EN_MASK (0x1)
677
678 #define I2S_REG0X4_TX2UDF_EN_POS (3)
679 #define I2S_REG0X4_TX2UDF_EN_MASK (0x1)
680
681 #define I2S_REG0X4_RX3INT_EN_POS (4)
682 #define I2S_REG0X4_RX3INT_EN_MASK (0x1)
683
684 #define I2S_REG0X4_TX3INT_EN_POS (5)
685 #define I2S_REG0X4_TX3INT_EN_MASK (0x1)
686
687 #define I2S_REG0X4_RX3OVF_EN_POS (6)
688 #define I2S_REG0X4_RX3OVF_EN_MASK (0x1)
689
690 #define I2S_REG0X4_TX3UDF_EN_POS (7)
691 #define I2S_REG0X4_TX3UDF_EN_MASK (0x1)
692
693 #define I2S_REG0X4_RX4INT_EN_POS (8)
694 #define I2S_REG0X4_RX4INT_EN_MASK (0x1)
695
696 #define I2S_REG0X4_TX4INT_EN_POS (9)
697 #define I2S_REG0X4_TX4INT_EN_MASK (0x1)
698
699 #define I2S_REG0X4_RX4OVF_EN_POS (10)
700 #define I2S_REG0X4_RX4OVF_EN_MASK (0x1)
701
702 #define I2S_REG0X4_TX4UDF_EN_POS (11)
703 #define I2S_REG0X4_TX4UDF_EN_MASK (0x1)
704
705 #define I2S_REG0X4_RESERVED_POS (12)
706 #define I2S_REG0X4_RESERVED_MASK (0xFFFFF)
707
i2s_ll_get_reg0x4_value(void)708 static inline uint32_t i2s_ll_get_reg0x4_value(void)
709 {
710 return REG_READ(I2S_REG0X4_ADDR);
711 }
712
i2s_ll_set_reg0x4_value(uint32_t value)713 static inline void i2s_ll_set_reg0x4_value(uint32_t value)
714 {
715 REG_WRITE(I2S_REG0X4_ADDR,value);
716 }
717
718 /* REG_0x04:reg0x4->RX2INT_EN:0x4[0],通道2的接收中断使能,0x0,R/W*/
i2s_ll_get_reg0x4_rx2int_en(void)719 static inline uint32_t i2s_ll_get_reg0x4_rx2int_en(void)
720 {
721 uint32_t reg_value;
722 reg_value = REG_READ(I2S_REG0X4_ADDR);
723 reg_value = ((reg_value >> I2S_REG0X4_RX2INT_EN_POS) & I2S_REG0X4_RX2INT_EN_MASK);
724 return reg_value;
725 }
726
i2s_ll_set_reg0x4_rx2int_en(uint32_t value)727 static inline void i2s_ll_set_reg0x4_rx2int_en(uint32_t value)
728 {
729 uint32_t reg_value;
730 reg_value = REG_READ(I2S_REG0X4_ADDR);
731 reg_value &= ~(I2S_REG0X4_RX2INT_EN_MASK << I2S_REG0X4_RX2INT_EN_POS);
732 reg_value |= ((value & I2S_REG0X4_RX2INT_EN_MASK) << I2S_REG0X4_RX2INT_EN_POS);
733 REG_WRITE(I2S_REG0X4_ADDR,reg_value);
734 }
735
736 /* REG_0x04:reg0x4->TX2INT_EN:0x4[1],通道2的发送中断使能,0x0,R/W*/
i2s_ll_get_reg0x4_tx2int_en(void)737 static inline uint32_t i2s_ll_get_reg0x4_tx2int_en(void)
738 {
739 uint32_t reg_value;
740 reg_value = REG_READ(I2S_REG0X4_ADDR);
741 reg_value = ((reg_value >> I2S_REG0X4_TX2INT_EN_POS) & I2S_REG0X4_TX2INT_EN_MASK);
742 return reg_value;
743 }
744
i2s_ll_set_reg0x4_tx2int_en(uint32_t value)745 static inline void i2s_ll_set_reg0x4_tx2int_en(uint32_t value)
746 {
747 uint32_t reg_value;
748 reg_value = REG_READ(I2S_REG0X4_ADDR);
749 reg_value &= ~(I2S_REG0X4_TX2INT_EN_MASK << I2S_REG0X4_TX2INT_EN_POS);
750 reg_value |= ((value & I2S_REG0X4_TX2INT_EN_MASK) << I2S_REG0X4_TX2INT_EN_POS);
751 REG_WRITE(I2S_REG0X4_ADDR,reg_value);
752 }
753
754 /* REG_0x04:reg0x4->RX2OVF_EN:0x4[2],通道2的接收上溢(RXOVF)中断告警使能,0x0,R/W*/
i2s_ll_get_reg0x4_rx2ovf_en(void)755 static inline uint32_t i2s_ll_get_reg0x4_rx2ovf_en(void)
756 {
757 uint32_t reg_value;
758 reg_value = REG_READ(I2S_REG0X4_ADDR);
759 reg_value = ((reg_value >> I2S_REG0X4_RX2OVF_EN_POS) & I2S_REG0X4_RX2OVF_EN_MASK);
760 return reg_value;
761 }
762
i2s_ll_set_reg0x4_rx2ovf_en(uint32_t value)763 static inline void i2s_ll_set_reg0x4_rx2ovf_en(uint32_t value)
764 {
765 uint32_t reg_value;
766 reg_value = REG_READ(I2S_REG0X4_ADDR);
767 reg_value &= ~(I2S_REG0X4_RX2OVF_EN_MASK << I2S_REG0X4_RX2OVF_EN_POS);
768 reg_value |= ((value & I2S_REG0X4_RX2OVF_EN_MASK) << I2S_REG0X4_RX2OVF_EN_POS);
769 REG_WRITE(I2S_REG0X4_ADDR,reg_value);
770 }
771
772 /* REG_0x04:reg0x4->TX2UDF_EN:0x4[3],通道2的发送下溢(TXUDF)中断告警使能,0x0,R/W*/
i2s_ll_get_reg0x4_tx2udf_en(void)773 static inline uint32_t i2s_ll_get_reg0x4_tx2udf_en(void)
774 {
775 uint32_t reg_value;
776 reg_value = REG_READ(I2S_REG0X4_ADDR);
777 reg_value = ((reg_value >> I2S_REG0X4_TX2UDF_EN_POS) & I2S_REG0X4_TX2UDF_EN_MASK);
778 return reg_value;
779 }
780
i2s_ll_set_reg0x4_tx2udf_en(uint32_t value)781 static inline void i2s_ll_set_reg0x4_tx2udf_en(uint32_t value)
782 {
783 uint32_t reg_value;
784 reg_value = REG_READ(I2S_REG0X4_ADDR);
785 reg_value &= ~(I2S_REG0X4_TX2UDF_EN_MASK << I2S_REG0X4_TX2UDF_EN_POS);
786 reg_value |= ((value & I2S_REG0X4_TX2UDF_EN_MASK) << I2S_REG0X4_TX2UDF_EN_POS);
787 REG_WRITE(I2S_REG0X4_ADDR,reg_value);
788 }
789
790 /* REG_0x04:reg0x4->RX3INT_EN:0x4[4],通道3的接收中断使能,0x0,R/W*/
i2s_ll_get_reg0x4_rx3int_en(void)791 static inline uint32_t i2s_ll_get_reg0x4_rx3int_en(void)
792 {
793 uint32_t reg_value;
794 reg_value = REG_READ(I2S_REG0X4_ADDR);
795 reg_value = ((reg_value >> I2S_REG0X4_RX3INT_EN_POS) & I2S_REG0X4_RX3INT_EN_MASK);
796 return reg_value;
797 }
798
i2s_ll_set_reg0x4_rx3int_en(uint32_t value)799 static inline void i2s_ll_set_reg0x4_rx3int_en(uint32_t value)
800 {
801 uint32_t reg_value;
802 reg_value = REG_READ(I2S_REG0X4_ADDR);
803 reg_value &= ~(I2S_REG0X4_RX3INT_EN_MASK << I2S_REG0X4_RX3INT_EN_POS);
804 reg_value |= ((value & I2S_REG0X4_RX3INT_EN_MASK) << I2S_REG0X4_RX3INT_EN_POS);
805 REG_WRITE(I2S_REG0X4_ADDR,reg_value);
806 }
807
808 /* REG_0x04:reg0x4->TX3INT_EN:0x4[5],通道3的发送中断使能,0x0,R/W*/
i2s_ll_get_reg0x4_tx3int_en(void)809 static inline uint32_t i2s_ll_get_reg0x4_tx3int_en(void)
810 {
811 uint32_t reg_value;
812 reg_value = REG_READ(I2S_REG0X4_ADDR);
813 reg_value = ((reg_value >> I2S_REG0X4_TX3INT_EN_POS) & I2S_REG0X4_TX3INT_EN_MASK);
814 return reg_value;
815 }
816
i2s_ll_set_reg0x4_tx3int_en(uint32_t value)817 static inline void i2s_ll_set_reg0x4_tx3int_en(uint32_t value)
818 {
819 uint32_t reg_value;
820 reg_value = REG_READ(I2S_REG0X4_ADDR);
821 reg_value &= ~(I2S_REG0X4_TX3INT_EN_MASK << I2S_REG0X4_TX3INT_EN_POS);
822 reg_value |= ((value & I2S_REG0X4_TX3INT_EN_MASK) << I2S_REG0X4_TX3INT_EN_POS);
823 REG_WRITE(I2S_REG0X4_ADDR,reg_value);
824 }
825
826 /* REG_0x04:reg0x4->RX3OVF_EN:0x4[6],通道3的接收上溢(RXOVF)中断告警使能,0x0,R/W*/
i2s_ll_get_reg0x4_rx3ovf_en(void)827 static inline uint32_t i2s_ll_get_reg0x4_rx3ovf_en(void)
828 {
829 uint32_t reg_value;
830 reg_value = REG_READ(I2S_REG0X4_ADDR);
831 reg_value = ((reg_value >> I2S_REG0X4_RX3OVF_EN_POS) & I2S_REG0X4_RX3OVF_EN_MASK);
832 return reg_value;
833 }
834
i2s_ll_set_reg0x4_rx3ovf_en(uint32_t value)835 static inline void i2s_ll_set_reg0x4_rx3ovf_en(uint32_t value)
836 {
837 uint32_t reg_value;
838 reg_value = REG_READ(I2S_REG0X4_ADDR);
839 reg_value &= ~(I2S_REG0X4_RX3OVF_EN_MASK << I2S_REG0X4_RX3OVF_EN_POS);
840 reg_value |= ((value & I2S_REG0X4_RX3OVF_EN_MASK) << I2S_REG0X4_RX3OVF_EN_POS);
841 REG_WRITE(I2S_REG0X4_ADDR,reg_value);
842 }
843
844 /* REG_0x04:reg0x4->TX3UDF_EN:0x4[7],通道3的发送下溢(TXUDF)中断告警使能,0x0,R/W*/
i2s_ll_get_reg0x4_tx3udf_en(void)845 static inline uint32_t i2s_ll_get_reg0x4_tx3udf_en(void)
846 {
847 uint32_t reg_value;
848 reg_value = REG_READ(I2S_REG0X4_ADDR);
849 reg_value = ((reg_value >> I2S_REG0X4_TX3UDF_EN_POS) & I2S_REG0X4_TX3UDF_EN_MASK);
850 return reg_value;
851 }
852
i2s_ll_set_reg0x4_tx3udf_en(uint32_t value)853 static inline void i2s_ll_set_reg0x4_tx3udf_en(uint32_t value)
854 {
855 uint32_t reg_value;
856 reg_value = REG_READ(I2S_REG0X4_ADDR);
857 reg_value &= ~(I2S_REG0X4_TX3UDF_EN_MASK << I2S_REG0X4_TX3UDF_EN_POS);
858 reg_value |= ((value & I2S_REG0X4_TX3UDF_EN_MASK) << I2S_REG0X4_TX3UDF_EN_POS);
859 REG_WRITE(I2S_REG0X4_ADDR,reg_value);
860 }
861
862 /* REG_0x04:reg0x4->RX4INT_EN:0x4[8],通道4的接收中断使能,0x0,R/W*/
i2s_ll_get_reg0x4_rx4int_en(void)863 static inline uint32_t i2s_ll_get_reg0x4_rx4int_en(void)
864 {
865 uint32_t reg_value;
866 reg_value = REG_READ(I2S_REG0X4_ADDR);
867 reg_value = ((reg_value >> I2S_REG0X4_RX4INT_EN_POS) & I2S_REG0X4_RX4INT_EN_MASK);
868 return reg_value;
869 }
870
i2s_ll_set_reg0x4_rx4int_en(uint32_t value)871 static inline void i2s_ll_set_reg0x4_rx4int_en(uint32_t value)
872 {
873 uint32_t reg_value;
874 reg_value = REG_READ(I2S_REG0X4_ADDR);
875 reg_value &= ~(I2S_REG0X4_RX4INT_EN_MASK << I2S_REG0X4_RX4INT_EN_POS);
876 reg_value |= ((value & I2S_REG0X4_RX4INT_EN_MASK) << I2S_REG0X4_RX4INT_EN_POS);
877 REG_WRITE(I2S_REG0X4_ADDR,reg_value);
878 }
879
880 /* REG_0x04:reg0x4->TX4INT_EN:0x4[9],通道4的发送中断使能,0x0,R/W*/
i2s_ll_get_reg0x4_tx4int_en(void)881 static inline uint32_t i2s_ll_get_reg0x4_tx4int_en(void)
882 {
883 uint32_t reg_value;
884 reg_value = REG_READ(I2S_REG0X4_ADDR);
885 reg_value = ((reg_value >> I2S_REG0X4_TX4INT_EN_POS) & I2S_REG0X4_TX4INT_EN_MASK);
886 return reg_value;
887 }
888
i2s_ll_set_reg0x4_tx4int_en(uint32_t value)889 static inline void i2s_ll_set_reg0x4_tx4int_en(uint32_t value)
890 {
891 uint32_t reg_value;
892 reg_value = REG_READ(I2S_REG0X4_ADDR);
893 reg_value &= ~(I2S_REG0X4_TX4INT_EN_MASK << I2S_REG0X4_TX4INT_EN_POS);
894 reg_value |= ((value & I2S_REG0X4_TX4INT_EN_MASK) << I2S_REG0X4_TX4INT_EN_POS);
895 REG_WRITE(I2S_REG0X4_ADDR,reg_value);
896 }
897
898 /* REG_0x04:reg0x4->RX4OVF_EN:0x4[10],通道4的接收上溢(RXOVF)中断告警使能,0x0,R/W*/
i2s_ll_get_reg0x4_rx4ovf_en(void)899 static inline uint32_t i2s_ll_get_reg0x4_rx4ovf_en(void)
900 {
901 uint32_t reg_value;
902 reg_value = REG_READ(I2S_REG0X4_ADDR);
903 reg_value = ((reg_value >> I2S_REG0X4_RX4OVF_EN_POS) & I2S_REG0X4_RX4OVF_EN_MASK);
904 return reg_value;
905 }
906
i2s_ll_set_reg0x4_rx4ovf_en(uint32_t value)907 static inline void i2s_ll_set_reg0x4_rx4ovf_en(uint32_t value)
908 {
909 uint32_t reg_value;
910 reg_value = REG_READ(I2S_REG0X4_ADDR);
911 reg_value &= ~(I2S_REG0X4_RX4OVF_EN_MASK << I2S_REG0X4_RX4OVF_EN_POS);
912 reg_value |= ((value & I2S_REG0X4_RX4OVF_EN_MASK) << I2S_REG0X4_RX4OVF_EN_POS);
913 REG_WRITE(I2S_REG0X4_ADDR,reg_value);
914 }
915
916 /* REG_0x04:reg0x4->TX4UDF_EN:0x4[11],通道4的发送下溢(TXUDF)中断告警使能,0x0,R/W*/
i2s_ll_get_reg0x4_tx4udf_en(void)917 static inline uint32_t i2s_ll_get_reg0x4_tx4udf_en(void)
918 {
919 uint32_t reg_value;
920 reg_value = REG_READ(I2S_REG0X4_ADDR);
921 reg_value = ((reg_value >> I2S_REG0X4_TX4UDF_EN_POS) & I2S_REG0X4_TX4UDF_EN_MASK);
922 return reg_value;
923 }
924
i2s_ll_set_reg0x4_tx4udf_en(uint32_t value)925 static inline void i2s_ll_set_reg0x4_tx4udf_en(uint32_t value)
926 {
927 uint32_t reg_value;
928 reg_value = REG_READ(I2S_REG0X4_ADDR);
929 reg_value &= ~(I2S_REG0X4_TX4UDF_EN_MASK << I2S_REG0X4_TX4UDF_EN_POS);
930 reg_value |= ((value & I2S_REG0X4_TX4UDF_EN_MASK) << I2S_REG0X4_TX4UDF_EN_POS);
931 REG_WRITE(I2S_REG0X4_ADDR,reg_value);
932 }
933
934 /* REG_0x05 */
935 #define I2S_REG0X5_ADDR (I2S_LL_REG_BASE + 0x5*4) //REG ADDR :0x47810014
936 #define I2S_REG0X5_RX2INT_POS (0)
937 #define I2S_REG0X5_RX2INT_MASK (0x1)
938
939 #define I2S_REG0X5_TX2INT_POS (1)
940 #define I2S_REG0X5_TX2INT_MASK (0x1)
941
942 #define I2S_REG0X5_RX2OVF_POS (2)
943 #define I2S_REG0X5_RX2OVF_MASK (0x1)
944
945 #define I2S_REG0X5_TX2UDF_POS (3)
946 #define I2S_REG0X5_TX2UDF_MASK (0x1)
947
948 #define I2S_REG0X5_RX3INT_POS (4)
949 #define I2S_REG0X5_RX3INT_MASK (0x1)
950
951 #define I2S_REG0X5_TX3INT_POS (5)
952 #define I2S_REG0X5_TX3INT_MASK (0x1)
953
954 #define I2S_REG0X5_RX3OVF_POS (6)
955 #define I2S_REG0X5_RX3OVF_MASK (0x1)
956
957 #define I2S_REG0X5_TX3UDF_POS (3)
958 #define I2S_REG0X5_TX3UDF_MASK (0x1)
959
960 #define I2S_REG0X5_RX4INT_POS (8)
961 #define I2S_REG0X5_RX4INT_MASK (0x1)
962
963 #define I2S_REG0X5_TX4INT_POS (9)
964 #define I2S_REG0X5_TX4INT_MASK (0x1)
965
966 #define I2S_REG0X5_RX4OVF_POS (10)
967 #define I2S_REG0X5_RX4OVF_MASK (0x1)
968
969 #define I2S_REG0X5_TX4UDF_POS (11)
970 #define I2S_REG0X5_TX4UDF_MASK (0x1)
971
972 #define I2S_REG0X5_RESERVED_POS (6)
973 #define I2S_REG0X5_RESERVED_MASK (0x3FFFFFF)
974
i2s_ll_get_reg0x5_value(void)975 static inline uint32_t i2s_ll_get_reg0x5_value(void)
976 {
977 return REG_READ(I2S_REG0X5_ADDR);
978 }
979
980 /* REG_0x05:reg0x5->RX2INT:0x5[0],通道2的I2S接收中断标志。软件从接收FIFO中读取足够数据后该中断会自动清除,0x0,R*/
i2s_ll_get_reg0x5_rx2int(void)981 static inline uint32_t i2s_ll_get_reg0x5_rx2int(void)
982 {
983 uint32_t reg_value;
984 reg_value = REG_READ(I2S_REG0X5_ADDR);
985 reg_value = ((reg_value >> I2S_REG0X5_RX2INT_POS)&I2S_REG0X5_RX2INT_MASK);
986 return reg_value;
987 }
988
989 /* REG_0x05:reg0x5->TX2INT:0x5[1],通道2的I2S发送中断标志。软件往发送FIFO中写入足够数据后该中断会自动清除,0x0,R*/
i2s_ll_get_reg0x5_tx2int(void)990 static inline uint32_t i2s_ll_get_reg0x5_tx2int(void)
991 {
992 uint32_t reg_value;
993 reg_value = REG_READ(I2S_REG0X5_ADDR);
994 reg_value = ((reg_value >> I2S_REG0X5_TX2INT_POS)&I2S_REG0X5_TX2INT_MASK);
995 return reg_value;
996 }
997
998 /* REG_0x05:reg0x5->RX2OVF:0x5[2],通道2的接收上溢标志。即接收左声道FIFO发生满写错误,会产生一个I2S中断,该位不能被硬件自动清0,必须由软件写1清0。.,0x0,R/W*/
i2s_ll_get_reg0x5_rx2ovf(void)999 static inline uint32_t i2s_ll_get_reg0x5_rx2ovf(void)
1000 {
1001 uint32_t reg_value;
1002 reg_value = REG_READ(I2S_REG0X5_ADDR);
1003 reg_value = ((reg_value >> I2S_REG0X5_RX2OVF_POS) & I2S_REG0X5_RX2OVF_MASK);
1004 return reg_value;
1005 }
1006
i2s_ll_set_reg0x5_rx2ovf(uint32_t value)1007 static inline void i2s_ll_set_reg0x5_rx2ovf(uint32_t value)
1008 {
1009 uint32_t reg_value;
1010 reg_value = REG_READ(I2S_REG0X5_ADDR);
1011 reg_value &= ~(I2S_REG0X5_RX2OVF_MASK << I2S_REG0X5_RX2OVF_POS);
1012 reg_value |= ((value & I2S_REG0X5_RX2OVF_MASK) << I2S_REG0X5_RX2OVF_POS);
1013 REG_WRITE(I2S_REG0X5_ADDR,reg_value);
1014 }
1015
1016 /* REG_0x05:reg0x5->TX2UDF:0x5[3],通道2的发送下溢标志。即发送左声道FIFO发生空读错误,会产生一个I2S中断,该位不能被硬件自动清0,必须由软件写1清0。.,0x0,R/W*/
i2s_ll_get_reg0x5_tx2udf(void)1017 static inline uint32_t i2s_ll_get_reg0x5_tx2udf(void)
1018 {
1019 uint32_t reg_value;
1020 reg_value = REG_READ(I2S_REG0X5_ADDR);
1021 reg_value = ((reg_value >> I2S_REG0X5_TX2UDF_POS) & I2S_REG0X5_TX2UDF_MASK);
1022 return reg_value;
1023 }
1024
i2s_ll_set_reg0x5_tx2udf(uint32_t value)1025 static inline void i2s_ll_set_reg0x5_tx2udf(uint32_t value)
1026 {
1027 uint32_t reg_value;
1028 reg_value = REG_READ(I2S_REG0X5_ADDR);
1029 reg_value &= ~(I2S_REG0X5_TX2UDF_MASK << I2S_REG0X5_TX2UDF_POS);
1030 reg_value |= ((value & I2S_REG0X5_TX2UDF_MASK) << I2S_REG0X5_TX2UDF_POS);
1031 REG_WRITE(I2S_REG0X5_ADDR,reg_value);
1032 }
1033
1034 /* REG_0x05:reg0x5->RX3INT:0x5[4],通道3的I2S接收中断标志。软件从接收FIFO中读取足够数据后该中断会自动清除,0x0,R*/
i2s_ll_get_reg0x5_rx3int(void)1035 static inline uint32_t i2s_ll_get_reg0x5_rx3int(void)
1036 {
1037 uint32_t reg_value;
1038 reg_value = REG_READ(I2S_REG0X5_ADDR);
1039 reg_value = ((reg_value >> I2S_REG0X5_RX3INT_POS)&I2S_REG0X5_RX3INT_MASK);
1040 return reg_value;
1041 }
1042
1043 /* REG_0x05:reg0x5->TX3INT:0x5[5],通道3的I2S发送中断标志。软件往发送FIFO中写入足够数据后该中断会自动清除,0x0,R*/
i2s_ll_get_reg0x5_tx3int(void)1044 static inline uint32_t i2s_ll_get_reg0x5_tx3int(void)
1045 {
1046 uint32_t reg_value;
1047 reg_value = REG_READ(I2S_REG0X5_ADDR);
1048 reg_value = ((reg_value >> I2S_REG0X5_TX3INT_POS)&I2S_REG0X5_TX3INT_MASK);
1049 return reg_value;
1050 }
1051
1052 /* REG_0x05:reg0x5->RX3OVF:0x5[6],通道3的接收上溢标志。即接收左声道FIFO发生满写错误,会产生一个I2S中断,该位不能被硬件自动清0,必须由软件写1清0。.,0x0,R/W*/
i2s_ll_get_reg0x5_rx3ovf(void)1053 static inline uint32_t i2s_ll_get_reg0x5_rx3ovf(void)
1054 {
1055 uint32_t reg_value;
1056 reg_value = REG_READ(I2S_REG0X5_ADDR);
1057 reg_value = ((reg_value >> I2S_REG0X5_RX3OVF_POS) & I2S_REG0X5_RX3OVF_MASK);
1058 return reg_value;
1059 }
1060
i2s_ll_set_reg0x5_rx3ovf(uint32_t value)1061 static inline void i2s_ll_set_reg0x5_rx3ovf(uint32_t value)
1062 {
1063 uint32_t reg_value;
1064 reg_value = REG_READ(I2S_REG0X5_ADDR);
1065 reg_value &= ~(I2S_REG0X5_RX3OVF_MASK << I2S_REG0X5_RX3OVF_POS);
1066 reg_value |= ((value & I2S_REG0X5_RX3OVF_MASK) << I2S_REG0X5_RX3OVF_POS);
1067 REG_WRITE(I2S_REG0X5_ADDR,reg_value);
1068 }
1069
1070 /* REG_0x05:reg0x5->TX3UDF:0x5[3],通道3的发送下溢标志。即发送左声道FIFO发生空读错误,会产生一个I2S中断,该位不能被硬件自动清0,必须由软件写1清0。.,0x0,R/W*/
i2s_ll_get_reg0x5_tx3udf(void)1071 static inline uint32_t i2s_ll_get_reg0x5_tx3udf(void)
1072 {
1073 uint32_t reg_value;
1074 reg_value = REG_READ(I2S_REG0X5_ADDR);
1075 reg_value = ((reg_value >> I2S_REG0X5_TX3UDF_POS) & I2S_REG0X5_TX3UDF_MASK);
1076 return reg_value;
1077 }
1078
i2s_ll_set_reg0x5_tx3udf(uint32_t value)1079 static inline void i2s_ll_set_reg0x5_tx3udf(uint32_t value)
1080 {
1081 uint32_t reg_value;
1082 reg_value = REG_READ(I2S_REG0X5_ADDR);
1083 reg_value &= ~(I2S_REG0X5_TX3UDF_MASK << I2S_REG0X5_TX3UDF_POS);
1084 reg_value |= ((value & I2S_REG0X5_TX3UDF_MASK) << I2S_REG0X5_TX3UDF_POS);
1085 REG_WRITE(I2S_REG0X5_ADDR,reg_value);
1086 }
1087
1088 /* REG_0x05:reg0x5->RX4INT:0x5[8],通道4的I2S接收中断标志。软件从接收FIFO中读取足够数据后该中断会自动清除,0x0,R*/
i2s_ll_get_reg0x5_rx4int(void)1089 static inline uint32_t i2s_ll_get_reg0x5_rx4int(void)
1090 {
1091 uint32_t reg_value;
1092 reg_value = REG_READ(I2S_REG0X5_ADDR);
1093 reg_value = ((reg_value >> I2S_REG0X5_RX4INT_POS)&I2S_REG0X5_RX4INT_MASK);
1094 return reg_value;
1095 }
1096
1097 /* REG_0x05:reg0x5->TX4INT:0x5[9],通道4的I2S发送中断标志。软件往发送FIFO中写入足够数据后该中断会自动清除,0x0,R*/
i2s_ll_get_reg0x5_tx4int(void)1098 static inline uint32_t i2s_ll_get_reg0x5_tx4int(void)
1099 {
1100 uint32_t reg_value;
1101 reg_value = REG_READ(I2S_REG0X5_ADDR);
1102 reg_value = ((reg_value >> I2S_REG0X5_TX4INT_POS)&I2S_REG0X5_TX4INT_MASK);
1103 return reg_value;
1104 }
1105
1106 /* REG_0x05:reg0x5->RX4OVF:0x5[10],通道4的接收上溢标志。即接收左声道FIFO发生满写错误,会产生一个I2S中断,该位不能被硬件自动清0,必须由软件写1清0。.,0x0,R/W*/
i2s_ll_get_reg0x5_rx4ovf(void)1107 static inline uint32_t i2s_ll_get_reg0x5_rx4ovf(void)
1108 {
1109 uint32_t reg_value;
1110 reg_value = REG_READ(I2S_REG0X5_ADDR);
1111 reg_value = ((reg_value >> I2S_REG0X5_RX4OVF_POS) & I2S_REG0X5_RX4OVF_MASK);
1112 return reg_value;
1113 }
1114
i2s_ll_set_reg0x5_rx4ovf(uint32_t value)1115 static inline void i2s_ll_set_reg0x5_rx4ovf(uint32_t value)
1116 {
1117 uint32_t reg_value;
1118 reg_value = REG_READ(I2S_REG0X5_ADDR);
1119 reg_value &= ~(I2S_REG0X5_RX4OVF_MASK << I2S_REG0X5_RX4OVF_POS);
1120 reg_value |= ((value & I2S_REG0X5_RX4OVF_MASK) << I2S_REG0X5_RX4OVF_POS);
1121 REG_WRITE(I2S_REG0X5_ADDR,reg_value);
1122 }
1123
1124 /* REG_0x05:reg0x5->TX4UDF:0x5[11],通道4的发送下溢标志。即发送左声道FIFO发生空读错误,会产生一个I2S中断,该位不能被硬件自动清0,必须由软件写1清0。.,0x0,R/W*/
i2s_ll_get_reg0x5_tx4udf(void)1125 static inline uint32_t i2s_ll_get_reg0x5_tx4udf(void)
1126 {
1127 uint32_t reg_value;
1128 reg_value = REG_READ(I2S_REG0X5_ADDR);
1129 reg_value = ((reg_value >> I2S_REG0X5_TX4UDF_POS) & I2S_REG0X5_TX4UDF_MASK);
1130 return reg_value;
1131 }
1132
i2s_ll_set_reg0x5_tx4udf(uint32_t value)1133 static inline void i2s_ll_set_reg0x5_tx4udf(uint32_t value)
1134 {
1135 uint32_t reg_value;
1136 reg_value = REG_READ(I2S_REG0X5_ADDR);
1137 reg_value &= ~(I2S_REG0X5_TX4UDF_MASK << I2S_REG0X5_TX4UDF_POS);
1138 reg_value |= ((value & I2S_REG0X5_TX4UDF_MASK) << I2S_REG0X5_TX4UDF_POS);
1139 REG_WRITE(I2S_REG0X5_ADDR,reg_value);
1140 }
1141
1142 /* REG_0x06 */
1143 #define I2S_REG0X6_ADDR (I2S_LL_REG_BASE + 0x6*4) //REG ADDR :0x47810018
1144 #define I2S_REG0X6_I2S_DAT2_POS (0)
1145 #define I2S_REG0X6_I2S_DAT2_MASK (0xFFFFFFFF)
1146
1147 /*write only reg:reg0x6:default value:0x0*/
i2s_ll_set_reg0x6_value(uint32_t value)1148 static inline void i2s_ll_set_reg0x6_value(uint32_t value)
1149 {
1150 REG_WRITE(I2S_REG0X6_ADDR,value);
1151 }
1152
1153 /* REG_0x07 */
1154 #define I2S_REG0X7_ADDR (I2S_LL_REG_BASE + 0x7*4) //REG ADDR :0x4781001c
1155 #define I2S_REG0X7_I2S_DAT3_POS (0)
1156 #define I2S_REG0X7_I2S_DAT3_MASK (0xFFFFFFFF)
1157
1158 /*write only reg:reg0x7:default value:0x0*/
i2s_ll_set_reg0x7_value(uint32_t value)1159 static inline void i2s_ll_set_reg0x7_value(uint32_t value)
1160 {
1161 REG_WRITE(I2S_REG0X7_ADDR,value);
1162 }
1163
1164 /* REG_0x08 */
1165 #define I2S_REG0X8_ADDR (I2S_LL_REG_BASE + 0x8*4) //REG ADDR :0x47810020
1166 #define I2S_REG0X8_I2S_DAT4_POS (0)
1167 #define I2S_REG0X8_I2S_DAT4_MASK (0xFFFFFFFF)
1168
1169 /*write only reg:reg0x8:default value:0x0*/
i2s_ll_set_reg0x8_value(uint32_t value)1170 static inline void i2s_ll_set_reg0x8_value(uint32_t value)
1171 {
1172 REG_WRITE(I2S_REG0X8_ADDR,value);
1173 }
1174
1175 #ifdef __cplusplus
1176 }
1177 #endif
1178