aic23.c

来自「F2812实现电机控制源程序.rar」· C语言 代码 · 共 80 行

C
80
字号
#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 + =
减小字号Ctrl + -
显示快捷键?