CI130X SDK API手册  2.2.0
本手册用于描述CI130X SDK各个组件和驱动API
ci130x_alc.h
浏览该文件的文档.
1 
11 #ifndef __CI130X_ALC_H
12 #define __CI130X_ALC_H
13 
14 #include "ci130x_system.h"
15 #include "stdint.h"
16 
17 #ifdef __cplusplus
18 extern "C" {
19 #endif
20 
21 
22 //ALC调节的粒度,每一档调节增益调整的大小(dB为单位)
23 typedef enum
24 {
25  //ALC每次增减0.5dB
27  //ALC每次增减1dB
29  //ALC每次增减1.5dB
31  //ALC每次增减2dB
33  //ALC每次增减2.5dB
35  //ALC每次增减3dB
37  //ALC每次增减3.5dB
39  //ALC每次增减4dB
42 
43 
44 //ALC每次调节的次数
45 typedef enum
46 {
47  //ALC每次调节增益调节1次
49  //ALC每次调节增益调节2次
51  //ALC每次调节增益调节3次
53  //ALC每次调节增益调节4次
56 
57 
58 //ALC通道选择
59 typedef enum
60 {
61  //ALC右通道
63  //ALC左通道
66 
67 
68 
69 //ALC中断配置结构体类型
70 typedef struct
71 {
72  //ALC输出的增益比设置的最大增益高
74  //ALC输出的增益比设置的最小增益低
76 
77  //ALC输出的增益比设置的最大增益低
79  //ALC输出的增益比设置的最小增益高
81 
82  //处于连续ATTACK过程超过设定的次数,说明输入信号幅度较大
83  uint32_t atk_limit_int_en;
84  //处于连续DECAY过程超过设定的次数,说明输入信号幅度较小
85  uint32_t dcy_limit_int_en;
86 
87  //检测到gain_ch翻转(inner codec给出的信号,每次inner codec ALC输出的增益变化,都会使这个信号翻转)
89  //检测到gain_in变化(检测inner codec ALC输出的增益改变)
91  //GAIN出现非连续变化(异常情况)
93 
94  //配置PDM寄存器后读回数据对比出错
95  uint32_t read_err_int_en;
97 
98 
99 //ALC配置结构体类型
100 typedef struct
101 {
102  //ALC调节粒度设置
104  //ALC每次调节次数设置
106  //当GAIN为0时,对应的8bit数字增益起点
107  uint32_t db_offset;
108  //增益减小的时候,每次GAIN变化调节子级需要的时间间隔,需根据AHP时钟设置
109  uint32_t step_tmr_atk;
110  //增益增加的时候,每次GAIN变化调节子级需要的时间间隔,需根据AHP时钟设置
111  uint32_t step_tmr_dcy;
112  //ALC输出的增益配置,需要送往PDM的数字增益配置寄存器地址
113  uint32_t cfg_addr;
114  //实际运行DB下限配置,超出范围,将进行中断报警
115  uint32_t min_db_alert;
116  //实际运行DB上限配置,超出范围,将进行中断报警
117  uint32_t max_db_alert;
118 
119  //连续处于ATK次数的上限,超过后进行中断报警
120  uint32_t atk_limit_num;
121  //连续处于DCY次数的上限,超过后进行中断报警
122  uint32_t dcy_limit_num;
124 
125 
126 //ALC左通道的输入增益来自inner codec的那个通道
127 typedef enum
128 {
129  //ALC左通道的输入为inner PDM左通道输出
131  //ALC左通道的输入为inner PDM右通道输出
134 
135 
136 //ALC右通道的输入增益来自inner codec的那个通道
137 typedef enum
138 {
139  //ALC右通道的输入为inner PDM左通道输出
141  //ALC右通道的输入为inner PDM右通道输出
144 
145 
146 //ALC检测模式设置
147 typedef enum
148 {
149  //配合DETECT_NUM检测
151  //检测电平翻转
154 
155 
156 //ALC全局配置结构体类型
157 typedef struct
158 {
159  //ALC左通道检测的增益来自inner codec左通道或者右通道
161  //ALC右通道检测的增益来自inner codec左通道或者右通道
163  //连续相同的周期数达到该值表示数据稳定
164  uint32_t detect_num;
165  //ALC检测模式设置
168 
169 
170 
171 //当前ALC调整增益的状态
172 typedef struct
173 {
174  //由codec输入的db值
176  //实时配置给codec数字增益模块的db值
177  uint32_t gain_db_to_codec;
178  //目前进展到的实际增益调整级数
179  uint32_t step_cnt;
181 
182 
183 //当前ALC处于的阶段
184 typedef struct
185 {
186  //是否处于atk阶段
187  uint32_t is_atk;
188  //是否处于dcy阶段
189  uint32_t is_dcy;
190  //是否处于hold阶段
191  uint32_t is_hold;
192  //连续ATK的计数值
193  uint32_t atk_cnt;
194  //连续dcy的计数值
195  uint32_t dcy_cnt;
197 
198 
199 //当前ALC其他的一些状态
200 typedef struct
201 {
202  //AHB PAUSE状态
203  uint32_t is_ahp_pause_en;
204  //L通道是否处于PAUSE状态
205  uint32_t is_l_pause_en;
206  //R通道是否处于PAUSE状态
207  uint32_t is_r_pause_en;
208  //L通道是否处于IDLE状态
209  uint32_t is_l_idle;
210  //R通道是否处于IDLE状态
211  uint32_t is_r_idle;
212  //l通道gain翻转信号
213  uint32_t is_gain_ch_l;
214  //r通道gain翻转信号
215  uint32_t is_gain_ch_r;
216  //L通道gain输入
217  uint32_t gain_in_l;
218  //R通道gain输入
219  uint32_t gain_in_r;
221 
222 
231 
232 #ifdef __cplusplus
233 }
234 #endif
235 
236 #endif
237 /***************** (C) COPYRIGHT Chipintelli Technology Co., Ltd. *****END OF FILE****/
238 
Definition: ci130x_alc.h:150
uint32_t atk_cnt
Definition: ci130x_alc.h:193
Definition: ci130x_alc.h:172
Definition: ci130x_alc.h:32
alc_aux_r_gain_sel_t
Definition: ci130x_alc.h:137
uint32_t gain_db_from_codec
Definition: ci130x_alc.h:175
Definition: ci130x_alc.h:50
uint32_t crs_up_max_db_int_en
Definition: ci130x_alc.h:73
uint32_t gain_db_to_codec
Definition: ci130x_alc.h:177
Definition: ci130x_alc.h:157
uint32_t is_hold
Definition: ci130x_alc.h:191
void alc_interrupt_handler(ALC_TypeDef *alc)
ALC中断回调函数
Definition: ci130x_alc.c:182
uint32_t dcy_limit_int_en
Definition: ci130x_alc.h:85
uint32_t dcy_limit_num
Definition: ci130x_alc.h:122
void alc_aux_right_cha_en(ALC_TypeDef *alc, FunctionalState cmd)
AUX_ALC 右通道开关
Definition: ci130x_alc.c:156
uint32_t crs_down_min_db_int_en
Definition: ci130x_alc.h:75
uint32_t detect_num
Definition: ci130x_alc.h:164
uint32_t is_ahp_pause_en
Definition: ci130x_alc.h:203
alc_aux_step_cnt_t step_cnt
Definition: ci130x_alc.h:105
Definition: ci130x_alc.h:34
Definition: ci130x_alc.h:140
uint32_t gain_in_change_int_en
Definition: ci130x_alc.h:90
Definition: ci130x_alc.h:184
uint32_t crs_down_max_db_int_en
Definition: ci130x_alc.h:78
uint32_t crs_up_min_db_int_en
Definition: ci130x_alc.h:80
alc_aux_detect_md_sel_t
Definition: ci130x_alc.h:147
uint32_t read_err_int_en
Definition: ci130x_alc.h:95
Definition: ci130x_alc.h:40
void alc_aux_left_cha_en(ALC_TypeDef *alc, FunctionalState cmd)
AUX_ALC 左通道开关
Definition: ci130x_alc.c:141
uint32_t atk_limit_num
Definition: ci130x_alc.h:120
Definition: ci130x_alc.h:70
Definition: ci130x_alc.h:62
alc_aux_step_cnt_t
Definition: ci130x_alc.h:45
void alc_aux_globle_config(ALC_TypeDef *alc, alc_aux_globle_config_t *ALC_Glb_Type)
配置CI110x中的ALC GLB_CTRL寄存器的配置
Definition: ci130x_alc.c:127
alc_aux_step_grd_t step_grd
Definition: ci130x_alc.h:103
alc_aux_l_gain_sel_t left_gain_sel
Definition: ci130x_alc.h:160
uint32_t max_db_alert
Definition: ci130x_alc.h:117
alc_aux_l_gain_sel_t
Definition: ci130x_alc.h:127
uint32_t is_dcy
Definition: ci130x_alc.h:189
void alc_aux_intterupt_config(ALC_TypeDef *alc, alc_aux_int_t *ALC_INT_Type, alc_aux_cha_t cha)
配置CI110x中的ALC的中断使能
Definition: ci130x_alc.c:56
uint32_t min_db_alert
Definition: ci130x_alc.h:115
uint32_t db_offset
Definition: ci130x_alc.h:107
Definition: ci130x_alc.h:132
uint32_t is_l_idle
Definition: ci130x_alc.h:209
void alc_aux_globle_enable(ALC_TypeDef *alc, FunctionalState cmd)
ALC全局使能
Definition: ci130x_alc.c:171
chip级定义
uint32_t is_l_pause_en
Definition: ci130x_alc.h:205
Definition: ci130x_alc.h:200
Definition: ci130x_alc.h:130
uint32_t step_tmr_atk
Definition: ci130x_alc.h:109
uint32_t step_cnt
Definition: ci130x_alc.h:179
Definition: ci130x_alc.h:26
FunctionalState
Definition: ci130x_system.h:86
Definition: ci130x_system.h:439
Definition: ci130x_alc.h:30
Definition: ci130x_alc.h:48
uint32_t is_r_idle
Definition: ci130x_alc.h:211
alc_aux_r_gain_sel_t right_gain_sel
Definition: ci130x_alc.h:162
Definition: ci130x_alc.h:38
Definition: ci130x_alc.h:142
void alc_aux_right_config(ALC_TypeDef *alc, alc_aux_config_t *ALC_Type)
配置CI110x中的ALC右通道的参数(这只是右通道的ALC一些参数的配置, 还有左通道配置的函数,在ALC_Enable函...
Definition: ci130x_alc.c:107
alc_aux_detect_md_sel_t detect_mode
Definition: ci130x_alc.h:166
uint32_t cfg_addr
Definition: ci130x_alc.h:113
Definition: ci130x_alc.h:36
Definition: ci130x_alc.h:100
uint32_t gain_in_r
Definition: ci130x_alc.h:219
uint32_t is_atk
Definition: ci130x_alc.h:187
alc_aux_cha_t
Definition: ci130x_alc.h:59
uint32_t atk_limit_int_en
Definition: ci130x_alc.h:83
uint32_t is_r_pause_en
Definition: ci130x_alc.h:207
Definition: ci130x_alc.h:64
uint32_t gain_in_l
Definition: ci130x_alc.h:217
Definition: ci130x_alc.h:52
uint32_t is_gain_ch_l
Definition: ci130x_alc.h:213
uint32_t dcy_cnt
Definition: ci130x_alc.h:195
uint32_t gain_discr_int_en
Definition: ci130x_alc.h:92
Definition: ci130x_alc.h:152
Definition: ci130x_alc.h:28
uint32_t step_tmr_dcy
Definition: ci130x_alc.h:111
alc_aux_step_grd_t
Definition: ci130x_alc.h:23
Definition: ci130x_alc.h:54
uint32_t gain_change_int_en
Definition: ci130x_alc.h:88
void alc_aux_left_config(ALC_TypeDef *alc, alc_aux_config_t *ALC_Type)
配置CI110x中的ALC左通道的参数(这只是左通道的ALC一些参数的配置, 还有右通道配置的函数,在ALC_Enable函...
Definition: ci130x_alc.c:86
uint32_t is_gain_ch_r
Definition: ci130x_alc.h:215