📄 aic23.c
字号:
#include "DSP28_Device.h"
extern Uint16 volume;
extern unsigned int * SIAdd;
//bit0->CS bit1->Data bit2->SCLK
/*这里是对AIC23芯片进行了初始化,大家学习时可以查看手册,来看对它的一些配置,这里我们不在讲述*/
void InitAic23()
{
WriteAic23(RESET,0);
WriteAic23(D_INTERFACE_ACT,0x001);
WriteAic23(POWER_CON,0);
WriteAic23(SAMPLE_RATE,0x022); //44.1k
// WriteAic23(SAMPLE_RATE,0x062); //22.05k
// WriteAic23(SAMPLE_RATE,0x02e); //8.021k
WriteAic23(L_LINE_VOLUME,0x0117);
WriteAic23(R_LINE_VOLUME,0x0117);
volume=108;
WriteAic23(L_HEADPHONE_VOLUME,0x0180+volume);
WriteAic23(R_HEADPHONE_VOLUME,0x0180+volume);
// WriteAic23(A_AUDIO_PATH,0x009); //bypass DAC OFF
// WriteAic23(A_AUDIO_PATH,0x014); //MIC ADC DAC ON 0DB
// WriteAic23(A_AUDIO_PATH,0x1fc); //bypass MIC ADC DAC ON 0DB sidetone
WriteAic23(A_AUDIO_PATH,0x07d); //bypass MIC ADC DAC ON 20DB sidetone(-6db)
// WriteAic23(A_AUDIO_PATH,0x011); //LINE ADC DAC ON
WriteAic23(D_AUDIO_PATH,0x04);
WriteAic23(D_AUDIO_INTERFACE,0x043); //AIC23 master, dsp mode, 16BIT
}
void WriteAic23(Uint16 addr,Uint16 dat)
{
Uint16 i,Temp;
Temp = addr<<9;
dat = dat | Temp;//高7位地址,低9位数据
//CS=0,SCLK=1;
* SIAdd=0x0004;
for(i=0;i<16;i++)
{
//CS=0,SCLK=0;
* SIAdd=0x0000;
Temp = dat<<i;
Temp = Temp & 0x8000;//先发高位
if (Temp)
{
* SIAdd=0x0002;
}
else{
* SIAdd=0x0000;
}
delay(5000);
if (Temp)
{
* SIAdd=0x0006; //SCLK=1;
}
else{
* SIAdd=0x0004; //SCLK=1;
}
delay(5000);
}
//CS=1;
* SIAdd=0x0001;
delay(5000);
}
void delay(Uint32 k)
{
while(k--);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -