移植cs42l51芯片驱动
主要的几个寄存器
DAC Control (Address 09h)
cs42l51_regs[9] = CS42L51_DAC_CTL_DATA_SEL(1) | CS42L51_DAC_CTL_DEEMPH | CS42L51_DAC_CTL_AMUTE | CS42L51_DAC_CTL_DACSZ(0);
I2C_Write(CS42l51_I2C_ADDR, CS42L51_DAC_CTL, &cs42l51_regs[9], 1);
这里把DAC Data Selection设置为Signal Processing Engine to DAC模式,DAC De-Emphasis Control置1,使能数字滤波器应用de-emphasis功能,使能了Analog Output Auto MUTE功能,声音变化调节设置为了Immediate Change模式。
Interface Control (Address 04h)
cs42l51_regs[4] = CS42L51_INTF_CTL_DIGMIX;
I2C_Write(CS42l51_I2C_ADDR, CS42L51_INTF_CTL, &cs42l51_regs[4], 1);
将DIGMIX置1可以实现录音功能。
AOUTx Volume Control:AOUTA (Address 16h) & AOUTB (Address 17h)
cs42l51_regs[22] = 0xC0; //-32DB
cs42l51_regs[23] = 0xC0; //-32DB
I2C_Write(CS42l51_I2C_ADDR, CS42L51_PCMA_VOL, &cs42l51_regs[16], 1);
I2C_Write(CS42l51_I2C_ADDR, CS42L51_PCMB_VOL, &cs42l51_regs[17], 1);
设置AOUT通道声音变小。
ADCx Mixer Volume Control: ADCA (Address 0Eh) & ADCB (Address 0Fh)
cs42l51_regs[16] = 0x18; //12DB
cs42l51_regs[17] = 0x18; //12DB
I2C_Write(CS42l51_I2C_ADDR, CS42L51_PCMA_VOL, &cs42l51_regs[16], 1);
I2C_Write(CS42l51_I2C_ADDR, CS42L51_PCMB_VOL, &cs42l51_regs[17], 1);
设置 ADCx Mixer声音变大。
Output Architecture
这里为了协调录音音量与播放音量大小,对通道声音进行了适当的调节。