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-01-20 10:15:30
19 ************************************************************************************************************************************/
20
21 #pragma once
22
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26
27 #include <soc/soc.h>
28
29 #define FFT_LL_REG_BASE (SOC_FFT_REG_BASE) //REG_BASE:0x47000000
30
31 /* REG_0x00 */
32 #define FFT_FFT_CONFIG_ADDR (FFT_LL_REG_BASE + 0x0*4) //REG ADDR :0x47000000
33 #define FFT_FFT_CONFIG_FFT_MODE_POS (0)
34 #define FFT_FFT_CONFIG_FFT_MODE_MASK (0x1)
35
36 #define FFT_FFT_CONFIG_IFFT_POS (1)
37 #define FFT_FFT_CONFIG_IFFT_MASK (0x1)
38
39 #define FFT_FFT_CONFIG_FFT_INT_EN_POS (2)
40 #define FFT_FFT_CONFIG_FFT_INT_EN_MASK (0x1)
41
42 #define FFT_FFT_CONFIG_FFT_ENABLE_POS (3)
43 #define FFT_FFT_CONFIG_FFT_ENABLE_MASK (0x1)
44
45 #define FFT_FFT_CONFIG_FFT_GAT_OFF_POS (4)
46 #define FFT_FFT_CONFIG_FFT_GAT_OFF_MASK (0x1)
47
48 #define FFT_FFT_CONFIG_RESERVED_POS (5)
49 #define FFT_FFT_CONFIG_RESERVED_MASK (0x7FFFFFF)
50
fft_ll_get_fft_config_value(void)51 static inline uint32_t fft_ll_get_fft_config_value(void)
52 {
53 return REG_READ(FFT_FFT_CONFIG_ADDR);
54 }
55
fft_ll_set_fft_config_value(uint32_t value)56 static inline void fft_ll_set_fft_config_value(uint32_t value)
57 {
58 REG_WRITE(FFT_FFT_CONFIG_ADDR,value);
59 }
60
61 /* REG_0x00:fft_config->fft_mode:0x0[0],IFFT模式。 1:BK5130模式 0: 正常模式,0,RW*/
fft_ll_get_fft_config_fft_mode(void)62 static inline uint32_t fft_ll_get_fft_config_fft_mode(void)
63 {
64 uint32_t reg_value;
65 reg_value = REG_READ(FFT_FFT_CONFIG_ADDR);
66 reg_value = ((reg_value >> FFT_FFT_CONFIG_FFT_MODE_POS) & FFT_FFT_CONFIG_FFT_MODE_MASK);
67 return reg_value;
68 }
69
fft_ll_set_fft_config_fft_mode(uint32_t value)70 static inline void fft_ll_set_fft_config_fft_mode(uint32_t value)
71 {
72 uint32_t reg_value;
73 reg_value = REG_READ(FFT_FFT_CONFIG_ADDR);
74 reg_value &= ~(FFT_FFT_CONFIG_FFT_MODE_MASK << FFT_FFT_CONFIG_FFT_MODE_POS);
75 reg_value |= ((value & FFT_FFT_CONFIG_FFT_MODE_MASK) << FFT_FFT_CONFIG_FFT_MODE_POS);
76 REG_WRITE(FFT_FFT_CONFIG_ADDR,reg_value);
77 }
78
79 /* REG_0x00:fft_config->ifft:0x0[1],IFFT使能。 1:IFFT运算。 0:FFT运算 ,0,RW*/
fft_ll_get_fft_config_ifft(void)80 static inline uint32_t fft_ll_get_fft_config_ifft(void)
81 {
82 uint32_t reg_value;
83 reg_value = REG_READ(FFT_FFT_CONFIG_ADDR);
84 reg_value = ((reg_value >> FFT_FFT_CONFIG_IFFT_POS) & FFT_FFT_CONFIG_IFFT_MASK);
85 return reg_value;
86 }
87
fft_ll_set_fft_config_ifft(uint32_t value)88 static inline void fft_ll_set_fft_config_ifft(uint32_t value)
89 {
90 uint32_t reg_value;
91 reg_value = REG_READ(FFT_FFT_CONFIG_ADDR);
92 reg_value &= ~(FFT_FFT_CONFIG_IFFT_MASK << FFT_FFT_CONFIG_IFFT_POS);
93 reg_value |= ((value & FFT_FFT_CONFIG_IFFT_MASK) << FFT_FFT_CONFIG_IFFT_POS);
94 REG_WRITE(FFT_FFT_CONFIG_ADDR,reg_value);
95 }
96
97 /* REG_0x00:fft_config->fft_int_en:0x0[2],FFT中断使能信号,0,RW*/
fft_ll_get_fft_config_fft_int_en(void)98 static inline uint32_t fft_ll_get_fft_config_fft_int_en(void)
99 {
100 uint32_t reg_value;
101 reg_value = REG_READ(FFT_FFT_CONFIG_ADDR);
102 reg_value = ((reg_value >> FFT_FFT_CONFIG_FFT_INT_EN_POS) & FFT_FFT_CONFIG_FFT_INT_EN_MASK);
103 return reg_value;
104 }
105
fft_ll_set_fft_config_fft_int_en(uint32_t value)106 static inline void fft_ll_set_fft_config_fft_int_en(uint32_t value)
107 {
108 uint32_t reg_value;
109 reg_value = REG_READ(FFT_FFT_CONFIG_ADDR);
110 reg_value &= ~(FFT_FFT_CONFIG_FFT_INT_EN_MASK << FFT_FFT_CONFIG_FFT_INT_EN_POS);
111 reg_value |= ((value & FFT_FFT_CONFIG_FFT_INT_EN_MASK) << FFT_FFT_CONFIG_FFT_INT_EN_POS);
112 REG_WRITE(FFT_FFT_CONFIG_ADDR,reg_value);
113 }
114
115 /* REG_0x00:fft_config->fft_enable:0x0[3],FFT使能信号,每次FFT或者IFFT结束后,此信号拉低,0,RW*/
fft_ll_get_fft_config_fft_enable(void)116 static inline uint32_t fft_ll_get_fft_config_fft_enable(void)
117 {
118 uint32_t reg_value;
119 reg_value = REG_READ(FFT_FFT_CONFIG_ADDR);
120 reg_value = ((reg_value >> FFT_FFT_CONFIG_FFT_ENABLE_POS) & FFT_FFT_CONFIG_FFT_ENABLE_MASK);
121 return reg_value;
122 }
123
fft_ll_set_fft_config_fft_enable(uint32_t value)124 static inline void fft_ll_set_fft_config_fft_enable(uint32_t value)
125 {
126 uint32_t reg_value;
127 reg_value = REG_READ(FFT_FFT_CONFIG_ADDR);
128 reg_value &= ~(FFT_FFT_CONFIG_FFT_ENABLE_MASK << FFT_FFT_CONFIG_FFT_ENABLE_POS);
129 reg_value |= ((value & FFT_FFT_CONFIG_FFT_ENABLE_MASK) << FFT_FFT_CONFIG_FFT_ENABLE_POS);
130 REG_WRITE(FFT_FFT_CONFIG_ADDR,reg_value);
131 }
132
133 /* REG_0x00:fft_config->fft_gat_off:0x0[4],FFT模块clock gating信号,1 :gating off 0:gating on ,0,RW*/
fft_ll_get_fft_config_fft_gat_off(void)134 static inline uint32_t fft_ll_get_fft_config_fft_gat_off(void)
135 {
136 uint32_t reg_value;
137 reg_value = REG_READ(FFT_FFT_CONFIG_ADDR);
138 reg_value = ((reg_value >> FFT_FFT_CONFIG_FFT_GAT_OFF_POS) & FFT_FFT_CONFIG_FFT_GAT_OFF_MASK);
139 return reg_value;
140 }
141
fft_ll_set_fft_config_fft_gat_off(uint32_t value)142 static inline void fft_ll_set_fft_config_fft_gat_off(uint32_t value)
143 {
144 uint32_t reg_value;
145 reg_value = REG_READ(FFT_FFT_CONFIG_ADDR);
146 reg_value &= ~(FFT_FFT_CONFIG_FFT_GAT_OFF_MASK << FFT_FFT_CONFIG_FFT_GAT_OFF_POS);
147 reg_value |= ((value & FFT_FFT_CONFIG_FFT_GAT_OFF_MASK) << FFT_FFT_CONFIG_FFT_GAT_OFF_POS);
148 REG_WRITE(FFT_FFT_CONFIG_ADDR,reg_value);
149 }
150
151 /* REG_0x01 */
152 #define FFT_FIR_CONFIG_ADDR (FFT_LL_REG_BASE + 0x1*4) //REG ADDR :0x47000004
153 #define FFT_FIR_CONFIG_FIR_LENGTH_POS (0)
154 #define FFT_FIR_CONFIG_FIR_LENGTH_MASK (0xFF)
155
156 #define FFT_FIR_CONFIG_FIR_CWIDTH_POS (8)
157 #define FFT_FIR_CONFIG_FIR_CWIDTH_MASK (0x7)
158
159 #define FFT_FIR_CONFIG_FIR_DWIDTH_POS (11)
160 #define FFT_FIR_CONFIG_FIR_DWIDTH_MASK (0x7)
161
162 #define FFT_FIR_CONFIG_FIR_MODE_POS (14)
163 #define FFT_FIR_CONFIG_FIR_MODE_MASK (0x1)
164
165 #define FFT_FIR_CONFIG_FIR_INT_EN_POS (15)
166 #define FFT_FIR_CONFIG_FIR_INT_EN_MASK (0x1)
167
168 #define FFT_FIR_CONFIG_FIR_ENABLE_POS (16)
169 #define FFT_FIR_CONFIG_FIR_ENABLE_MASK (0x1)
170
171 #define FFT_FIR_CONFIG_RESERVED_POS (17)
172 #define FFT_FIR_CONFIG_RESERVED_MASK (0x7FFF)
173
fft_ll_get_fir_config_value(void)174 static inline uint32_t fft_ll_get_fir_config_value(void)
175 {
176 return REG_READ(FFT_FIR_CONFIG_ADDR);
177 }
178
fft_ll_set_fir_config_value(uint32_t value)179 static inline void fft_ll_set_fir_config_value(uint32_t value)
180 {
181 REG_WRITE(FFT_FIR_CONFIG_ADDR,value);
182 }
183
184 /* REG_0x01:fir_config->fir_length:0x1[7:0],FIR的计算点数 fir_length + 1 ,0,RW*/
fft_ll_get_fir_config_fir_length(void)185 static inline uint32_t fft_ll_get_fir_config_fir_length(void)
186 {
187 uint32_t reg_value;
188 reg_value = REG_READ(FFT_FIR_CONFIG_ADDR);
189 reg_value = ((reg_value >> FFT_FIR_CONFIG_FIR_LENGTH_POS) & FFT_FIR_CONFIG_FIR_LENGTH_MASK);
190 return reg_value;
191 }
192
fft_ll_set_fir_config_fir_length(uint32_t value)193 static inline void fft_ll_set_fir_config_fir_length(uint32_t value)
194 {
195 uint32_t reg_value;
196 reg_value = REG_READ(FFT_FIR_CONFIG_ADDR);
197 reg_value &= ~(FFT_FIR_CONFIG_FIR_LENGTH_MASK << FFT_FIR_CONFIG_FIR_LENGTH_POS);
198 reg_value |= ((value & FFT_FIR_CONFIG_FIR_LENGTH_MASK) << FFT_FIR_CONFIG_FIR_LENGTH_POS);
199 REG_WRITE(FFT_FIR_CONFIG_ADDR,reg_value);
200 }
201
202 /* REG_0x01:fir_config->fir_cwidth:0x1[10:8],FIR的系数位宽 16 - fir_cwidth,0,RW*/
fft_ll_get_fir_config_fir_cwidth(void)203 static inline uint32_t fft_ll_get_fir_config_fir_cwidth(void)
204 {
205 uint32_t reg_value;
206 reg_value = REG_READ(FFT_FIR_CONFIG_ADDR);
207 reg_value = ((reg_value >> FFT_FIR_CONFIG_FIR_CWIDTH_POS) & FFT_FIR_CONFIG_FIR_CWIDTH_MASK);
208 return reg_value;
209 }
210
fft_ll_set_fir_config_fir_cwidth(uint32_t value)211 static inline void fft_ll_set_fir_config_fir_cwidth(uint32_t value)
212 {
213 uint32_t reg_value;
214 reg_value = REG_READ(FFT_FIR_CONFIG_ADDR);
215 reg_value &= ~(FFT_FIR_CONFIG_FIR_CWIDTH_MASK << FFT_FIR_CONFIG_FIR_CWIDTH_POS);
216 reg_value |= ((value & FFT_FIR_CONFIG_FIR_CWIDTH_MASK) << FFT_FIR_CONFIG_FIR_CWIDTH_POS);
217 REG_WRITE(FFT_FIR_CONFIG_ADDR,reg_value);
218 }
219
220 /* REG_0x01:fir_config->fir_dwidth:0x1[13:11],FIR的数据位宽 21 - fir_dwidth,0,RW*/
fft_ll_get_fir_config_fir_dwidth(void)221 static inline uint32_t fft_ll_get_fir_config_fir_dwidth(void)
222 {
223 uint32_t reg_value;
224 reg_value = REG_READ(FFT_FIR_CONFIG_ADDR);
225 reg_value = ((reg_value >> FFT_FIR_CONFIG_FIR_DWIDTH_POS) & FFT_FIR_CONFIG_FIR_DWIDTH_MASK);
226 return reg_value;
227 }
228
fft_ll_set_fir_config_fir_dwidth(uint32_t value)229 static inline void fft_ll_set_fir_config_fir_dwidth(uint32_t value)
230 {
231 uint32_t reg_value;
232 reg_value = REG_READ(FFT_FIR_CONFIG_ADDR);
233 reg_value &= ~(FFT_FIR_CONFIG_FIR_DWIDTH_MASK << FFT_FIR_CONFIG_FIR_DWIDTH_POS);
234 reg_value |= ((value & FFT_FIR_CONFIG_FIR_DWIDTH_MASK) << FFT_FIR_CONFIG_FIR_DWIDTH_POS);
235 REG_WRITE(FFT_FIR_CONFIG_ADDR,reg_value);
236 }
237
238 /* REG_0x01:fir_config->fir_mode:0x1[14],FIR的工作模式,1 :双FIR模式,0:单FIR模式,0,RW*/
fft_ll_get_fir_config_fir_mode(void)239 static inline uint32_t fft_ll_get_fir_config_fir_mode(void)
240 {
241 uint32_t reg_value;
242 reg_value = REG_READ(FFT_FIR_CONFIG_ADDR);
243 reg_value = ((reg_value >> FFT_FIR_CONFIG_FIR_MODE_POS) & FFT_FIR_CONFIG_FIR_MODE_MASK);
244 return reg_value;
245 }
246
fft_ll_set_fir_config_fir_mode(uint32_t value)247 static inline void fft_ll_set_fir_config_fir_mode(uint32_t value)
248 {
249 uint32_t reg_value;
250 reg_value = REG_READ(FFT_FIR_CONFIG_ADDR);
251 reg_value &= ~(FFT_FIR_CONFIG_FIR_MODE_MASK << FFT_FIR_CONFIG_FIR_MODE_POS);
252 reg_value |= ((value & FFT_FIR_CONFIG_FIR_MODE_MASK) << FFT_FIR_CONFIG_FIR_MODE_POS);
253 REG_WRITE(FFT_FIR_CONFIG_ADDR,reg_value);
254 }
255
256 /* REG_0x01:fir_config->fir_int_en:0x1[15],FIR的中断使能,0,RW*/
fft_ll_get_fir_config_fir_int_en(void)257 static inline uint32_t fft_ll_get_fir_config_fir_int_en(void)
258 {
259 uint32_t reg_value;
260 reg_value = REG_READ(FFT_FIR_CONFIG_ADDR);
261 reg_value = ((reg_value >> FFT_FIR_CONFIG_FIR_INT_EN_POS) & FFT_FIR_CONFIG_FIR_INT_EN_MASK);
262 return reg_value;
263 }
264
fft_ll_set_fir_config_fir_int_en(uint32_t value)265 static inline void fft_ll_set_fir_config_fir_int_en(uint32_t value)
266 {
267 uint32_t reg_value;
268 reg_value = REG_READ(FFT_FIR_CONFIG_ADDR);
269 reg_value &= ~(FFT_FIR_CONFIG_FIR_INT_EN_MASK << FFT_FIR_CONFIG_FIR_INT_EN_POS);
270 reg_value |= ((value & FFT_FIR_CONFIG_FIR_INT_EN_MASK) << FFT_FIR_CONFIG_FIR_INT_EN_POS);
271 REG_WRITE(FFT_FIR_CONFIG_ADDR,reg_value);
272 }
273
274 /* REG_0x01:fir_config->fir_enable:0x1[16],FIR的工作使能 1 :使能,0,RW*/
fft_ll_get_fir_config_fir_enable(void)275 static inline uint32_t fft_ll_get_fir_config_fir_enable(void)
276 {
277 uint32_t reg_value;
278 reg_value = REG_READ(FFT_FIR_CONFIG_ADDR);
279 reg_value = ((reg_value >> FFT_FIR_CONFIG_FIR_ENABLE_POS) & FFT_FIR_CONFIG_FIR_ENABLE_MASK);
280 return reg_value;
281 }
282
fft_ll_set_fir_config_fir_enable(uint32_t value)283 static inline void fft_ll_set_fir_config_fir_enable(uint32_t value)
284 {
285 uint32_t reg_value;
286 reg_value = REG_READ(FFT_FIR_CONFIG_ADDR);
287 reg_value &= ~(FFT_FIR_CONFIG_FIR_ENABLE_MASK << FFT_FIR_CONFIG_FIR_ENABLE_POS);
288 reg_value |= ((value & FFT_FIR_CONFIG_FIR_ENABLE_MASK) << FFT_FIR_CONFIG_FIR_ENABLE_POS);
289 REG_WRITE(FFT_FIR_CONFIG_ADDR,reg_value);
290 }
291
292 /* REG_0x02 */
293 #define FFT_DATA_PORTS_ADDR (FFT_LL_REG_BASE + 0x2*4) //REG ADDR :0x47000008
294 #define FFT_DATA_PORTS_DATA_PORT_POS (0)
295 #define FFT_DATA_PORTS_DATA_PORT_MASK (0xFFFFFFFF)
296
fft_ll_get_data_ports_value(void)297 static inline int32 fft_ll_get_data_ports_value(void)
298 {
299 return REG_READ(FFT_DATA_PORTS_ADDR);
300 }
301
fft_ll_set_data_ports_value(int32 value)302 static inline void fft_ll_set_data_ports_value(int32 value)
303 {
304 REG_WRITE(FFT_DATA_PORTS_ADDR,value);
305 }
306
307 /* REG_0x02:data_ports->data_port:0x2[31:0],FIR和FFT的入口地址,写是输入口,读是输出口 {FFT_I,FFT_Q} 31:0 ; {FIR_D1,FIR_D0} 31:0,0,R/W*/
fft_ll_get_data_ports_data_port(void)308 static inline int32 fft_ll_get_data_ports_data_port(void)
309 {
310 return REG_READ(FFT_DATA_PORTS_ADDR);
311 }
312
fft_ll_set_data_ports_data_port(int32 value)313 static inline void fft_ll_set_data_ports_data_port(int32 value)
314 {
315 REG_WRITE(FFT_DATA_PORTS_ADDR,value);
316 }
317
318 /* REG_0x03 */
319 #define FFT_COEF_PORTS_ADDR (FFT_LL_REG_BASE + 0x3*4) //REG ADDR :0x4700000c
320 #define FFT_COEF_PORTS_COEF_PORT_POS (0)
321 #define FFT_COEF_PORTS_COEF_PORT_MASK (0xFFFFFFFF)
322
fft_ll_set_coef_ports_value(int32 value)323 static inline void fft_ll_set_coef_ports_value(int32 value)
324 {
325 REG_WRITE(FFT_COEF_PORTS_ADDR,value);
326 }
327
328 /* REG_0x03:coef_ports->coef_port:0x3[31:0],FIR 系数的入口地址 {FIR_C1, FIR_C0} 31:0,0,WO*/
fft_ll_set_coef_ports_coef_port(int32 value)329 static inline void fft_ll_set_coef_ports_coef_port(int32 value)
330 {
331 REG_WRITE(FFT_COEF_PORTS_ADDR,value);
332 }
333
334 /* REG_0x04 */
335 #define FFT_MAC_REULT1_ADDR (FFT_LL_REG_BASE + 0x4*4) //REG ADDR :0x47000010
336 #define FFT_MAC_REULT1_MAC_RESULT_POS (0)
337 #define FFT_MAC_REULT1_MAC_RESULT_MASK (0xFFFFFFFF)
338
fft_ll_get_mac_reult1_value(void)339 static inline uint32_t fft_ll_get_mac_reult1_value(void)
340 {
341 return REG_READ(FFT_MAC_REULT1_ADDR);
342 }
343
344 /* REG_0x04:mac_reult1->mac_result:0x4[31:0],MAC 结果输出 ,0,RO*/
fft_ll_get_mac_reult1_mac_result(void)345 static inline uint32_t fft_ll_get_mac_reult1_mac_result(void)
346 {
347 return REG_READ(FFT_MAC_REULT1_ADDR);
348 }
349
350 /* REG_0x05 */
351 #define FFT_MAC_REULT2_ADDR (FFT_LL_REG_BASE + 0x5*4) //REG ADDR :0x47000014
352 #define FFT_MAC_REULT2_MAC_RESULT_POS (0)
353 #define FFT_MAC_REULT2_MAC_RESULT_MASK (0xFFF)
354
355 #define FFT_MAC_REULT2_RESERVED_POS (12)
356 #define FFT_MAC_REULT2_RESERVED_MASK (0xFFFFF)
357
fft_ll_get_mac_reult2_value(void)358 static inline uint32_t fft_ll_get_mac_reult2_value(void)
359 {
360 return REG_READ(FFT_MAC_REULT2_ADDR);
361 }
362
363 /* REG_0x05:mac_reult2->mac_result:0x5[11:0],,MAC 结果输出 ,0,RO*/
fft_ll_get_mac_reult2_mac_result(void)364 static inline uint32_t fft_ll_get_mac_reult2_mac_result(void)
365 {
366 uint32_t reg_value;
367 reg_value = REG_READ(FFT_MAC_REULT2_ADDR);
368 reg_value = ((reg_value >> FFT_MAC_REULT2_MAC_RESULT_POS)&FFT_MAC_REULT2_MAC_RESULT_MASK);
369 return reg_value;
370 }
371
372 /* REG_0x06 */
373 #define FFT_STATUS_ADDR (FFT_LL_REG_BASE + 0x6*4) //REG ADDR :0x47000018
374 #define FFT_STATUS_FFT_DONE_POS (0)
375 #define FFT_STATUS_FFT_DONE_MASK (0x1)
376
377 #define FFT_STATUS_FIR_DONE_POS (1)
378 #define FFT_STATUS_FIR_DONE_MASK (0x1)
379
380 #define FFT_STATUS_SELF_PROC_DONE_POS (2)
381 #define FFT_STATUS_SELF_PROC_DONE_MASK (0x1)
382
383 #define FFT_STATUS_RESERVED_POS (3)
384 #define FFT_STATUS_RESERVED_MASK (0xF)
385
386 #define FFT_STATUS_BIT_EXT_POS (7)
387 #define FFT_STATUS_BIT_EXT_MASK (0x3F)
388
389 #define FFT_STATUS_RESERVED1_POS (13)
390 #define FFT_STATUS_RESERVED1_MASK (0x7FFFF)
391
fft_ll_get_status_value(void)392 static inline uint32_t fft_ll_get_status_value(void)
393 {
394 return REG_READ(FFT_STATUS_ADDR);
395 }
396
fft_ll_set_status_value(uint32_t value)397 static inline void fft_ll_set_status_value(uint32_t value)
398 {
399 REG_WRITE(FFT_STATUS_ADDR,value);
400 }
401
402 /* REG_0x06:status->fft_done:0x6[0],FFT 结束指示标志, 一旦启动读结果,自动清零,0,RW*/
fft_ll_get_status_fft_done(void)403 static inline uint32_t fft_ll_get_status_fft_done(void)
404 {
405 uint32_t reg_value;
406 reg_value = REG_READ(FFT_STATUS_ADDR);
407 reg_value = ((reg_value >> FFT_STATUS_FFT_DONE_POS) & FFT_STATUS_FFT_DONE_MASK);
408 return reg_value;
409 }
410
fft_ll_set_status_fft_done(uint32_t value)411 static inline void fft_ll_set_status_fft_done(uint32_t value)
412 {
413 uint32_t reg_value;
414 reg_value = REG_READ(FFT_STATUS_ADDR);
415 reg_value &= ~(FFT_STATUS_FFT_DONE_MASK << FFT_STATUS_FFT_DONE_POS);
416 reg_value |= ((value & FFT_STATUS_FFT_DONE_MASK) << FFT_STATUS_FFT_DONE_POS);
417 REG_WRITE(FFT_STATUS_ADDR,reg_value);
418 }
419
420 /* REG_0x06:status->fir_done:0x6[1],FIR 结束指示标志, 一旦启动读结果,自动清零,0,RW*/
fft_ll_get_status_fir_done(void)421 static inline uint32_t fft_ll_get_status_fir_done(void)
422 {
423 uint32_t reg_value;
424 reg_value = REG_READ(FFT_STATUS_ADDR);
425 reg_value = ((reg_value >> FFT_STATUS_FIR_DONE_POS) & FFT_STATUS_FIR_DONE_MASK);
426 return reg_value;
427 }
428
fft_ll_set_status_fir_done(uint32_t value)429 static inline void fft_ll_set_status_fir_done(uint32_t value)
430 {
431 uint32_t reg_value;
432 reg_value = REG_READ(FFT_STATUS_ADDR);
433 reg_value &= ~(FFT_STATUS_FIR_DONE_MASK << FFT_STATUS_FIR_DONE_POS);
434 reg_value |= ((value & FFT_STATUS_FIR_DONE_MASK) << FFT_STATUS_FIR_DONE_POS);
435 REG_WRITE(FFT_STATUS_ADDR,reg_value);
436 }
437
438 /* REG_0x06:status->self_proc_done:0x6[2],自相关处理结束指示标志, 一旦启动读结果,自动清零,0,RW*/
fft_ll_get_status_self_proc_done(void)439 static inline uint32_t fft_ll_get_status_self_proc_done(void)
440 {
441 uint32_t reg_value;
442 reg_value = REG_READ(FFT_STATUS_ADDR);
443 reg_value = ((reg_value >> FFT_STATUS_SELF_PROC_DONE_POS) & FFT_STATUS_SELF_PROC_DONE_MASK);
444 return reg_value;
445 }
446
fft_ll_set_status_self_proc_done(uint32_t value)447 static inline void fft_ll_set_status_self_proc_done(uint32_t value)
448 {
449 uint32_t reg_value;
450 reg_value = REG_READ(FFT_STATUS_ADDR);
451 reg_value &= ~(FFT_STATUS_SELF_PROC_DONE_MASK << FFT_STATUS_SELF_PROC_DONE_POS);
452 reg_value |= ((value & FFT_STATUS_SELF_PROC_DONE_MASK) << FFT_STATUS_SELF_PROC_DONE_POS);
453 REG_WRITE(FFT_STATUS_ADDR,reg_value);
454 }
455
456 /* REG_0x06:status->bit_ext:0x6[12:7],FFT输出扩展标志,2的补码格式,如果为正数。需要在输出缩小2^bit_ext倍数。,0,RW*/
fft_ll_get_status_bit_ext(void)457 static inline uint32_t fft_ll_get_status_bit_ext(void)
458 {
459 uint32_t reg_value;
460 reg_value = REG_READ(FFT_STATUS_ADDR);
461 reg_value = ((reg_value >> FFT_STATUS_BIT_EXT_POS) & FFT_STATUS_BIT_EXT_MASK);
462 return reg_value;
463 }
464
fft_ll_set_status_bit_ext(uint32_t value)465 static inline void fft_ll_set_status_bit_ext(uint32_t value)
466 {
467 uint32_t reg_value;
468 reg_value = REG_READ(FFT_STATUS_ADDR);
469 reg_value &= ~(FFT_STATUS_BIT_EXT_MASK << FFT_STATUS_BIT_EXT_POS);
470 reg_value |= ((value & FFT_STATUS_BIT_EXT_MASK) << FFT_STATUS_BIT_EXT_POS);
471 REG_WRITE(FFT_STATUS_ADDR,reg_value);
472 }
473
474 /* REG_0x07 */
475 #define FFT_START_TRIGGER_ADDR (FFT_LL_REG_BASE + 0x7*4) //REG ADDR :0x4700001c
476 #define FFT_START_TRIGGER_START_TRIGGER_POS (0)
477 #define FFT_START_TRIGGER_START_TRIGGER_MASK (0x1)
478
479 #define FFT_START_TRIGGER_RESERVED_POS (1)
480 #define FFT_START_TRIGGER_RESERVED_MASK (0x7FFFFFFF)
481
fft_ll_get_start_trigger_value(void)482 static inline uint32_t fft_ll_get_start_trigger_value(void)
483 {
484 return REG_READ(FFT_START_TRIGGER_ADDR);
485 }
486
fft_ll_set_start_trigger_value(uint32_t value)487 static inline void fft_ll_set_start_trigger_value(uint32_t value)
488 {
489 REG_WRITE(FFT_START_TRIGGER_ADDR,value);
490 }
491
492 /* REG_0x07:start_trigger->start_trigger:0x7[0],写1有效,触发内核工作,并自动清零。,0,RW*/
fft_ll_get_start_trigger_start_trigger(void)493 static inline uint32_t fft_ll_get_start_trigger_start_trigger(void)
494 {
495 uint32_t reg_value;
496 reg_value = REG_READ(FFT_START_TRIGGER_ADDR);
497 reg_value = ((reg_value >> FFT_START_TRIGGER_START_TRIGGER_POS) & FFT_START_TRIGGER_START_TRIGGER_MASK);
498 return reg_value;
499 }
500
fft_ll_set_start_trigger_start_trigger(uint32_t value)501 static inline void fft_ll_set_start_trigger_start_trigger(uint32_t value)
502 {
503 uint32_t reg_value;
504 reg_value = REG_READ(FFT_START_TRIGGER_ADDR);
505 reg_value &= ~(FFT_START_TRIGGER_START_TRIGGER_MASK << FFT_START_TRIGGER_START_TRIGGER_POS);
506 reg_value |= ((value & FFT_START_TRIGGER_START_TRIGGER_MASK) << FFT_START_TRIGGER_START_TRIGGER_POS);
507 REG_WRITE(FFT_START_TRIGGER_ADDR,reg_value);
508 }
509
510 /* REG_0x08 */
511 #define FFT_SELF_CONFIG_ADDR (FFT_LL_REG_BASE + 0x8*4) //REG ADDR :0x47000020
512 #define FFT_SELF_CONFIG_ANA_LEN_POS (0)
513 #define FFT_SELF_CONFIG_ANA_LEN_MASK (0xFF)
514
515 #define FFT_SELF_CONFIG_LPC_LEN_POS (8)
516 #define FFT_SELF_CONFIG_LPC_LEN_MASK (0xFF)
517
518 #define FFT_SELF_CONFIG_ROUND_BIT_IDX_POS (16)
519 #define FFT_SELF_CONFIG_ROUND_BIT_IDX_MASK (0x1F)
520
521 #define FFT_SELF_CONFIG_RESERVED_POS (21)
522 #define FFT_SELF_CONFIG_RESERVED_MASK (0x7)
523
524 #define FFT_SELF_CONFIG_SELF_PROC_MODE_POS (24)
525 #define FFT_SELF_CONFIG_SELF_PROC_MODE_MASK (0x1)
526
527 #define FFT_SELF_CONFIG_RESERVED1_POS (25)
528 #define FFT_SELF_CONFIG_RESERVED1_MASK (0x7)
529
530 #define FFT_SELF_CONFIG_SELF_ENABLE_POS (28)
531 #define FFT_SELF_CONFIG_SELF_ENABLE_MASK (0x1)
532
533 #define FFT_SELF_CONFIG_RESERVED2_POS (29)
534 #define FFT_SELF_CONFIG_RESERVED2_MASK (0x7)
535
fft_ll_get_self_config_value(void)536 static inline uint32_t fft_ll_get_self_config_value(void)
537 {
538 return REG_READ(FFT_SELF_CONFIG_ADDR);
539 }
540
fft_ll_set_self_config_value(uint32_t value)541 static inline void fft_ll_set_self_config_value(uint32_t value)
542 {
543 REG_WRITE(FFT_SELF_CONFIG_ADDR,value);
544 }
545
546 /* REG_0x08:self_config->ana_len:0x8[7:0],输入数据长度,0,RW*/
fft_ll_get_self_config_ana_len(void)547 static inline uint32_t fft_ll_get_self_config_ana_len(void)
548 {
549 uint32_t reg_value;
550 reg_value = REG_READ(FFT_SELF_CONFIG_ADDR);
551 reg_value = ((reg_value >> FFT_SELF_CONFIG_ANA_LEN_POS) & FFT_SELF_CONFIG_ANA_LEN_MASK);
552 return reg_value;
553 }
554
fft_ll_set_self_config_ana_len(uint32_t value)555 static inline void fft_ll_set_self_config_ana_len(uint32_t value)
556 {
557 uint32_t reg_value;
558 reg_value = REG_READ(FFT_SELF_CONFIG_ADDR);
559 reg_value &= ~(FFT_SELF_CONFIG_ANA_LEN_MASK << FFT_SELF_CONFIG_ANA_LEN_POS);
560 reg_value |= ((value & FFT_SELF_CONFIG_ANA_LEN_MASK) << FFT_SELF_CONFIG_ANA_LEN_POS);
561 REG_WRITE(FFT_SELF_CONFIG_ADDR,reg_value);
562 }
563
564 /* REG_0x08:self_config->lpc_len:0x8[15:8],LPC_LEN长度,0,RW*/
fft_ll_get_self_config_lpc_len(void)565 static inline uint32_t fft_ll_get_self_config_lpc_len(void)
566 {
567 uint32_t reg_value;
568 reg_value = REG_READ(FFT_SELF_CONFIG_ADDR);
569 reg_value = ((reg_value >> FFT_SELF_CONFIG_LPC_LEN_POS) & FFT_SELF_CONFIG_LPC_LEN_MASK);
570 return reg_value;
571 }
572
fft_ll_set_self_config_lpc_len(uint32_t value)573 static inline void fft_ll_set_self_config_lpc_len(uint32_t value)
574 {
575 uint32_t reg_value;
576 reg_value = REG_READ(FFT_SELF_CONFIG_ADDR);
577 reg_value &= ~(FFT_SELF_CONFIG_LPC_LEN_MASK << FFT_SELF_CONFIG_LPC_LEN_POS);
578 reg_value |= ((value & FFT_SELF_CONFIG_LPC_LEN_MASK) << FFT_SELF_CONFIG_LPC_LEN_POS);
579 REG_WRITE(FFT_SELF_CONFIG_ADDR,reg_value);
580 }
581
582 /* REG_0x08:self_config->round_bit_idx:0x8[20:16],自相关累加结果需要round的比特数,0,RW*/
fft_ll_get_self_config_round_bit_idx(void)583 static inline uint32_t fft_ll_get_self_config_round_bit_idx(void)
584 {
585 uint32_t reg_value;
586 reg_value = REG_READ(FFT_SELF_CONFIG_ADDR);
587 reg_value = ((reg_value >> FFT_SELF_CONFIG_ROUND_BIT_IDX_POS) & FFT_SELF_CONFIG_ROUND_BIT_IDX_MASK);
588 return reg_value;
589 }
590
fft_ll_set_self_config_round_bit_idx(uint32_t value)591 static inline void fft_ll_set_self_config_round_bit_idx(uint32_t value)
592 {
593 uint32_t reg_value;
594 reg_value = REG_READ(FFT_SELF_CONFIG_ADDR);
595 reg_value &= ~(FFT_SELF_CONFIG_ROUND_BIT_IDX_MASK << FFT_SELF_CONFIG_ROUND_BIT_IDX_POS);
596 reg_value |= ((value & FFT_SELF_CONFIG_ROUND_BIT_IDX_MASK) << FFT_SELF_CONFIG_ROUND_BIT_IDX_POS);
597 REG_WRITE(FFT_SELF_CONFIG_ADDR,reg_value);
598 }
599
600 /* REG_0x08:self_config->self_proc_mode:0x8[24],自相关处理模式选择,0,RW*/
fft_ll_get_self_config_self_proc_mode(void)601 static inline uint32_t fft_ll_get_self_config_self_proc_mode(void)
602 {
603 uint32_t reg_value;
604 reg_value = REG_READ(FFT_SELF_CONFIG_ADDR);
605 reg_value = ((reg_value >> FFT_SELF_CONFIG_SELF_PROC_MODE_POS) & FFT_SELF_CONFIG_SELF_PROC_MODE_MASK);
606 return reg_value;
607 }
608
fft_ll_set_self_config_self_proc_mode(uint32_t value)609 static inline void fft_ll_set_self_config_self_proc_mode(uint32_t value)
610 {
611 uint32_t reg_value;
612 reg_value = REG_READ(FFT_SELF_CONFIG_ADDR);
613 reg_value &= ~(FFT_SELF_CONFIG_SELF_PROC_MODE_MASK << FFT_SELF_CONFIG_SELF_PROC_MODE_POS);
614 reg_value |= ((value & FFT_SELF_CONFIG_SELF_PROC_MODE_MASK) << FFT_SELF_CONFIG_SELF_PROC_MODE_POS);
615 REG_WRITE(FFT_SELF_CONFIG_ADDR,reg_value);
616 }
617
618 /* REG_0x08:self_config->self_enable:0x8[28],自相关工作使能. 0:不使能;1:使能,0,RW*/
fft_ll_get_self_config_self_enable(void)619 static inline uint32_t fft_ll_get_self_config_self_enable(void)
620 {
621 uint32_t reg_value;
622 reg_value = REG_READ(FFT_SELF_CONFIG_ADDR);
623 reg_value = ((reg_value >> FFT_SELF_CONFIG_SELF_ENABLE_POS) & FFT_SELF_CONFIG_SELF_ENABLE_MASK);
624 return reg_value;
625 }
626
fft_ll_set_self_config_self_enable(uint32_t value)627 static inline void fft_ll_set_self_config_self_enable(uint32_t value)
628 {
629 uint32_t reg_value;
630 reg_value = REG_READ(FFT_SELF_CONFIG_ADDR);
631 reg_value &= ~(FFT_SELF_CONFIG_SELF_ENABLE_MASK << FFT_SELF_CONFIG_SELF_ENABLE_POS);
632 reg_value |= ((value & FFT_SELF_CONFIG_SELF_ENABLE_MASK) << FFT_SELF_CONFIG_SELF_ENABLE_POS);
633 REG_WRITE(FFT_SELF_CONFIG_ADDR,reg_value);
634 }
635
636 /* REG_0x09 */
637 #define FFT_MEMORY_CONFIG_ADDR (FFT_LL_REG_BASE + 0x9*4) //REG ADDR :0x47000024
638 #define FFT_MEMORY_CONFIG_MEMORY_CONFIG_MODE_POS (0)
639 #define FFT_MEMORY_CONFIG_MEMORY_CONFIG_MODE_MASK (0x1)
640
641 #define FFT_MEMORY_CONFIG_RESERVED_POS (1)
642 #define FFT_MEMORY_CONFIG_RESERVED_MASK (0x7FFFFFFF)
643
fft_ll_get_memory_config_value(void)644 static inline uint32_t fft_ll_get_memory_config_value(void)
645 {
646 return REG_READ(FFT_MEMORY_CONFIG_ADDR);
647 }
648
fft_ll_set_memory_config_value(uint32_t value)649 static inline void fft_ll_set_memory_config_value(uint32_t value)
650 {
651 REG_WRITE(FFT_MEMORY_CONFIG_ADDR,value);
652 }
653
654 /* REG_0x09:memory_config->memory_config_mode:0x9[0],Memory0和Memory1软件配置方式.; 0:Memory0和Memory1软件分别配置;; 1:在fft_enable/fir_enable/self_enable都不使能的情况下,Memory0和Memory1软件同时配置.,0,RW*/
fft_ll_get_memory_config_memory_config_mode(void)655 static inline uint32_t fft_ll_get_memory_config_memory_config_mode(void)
656 {
657 uint32_t reg_value;
658 reg_value = REG_READ(FFT_MEMORY_CONFIG_ADDR);
659 reg_value = ((reg_value >> FFT_MEMORY_CONFIG_MEMORY_CONFIG_MODE_POS) & FFT_MEMORY_CONFIG_MEMORY_CONFIG_MODE_MASK);
660 return reg_value;
661 }
662
fft_ll_set_memory_config_memory_config_mode(uint32_t value)663 static inline void fft_ll_set_memory_config_memory_config_mode(uint32_t value)
664 {
665 uint32_t reg_value;
666 reg_value = REG_READ(FFT_MEMORY_CONFIG_ADDR);
667 reg_value &= ~(FFT_MEMORY_CONFIG_MEMORY_CONFIG_MODE_MASK << FFT_MEMORY_CONFIG_MEMORY_CONFIG_MODE_POS);
668 reg_value |= ((value & FFT_MEMORY_CONFIG_MEMORY_CONFIG_MODE_MASK) << FFT_MEMORY_CONFIG_MEMORY_CONFIG_MODE_POS);
669 REG_WRITE(FFT_MEMORY_CONFIG_ADDR,reg_value);
670 }
671
672 #ifdef __cplusplus
673 }
674 #endif
675