Select_mic_input(int state)函数分析
分析:函数select_mic_input( int state) 的形参state 的值取决于识别到的耳机的值
0:没有耳机
1:耳机带MIC
2:耳机不带MIC
在接下来的条件判断语句中主要通过位操作来影响CtrlReg ,VolumeCtrlReg ,VolumeADCdigtalReg 这三个值
举例说明插入的是带MIC的耳机则,最后CtrlReg =0x14, volumeCtrlReg =0x1f,
VolumeADCdigtalReg =0x1d0
接下来即根据这些值对音频codec 的寄存器的值进行操作,以插入带MIC的耳机为例:
1:向0x2e寄存器中写入CtrlReg的值0x14 (0001 0100)
带MIC耳机的输入选择 IN2L 单端输入。
向0x2f寄存器中写入CtrlReg的值0x14 (0001 0100)
带MIC耳机的输入选择 IN2R 单端输入。
符合原理图中的设计
2
向0x2c寄存器写入volumeCtrlReg 的值0x1f 即是设置左声道的 left input PGA Volume 为
28.3db。
向0x2d寄存器写入volumeCtrlReg 的值0x1f 即是设置右声道的 right input PGA Volume 为28.3db。
3
向0x24寄存器总写入VolumeADCdigtalReg的值 0x1d0
D0 表示设置 ADC digtal Volume 为6 db, 1 表示当向该寄存器的第8位写入1 的时候ADC
Volume 就可以更新了。
向0x25寄存器总写入VolumeADCdigtalReg的值 0x1d0 ,的作用也同上。