⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aic23.c

📁 44b0开发板试验代码ucos实验MP3.rar
💻 C
字号:
/***********************************************
copyright by Haia Tech
www.haia2004.com
************************************************/

#include "..\inc\board.h"
                                                                                                                                                       
#define   L_LINE_VOLUME        0x00
#define   R_LINE_VOLUME        0x01
#define   L_HEADPHONE_VOLUME   0x02
#define   R_HEADPHONE_VOLUME   0x03
#define   A_AUDIO_PATH         0x04
#define   D_AUDIO_PATH         0x05
#define   POWER_CON            0x06
#define   D_AUDIO_INTERFACE    0x07
#define   SAMPLE_RATE          0x08
#define   D_INTERFACE_ACT      0x09
#define   RESET                0x0f


void write_AIC23(unsigned char addr,unsigned int dat);


void init_AIC23()
{ 
   int volume;
   write_AIC23(RESET,0);
   write_AIC23(D_INTERFACE_ACT,0x001);
   write_AIC23(POWER_CON,0);
   write_AIC23(SAMPLE_RATE,0x022);  //44.1k
//   write_AIC23(SAMPLE_RATE,0x062);  //22.05k
//   write_AIC23(SAMPLE_RATE,0x02e);    //8.021k
    
   write_AIC23(L_LINE_VOLUME,0x0117);
   write_AIC23(L_LINE_VOLUME,0x0117);
   
   volume=100;
   write_AIC23(L_HEADPHONE_VOLUME,0x0180+volume);   
   write_AIC23(R_HEADPHONE_VOLUME,0x0180+volume);   
   
//   write_AIC23(A_AUDIO_PATH,0x009);  //bypass DAC OFF
//   write_AIC23(A_AUDIO_PATH,0x014);   //MIC ADC DAC ON  0DB
//     write_AIC23(A_AUDIO_PATH,0x1fc);   //bypass MIC ADC DAC ON 0DB sidetone 
     write_AIC23(A_AUDIO_PATH,0x07d);   //bypass MIC ADC DAC ON 20DB sidetone(-6db)
//   write_AIC23(A_AUDIO_PATH,0x011);   //LINE ADC DAC ON
   
   write_AIC23(D_AUDIO_PATH,0x04);
   
//   write_AIC23(D_AUDIO_INTERFACE,0x041);   //MASTER LEFT_ALINGED
   write_AIC23(D_AUDIO_INTERFACE,0x001);     //SLAVE LEFT_ALINGED
}


void write_AIC23(unsigned char addr,unsigned int dat)
{
    unsigned char i;
    unsigned int portf;
    dat|=addr<<9;
    portf=0xf7;       //CS=0
    outl(portf,rPDATF);
    for(i=0;i<16;i++)
    {
      //SCLK=0;
      portf&=0xfe;
      outl(portf,rPDATF);
      if((dat<<i)&0x8000)
      {
        //SDIN=1;
        portf|=0x02; 
        outl(portf,rPDATF);
      }
      else 
      {
        //SDIN=0;
        portf&=0xfd;
        outl(portf,rPDATF);
      }
      //SCLK=1;
      portf|=0x01;
      outl(portf,rPDATF);
      delay(100);
    }
    //SCLK=0;
    portf&=0xfe;
    outl(portf,rPDATF);
    //CS=1;
    portf|=0xff;
    outl(portf,rPDATF);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -