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

📄 adc.c

📁 这是EP7312开发板的一些测试与开发的源代码
💻 C
字号:


#include "adc.h"
void tdelay(short int);
void sendbit(unsigned char);
void sendadd(unsigned char);
void senddat(unsigned char);
void initaudio(void);
void readdai();
void writedai();
unsigned short rvoicebuf[1000000];
unsigned short lvoicebuf[1000000];


unsigned char adc(void)
{
  unsigned short sta;
  unsigned int i;
  unsigned short rvoice;
  unsigned short lvoice;

  PORTDDIR=PORTDDIR&0xc7;
  PORTDDAT=PORTDDAT|0x10;
  SYSCON1|=0x30;
 /* for(i=0;i<100000;i++)
  {
    rvoicebuf[i]=i;
    lvoicebuf[i]=i;
  }
 */ 
 
  sendadd(0x16);
  tdelay(1);
  senddat(0x40);           //reset dai
  tdelay(1);

  sendadd(0x16);
  tdelay(1);
  senddat(0x29);         
  tdelay(1);

  sendadd(0x16);
  tdelay(1);
  senddat(0xc3);
  tdelay(1);

  sendadd(0x14);
  tdelay(1);
  senddat(0x00);
  tdelay(1);
  
  sendadd(0x14);
  tdelay(1);
  senddat(0x40);
  tdelay(1);
 
  sendadd(0x14);
  tdelay(1);
  senddat(0x80);  
  tdelay(1);
  
  sendadd(0x14);
  tdelay(1);
  senddat(0xc2);  
  tdelay(1);
  
  sendadd(0x14);
  tdelay(1);
  senddat(0xe5); //Channel select and gain set
                  //0xe6 mic input
                  //0xe5 line input
  tdelay(1);

  sendadd(0x14);
  tdelay(1);
  senddat(0xc4);  
  tdelay(1);

  sendadd(0x14); //set AGC control gain
  tdelay(1);
  senddat(0xf0);  
  tdelay(1);

  
  sendadd(0x14);
  tdelay(1);
  senddat(0xc6);  
  tdelay(1);

  sendadd(0x14);
  tdelay(1);
  senddat(0xe0);  
  tdelay(1);

 
/*
  sendadd(0x14); //no AGC gain add
  tdelay(1);
  senddat(0xc5);  
  tdelay(1);
  
  sendadd(0x14); //no AGC gain data
  tdelay(1);
  senddat(0xff);  
  tdelay(1);

*/

  

  initaudio();
 while(1)
  {
   readdai();
   writedai();
   }
 
/*
 while(1)
  {
    rvoice=0x00;
    lvoice=0x00;
    for(;;)
    {
      sta=DAISTU;
      sta&=0x01;
      if(sta)
      { 
        DAIRDR=rvoice;
        rvoice+=0x10;
       }
      sta=DAISTU;
      sta&=0x04;
      if(sta)
      { 
        DAILDR=lvoice;
        lvoice+=0x10;
       }
     }
  }*/ 
  return 0;
 
}


void initaudio()
{
  SYSCON3|=0x0e;  
  SYSCON3&=0xffffdff;  
  DAI64FSCR=0x90b;
  DAICR=0x7f0404;
  DAISTU=0xffffffff;
  DAIDR2=0x118000;
  while(!(DAISTU&0x1000))
  {}
  DAIDR2=0xd8000; 
  while(!(DAISTU&0x1000))
  {}
}


void sendbit(unsigned char i)
{ 
  unsigned char j;
  j=i&0x01;
  j=j<<3;
  PORTDDAT=PORTDDAT&L3CLKL;
  //tdelay(1);
  PORTDDAT=PORTDDAT&0xf7;
  PORTDDAT=PORTDDAT|j;
  //tdelay(1);
  PORTDDAT=PORTDDAT|L3CLKH;
  //tdelay(1);
}  

void sendadd(unsigned char i)
{
  unsigned char j,k;
  j=i;
  PORTDDAT=PORTDDAT&L3MODL;
  tdelay(1);
  for(k=0;k<8;k++)
    {
       sendbit(j);
       j=j>>1;
     }
  PORTDDAT=PORTDDAT|L3MODH;
  tdelay(1);     
}

void senddat(unsigned char i)
{
  unsigned char j,k;
  j=i;
  PORTDDAT=PORTDDAT&L3MODL;
  //tdelay(1);
  PORTDDAT=PORTDDAT|L3MODH;
  //tdelay(1);
  for(k=0;k<8;k++)
     {
        sendbit(j);
        j=j>>1;
      }
  PORTDDAT=PORTDDAT&L3MODL;
  //tdelay(1);
  PORTDDAT=PORTDDAT|L3MODH;
  //tdelay(1);
}


/*
unsigned char readdat()
{
  unsigned char i,j,k;
  PORTDDAT=PORTDDAT&0xcf;
  delay();
  PORTDDAT=PORTDDAT|0x20;
  delay();
  for(k=0;k<8;k++)
    {}
}*/



void tdelay(short int j)
{
  unsigned short int i;
  TC1EOI=0xffff;
  TC1D=j;
  while(1)
   {
     i=INTSR1&0x100;
     if(i)
     break;
    }
  
}

void readdai()
{
  unsigned int i=0,j=0;
  unsigned int sta;
  unsigned short rread,lread;
  while(1)
  {
    sta=DAISTU;
    sta&=0x02;
    if(sta)
      {
        rread=DAIRDR;
        rvoicebuf[i]=rread;
        i++;
       }
    sta=DAISTU;
    sta&=0x08;
    if(sta)
      {
        lread=DAILDR;
        lvoicebuf[j]=lread;
        j++;
       }
    if((i==1000000)||(j==1000000))
    break;
  }   

}

void writedai()
{
  unsigned int i=0,j=0;
  unsigned int sta;
  while(1)
  {
    sta=DAISTU;
    sta&=0x01;
    if(sta)
    {
      DAIRDR=rvoicebuf[i];
      i++;
    }
    sta=DAISTU;
    sta&=0x04;
    if(sta)
    {
      DAILDR=lvoicebuf[j];
      j++;
    }
    if((i==1000000)||(j==1000000))
    break;
  }

}

⌨️ 快捷键说明

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