亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? audio_aic23.c

?? 在開發(fā)FPGA上比較有用
?? C
字號:
/**************************************************************
程序說明      :AIC23數(shù)字音頻處理控制系統(tǒng)實(shí)驗(yàn)

說    明      :
            FreeDev 數(shù)字應(yīng)用開發(fā)板采用了TI公司的TVL320AIC23
            1、控制接口使用I2C,Quartus中將CS置低(器件地址0011010)。
            2、數(shù)字音頻接口使用了組件FreeDev_aic23,可實(shí)現(xiàn)輪訓(xùn)方式讀寫,
               中斷方式讀寫,錄音、和放音
            3、I2C IP 和 FreeDev_aic23 IP分別在Quartus 工程目錄中
**************************************************************/
#include <stdio.h>
#include <system.h>
#include <io.h>
#include <alt_types.h>
#include <sys/alt_irq.h>
#include <sys/alt_dma.h>
#include "fast_dma.h"
#include <altera_avalon_dma_regs.h>
#define  AUDIO_BUFF_SIZE 0x80000

extern void *dma_base;
extern int gControl_bits;

unsigned int infifo_count;

/*********************************************
函數(shù)名:audio_irq
功  能:音頻中斷處理函數(shù)
輸  入:context:相關(guān)內(nèi)容指針,中斷號
返  回: 
備  注:
      讀取音頻外設(shè)數(shù)據(jù),并回放寫入到音頻外設(shè)中
**********************************************/

void audio_irq(void *context,alt_u32 interrupt)
{
  unsigned int fifo_status;
  unsigned int len;
  
  fifo_status=IORD(FREEDEV_AIC23_0_BASE,0x03);
  infifo_count=IORD(FREEDEV_AIC23_0_BASE,0x04);

  if(fifo_status & 0x04)
    len=512;
  else 
    len=infifo_count;
    
  // 啟動DMA傳輸
  IOWR_ALTERA_AVALON_DMA_LENGTH(dma_base,len);
  IOWR_ALTERA_AVALON_DMA_CONTROL(dma_base, gControl_bits|ALTERA_AVALON_DMA_CONTROL_GO_MSK); 
  
}


int main()
{
  FILE * hostfile ;
  int iRet;
  unsigned char ch;
  unsigned int v1,v2,v3,v4,i;
  static int irq_flag=0;
  unsigned int *audioBuff=(unsigned int *)(SDRAM_BASE+0x200000);
 
  // 初始化DMA參數(shù)
  iRet=fast_dma_init(
    DMA_BASE,
    4,
    __IO_CALC_ADDRESS_NATIVE(FREEDEV_AIC23_0_BASE, 0x07),
    __IO_CALC_ADDRESS_NATIVE(FREEDEV_AIC23_0_BASE, 0x07),
    512,
    ALTERA_AVALON_DMA_CONTROL_RCON_MSK|ALTERA_AVALON_DMA_CONTROL_WCON_MSK);
  
   //初始化I2C控制器
  init_i2c(FREEDEV_I2C_0_BASE);
  
  // 屏蔽音頻中斷
  IOWR(FREEDEV_AIC23_0_BASE,0x02,0x03);
  
  /* 注冊音頻中斷處理函數(shù) */ 
  if (alt_irq_register( FREEDEV_AIC23_0_IRQ, NULL,audio_irq))
  {
    printf("alt_irq_register audio_irq  error\n");
    return -1;
  }
  
  // 提示菜單
menu:
  MenuHeader();
  ch=ShowSelect( "進(jìn)入測試系統(tǒng)? Y OR N",'y','n' );
  if(ch=='n')
    exit(0);
  
  //復(fù)位音頻處理芯片
  aic23_reset();
  
  ch=ShowSelect( "需要測試模擬環(huán)路音頻處理嗎?y OR n",'y','n' );
  if(ch=='y'){
    // 屏蔽輸入中斷
      IOWR(FREEDEV_AIC23_0_BASE,0x02,0x03);
      
    //模擬環(huán)路測試參數(shù)設(shè)置,如需要測試模擬環(huán)路,打開下列函數(shù)注解
    //模擬環(huán)路說明:模擬信號由LINE IN接入,經(jīng)TLV320AIC23內(nèi)部
    //模擬開關(guān)短接到LINE OUT和PHONE OUT輸出
    aic23_analog_bypass_test();
    goto  menu;
  }else{
      // 屏蔽輸入中斷
      IOWR(FREEDEV_AIC23_0_BASE,0x02,0x03);
      
    //TLV320AIC23常規(guī)工作參數(shù)設(shè)置
    aic23_normal_setup();
  
    //FreeDev_aic模塊工作模式切換實(shí)驗(yàn)
    ch=ShowSelect( "需要測試NIOS II系統(tǒng)軟件輪訓(xùn)方式實(shí)時采集和回放處理嗎?y OR n",'y','n' );
    if(ch=='y'){
      //FreeDev_aic接口模塊控制切換到DMA模式
      //DMA模式說明:FreeDev_aic模塊通過TLV320AIC23的串行數(shù)字接口接收數(shù)據(jù),變換成32BIT左右
      //聲道數(shù)據(jù),經(jīng)異步FIFO送到Avalone接口端,供Nios II DMA方式讀取數(shù)據(jù)。Nios II輸出數(shù)據(jù)經(jīng)
      //Avalone接口寫入FIFO傳輸?shù)讲⒋D(zhuǎn)換模塊,由TLV320AIC23串行數(shù)字接口輸出。
      IOWR(FREEDEV_AIC23_0_BASE,0x00,0x0201);
      
      //復(fù)位FreeDev_aic23外設(shè)FIFO
      IOWR(FREEDEV_AIC23_0_BASE,0x01,0x01);
      IOWR(FREEDEV_AIC23_0_BASE,0x01,0x00);
      
      // 啟動數(shù)據(jù)接收
      IOWR(FREEDEV_AIC23_0_BASE,0x01,0x02);
      
      //循環(huán)讀入并輸出音頻信號
      while(1){
        //讀音頻外設(shè)狀態(tài)
        v1=IORD(FREEDEV_AIC23_0_BASE,0x03);
        
        // 輸入FIFO不為空 或 輸入FIFO為滿
        if(!(v1 & 0x08) || (v1 & 0x04) )
        {
          v2=IORD(FREEDEV_AIC23_0_BASE,0x07);
          IOWR(FREEDEV_AIC23_0_BASE,0x07,v2);
        }
      }
    }
    
    ch=ShowSelect( "需要測試NIOS II系統(tǒng)中斷方式實(shí)時采集和回放處理嗎?y OR n",'y','n' );
    if(ch=='y'){
      //FreeDev_aic接口模塊控制切換到DMA模式
      //DMA模式說明:FreeDev_aic模塊通過TLV320AIC23的串行數(shù)字接口接收數(shù)據(jù),變換成32BIT左右
      //聲道數(shù)據(jù),經(jīng)異步FIFO送到Avalone接口端,供Nios II DMA方式讀取數(shù)據(jù)。Nios II輸出數(shù)據(jù)經(jīng)
      //Avalone接口寫入FIFO傳輸?shù)讲⒋D(zhuǎn)換模塊,由TLV320AIC23串行數(shù)字接口輸出。
      IOWR(FREEDEV_AIC23_0_BASE,0x00,0x0201);
      
      //復(fù)位FreeDev_aic23外設(shè)
      IOWR(FREEDEV_AIC23_0_BASE,0x01,0x01);
      IOWR(FREEDEV_AIC23_0_BASE,0x01,0x00);
      
      // 開放輸入中斷
      IOWR(FREEDEV_AIC23_0_BASE,0x02,0x02);
      
      // 啟動數(shù)據(jù)接收
      IOWR(FREEDEV_AIC23_0_BASE,0x01,0x02);

    }
    
    ch=ShowSelect( "需要測試NIOS II系統(tǒng)錄音和回放處理嗎?y OR n",'y','n' );
    if(ch=='y'){
      IOWR(FREEDEV_AIC23_0_BASE,0x00,0x0201);
      
      // 屏蔽輸入中斷
      IOWR(FREEDEV_AIC23_0_BASE,0x02,0x03);
      
      //復(fù)位FreeDev_aic23外設(shè)
      IOWR(FREEDEV_AIC23_0_BASE,0x01,0x01);
      IOWR(FREEDEV_AIC23_0_BASE,0x01,0x00);
      
      // 啟動數(shù)據(jù)接收
      IOWR(FREEDEV_AIC23_0_BASE,0x01,0x02);
      
      for(i=0;i<AUDIO_BUFF_SIZE;)
      {
        //讀音頻外設(shè)狀態(tài)
        v1=IORD(FREEDEV_AIC23_0_BASE,0x03);
        
        // 輸入FIFO不為空 或 輸入FIFO為滿
        if(!(v1 & 0x08) || (v1 & 0x04) )
        {
          audioBuff[i]=IORD(FREEDEV_AIC23_0_BASE,0x07);
          IOWR(FREEDEV_AIC23_0_BASE,0x07,audioBuff[i]);
          i++;
        } 
      }
      
      ch=ShowSelect( "播放剛才的錄音嗎?y OR n",'y','n' );
      if(ch=='y'){
        
        for(i=0;i<AUDIO_BUFF_SIZE;)
        {
          //讀音頻外設(shè)狀態(tài)
          v1=IORD(FREEDEV_AIC23_0_BASE,0x03);
          
          // 輸出FIFO不為滿
          if(!(v1 & 0x01))
          {
            IOWR(FREEDEV_AIC23_0_BASE,0x07,audioBuff[i]);
            i++;
          }
        }  
      }
      
      ch=ShowSelect( "錄音數(shù)據(jù)保存到文件audio.dat?y OR n \n 存取HOSTFS需要較長時間,請耐心等待",'y','n' );
      if(ch=='y'){
        // 打開主機(jī)文件
        hostfile = fopen("/mnt/host/audio.dat", "w");
        
        // 寫音頻數(shù)據(jù)
        for(i=0;i<AUDIO_BUFF_SIZE;i++)
        {
          fwrite(audioBuff[i],4,1,hostfile); 
        }  
        
        // 關(guān)閉文件
        fclose(hostfile);
        
      }
    }
    
    ch=ShowSelect( "播放音頻文件audio.dat?y OR n \n存取HOSTFS需要較長時間,請耐心等待",'y','n' );
      if(ch=='y'){
        // 屏蔽輸入中斷
        IOWR(FREEDEV_AIC23_0_BASE,0x02,0x03);
      
        // 打開主機(jī)文件
        hostfile = fopen("/mnt/host/audio.dat", "r");
        
        // 讀音頻數(shù)據(jù)到內(nèi)存
        for(i=0;i<AUDIO_BUFF_SIZE;i++)
        {
          fread(audioBuff[i],4,1,hostfile); 
        }  
        
        // 關(guān)閉文件
        fclose(hostfile);
        
        //播放內(nèi)存音頻數(shù)據(jù)
        for(i=0;i<AUDIO_BUFF_SIZE;)
        {
          //讀音頻外設(shè)狀態(tài)
          v1=IORD(FREEDEV_AIC23_0_BASE,0x03);
          
          // 輸出FIFO不為滿
          if(!(v1 & 0x01))
          {
            IOWR(FREEDEV_AIC23_0_BASE,0x07,audioBuff[i]);
            i++;
          }
        }
      }
    goto  menu;
  }
  return 0; 
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
青青草97国产精品免费观看| 国产精品国产自产拍高清av| 丝瓜av网站精品一区二区| 在线精品国精品国产尤物884a| 亚洲日韩欧美一区二区在线| 色94色欧美sute亚洲线路一ni | 亚洲成a人v欧美综合天堂 | 亚洲视频在线一区观看| 91麻豆精品视频| 亚洲一区在线观看免费| 欧美精品乱码久久久久久| 美腿丝袜亚洲三区| 久久亚洲影视婷婷| 91无套直看片红桃| 日韩黄色免费网站| 国产日韩v精品一区二区| 97国产一区二区| 丝袜诱惑制服诱惑色一区在线观看| 日韩欧美一级二级三级| 福利一区福利二区| 亚洲综合在线第一页| 日韩女优视频免费观看| 成人ar影院免费观看视频| 香港成人在线视频| 久久久99精品免费观看| 欧洲一区在线电影| 激情综合色播激情啊| 亚洲色大成网站www久久九九| 91精品国产高清一区二区三区蜜臀 | 91福利区一区二区三区| 久久99久久久久久久久久久| 亚洲欧洲国产日韩| 欧美一区二区三区不卡| 99re视频精品| 乱一区二区av| 亚洲国产人成综合网站| 国产丝袜美腿一区二区三区| 欧美日韩极品在线观看一区| 国产东北露脸精品视频| 亚洲第一会所有码转帖| 国产精品三级视频| 日韩欧美视频一区| 在线观看国产91| 国产91精品在线观看| 免费在线观看视频一区| 亚洲精选在线视频| 国产欧美综合色| 欧美一卡二卡在线观看| 一本大道av伊人久久综合| 高清在线不卡av| 久久激情五月婷婷| 午夜精彩视频在线观看不卡| 亚洲手机成人高清视频| 欧美—级在线免费片| 精品欧美久久久| 制服丝袜成人动漫| 欧美日韩综合在线免费观看| 99在线精品免费| 丁香婷婷深情五月亚洲| 国模少妇一区二区三区| 老司机午夜精品| 天天av天天翘天天综合网色鬼国产| 亚洲视频免费看| 国产精品久久久久久久久免费樱桃 | 日韩欧美中文一区| 欧美福利电影网| 欧美日韩一区二区三区四区五区| av成人免费在线| 成人动漫在线一区| 波多野结衣的一区二区三区| 国产精品1区2区| 精品午夜一区二区三区在线观看| 免费的国产精品| 久久精品国产澳门| 美女脱光内衣内裤视频久久网站| 日韩精品一级二级| 秋霞午夜av一区二区三区| 日本免费新一区视频| 免费在线成人网| 激情文学综合插| 国产精品99久久久| 成人av在线一区二区| www.日韩精品| 91免费看片在线观看| 91丨九色丨国产丨porny| 色偷偷一区二区三区| 欧美网站一区二区| 911精品产国品一二三产区| 欧美一级国产精品| 久久人人爽人人爽| 国产精品国产三级国产三级人妇 | 色香色香欲天天天影视综合网 | 欧美性色黄大片| 欧美日韩激情在线| 日韩精品资源二区在线| 久久色视频免费观看| 国产精品免费久久久久| 亚洲欧美一区二区三区孕妇| 亚洲国产sm捆绑调教视频| 日本亚洲三级在线| 国产精品77777| 色播五月激情综合网| 日韩一区二区免费在线观看| 日本一区二区三区四区在线视频 | 久久婷婷国产综合精品青草| 欧美国产成人精品| 亚洲一区欧美一区| 久久99精品久久久久久久久久久久| 国产一区在线观看视频| 91麻豆精品一区二区三区| 欧美一区二区三区白人| 国产精品天天摸av网| 亚洲国产日韩在线一区模特| 激情综合色播激情啊| 91网站最新地址| 欧美成va人片在线观看| 亚洲欧洲韩国日本视频| 麻豆精品视频在线| 色综合久久中文字幕| 日韩欧美一级精品久久| 亚洲欧美日韩中文字幕一区二区三区| 视频在线观看国产精品| 99re6这里只有精品视频在线观看| 欧美日韩三级一区二区| 国产精品情趣视频| 美女一区二区三区在线观看| 91色九色蝌蚪| 久久久不卡网国产精品一区| 亚洲国产日韩一级| 99精品国产91久久久久久 | 国产乱妇无码大片在线观看| 在线国产电影不卡| 国产日韩v精品一区二区| 麻豆精品国产传媒mv男同| 91麻豆国产自产在线观看| 国产亚洲成aⅴ人片在线观看| 丝袜亚洲另类欧美| 91蜜桃传媒精品久久久一区二区| 精品久久久久久最新网址| 亚洲成av人片在线观看无码| 成人av网址在线观看| 久久五月婷婷丁香社区| 免费不卡在线观看| 欧美日韩国产一区二区三区地区| 亚洲色图欧洲色图婷婷| 成人黄色av网站在线| 久久精品一区二区三区不卡 | 色欧美日韩亚洲| 日本一区二区视频在线观看| 精品一区二区三区在线播放视频 | 91在线精品一区二区三区| www亚洲一区| 美女mm1313爽爽久久久蜜臀| 欧美日韩成人在线| 亚洲国产精品一区二区久久| 91在线观看视频| 中文字幕在线观看一区二区| 国产成人亚洲精品青草天美| 久久这里只有精品6| 久久精品国产亚洲高清剧情介绍| 777色狠狠一区二区三区| 亚洲成人免费观看| 欧美猛男超大videosgay| 亚洲高清久久久| 精品视频免费在线| 丝袜亚洲另类欧美| 欧美日韩精品一区二区天天拍小说| 洋洋av久久久久久久一区| 欧美午夜电影网| 亚洲国产视频一区二区| 51精品秘密在线观看| 日韩国产一区二| 日韩一区二区三区在线| 久久精品二区亚洲w码| 久久综合av免费| 处破女av一区二区| 国产精品欧美久久久久无广告| 成人亚洲一区二区一| 亚洲同性gay激情无套| 色爱区综合激月婷婷| 午夜精品福利在线| 精品91自产拍在线观看一区| 国产精品66部| 亚洲欧美激情在线| 欧美视频完全免费看| 日韩电影网1区2区| 亚洲一区中文日韩| 制服丝袜中文字幕一区| 国产精品高清亚洲| 欧美午夜精品久久久久久孕妇 | 国产乱妇无码大片在线观看| 国产精品午夜久久| 在线观看亚洲精品| 日韩成人一区二区三区在线观看| 精品国产电影一区二区| 97se亚洲国产综合自在线| 午夜视频在线观看一区| 久久久久青草大香线综合精品| av在线免费不卡| 日本亚洲电影天堂|