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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? iis.h

?? 利用IIS總線實現音頻播放的功能實驗代碼
?? H
字號:
#include "string.h"
#include "vxworks.h"
#include "s3c2410.h"
#include "2410lib.h"
#include "def.h"
#include "2410iis.h"
#include "s3c2410sio.h"

void ChangeDMA2(void);
void IIS_PortSetting(void);
void Test_Iis(void);
void Record_Iis(void);
void _WrL3Addr(U8 data);
void _WrL3Data(U8 data,int halt);
void DMA2_Done(void);
void DMA2_Rec_Done(void);
void RxInt(void);
void Muting(void);
void TR_Done(void);

#define L3C (1<<4)              
#define L3D (1<<3)              
#define L3M (1<<2)              

#define PLAY    0
#define RECORD  1
/*#define REC_LEN 0x50000 */       
#define REC_LEN 0x100000         

#define DataCount   0x10000     
#define DataDisplay 0x100       
/*#define DataDisplay 0x10000     
//#define DataCount   0x100 */      

#define PollMode    0          
#define DMA2Mode    1          

unsigned char  *Buf,*_temp;
unsigned short *rec_buf;

volatile unsigned int size = 0;
volatile unsigned int   fs = 0;
volatile char    which_Buf = 1;
volatile char     Rec_Done = 0;
volatile char         mute = 1;





/**************** [ Record_Iis ] ***************************************/
void Record_Iis(void)
{
    unsigned int save_B, save_E, save_PB, save_PE;

    Uart_TxEmpty(0);

    ChangeClockDivider(1,1);        
    ChangeMPllValue(0x96,0x5,0x1); 

    Uart_Init(33857142,115200);
    
    Uart_Printf("[ Record test using UDA1341 ]\n");
    
    save_B  = rGPBCON;       
    save_E  = rGPECON;       
    save_PB = rGPBUP;
    save_PE = rGPEUP;

    IIS_PortSetting();
     
    rec_buf = (unsigned short *)0x31000000;

    pISR_DMA2  = (unsigned)DMA2_Rec_Done;
    pISR_EINT0 = (unsigned)Muting;

    rINTMSK = ~(BIT_DMA2);

    Init1341(RECORD);

      
    rDISRCC2 = (1<<1) + (1<<0);                         
    rDISRC2  = ((U32)IISFIFO);                          
    rDIDSTC2 = (0<<1) + (0<<0);                         
    rDIDST2  = (int)rec_buf;                            
    rDCON2   = (1<<31)+(0<<30)+(1<<29)+(0<<28)+(0<<27)+(1<<24)+(1<<23)+(1<<22)+(1<<20)+REC_LEN;
      
    rDMASKTRIG2 = (0<<2) + (1<<1) + 0;   

      
    rIISMOD = (0<<8) + (1<<6) + (0<<5) + (0<<4) + (1<<3) + (0<<2) + (1<<0);
    rIISPSR = (2<<5) + 2; 
    rIISCON = (0<<5) + (1<<4) + (1<<3) + (0<<2) + (1<<1);
     
    rIISFCON = (1<<14) + (1<<12);     

    Uart_Printf("Press any key to start record!!!\n");
    Uart_Getch();
    Uart_Printf("Recording...\n");

     
    rIISCON |= 0x1;

    while(!Rec_Done);

    rINTMSK  = BIT_DMA2;
    Rec_Done = 0;

      
    Delay(10);                        
    rIISCON     = 0x0;                 
    rDMASKTRIG2 = (1<<2);               
    rIISFCON    = 0x0;                 
    
    Uart_Printf("End of Record!!!\n");
    Uart_Printf("Press any key to play recorded data\n");
    Uart_Printf("If you want to mute or no mute push the 'EIN0' key repeatedly\n");
    Uart_Getch();

    size = REC_LEN * 2;
    Uart_Printf("Size = %d\n",size);

    Init1341(PLAY);

    pISR_DMA2 = (unsigned)DMA2_Done;
    rINTMSK   = ~(BIT_DMA2 | BIT_EINT0);

      
    rDISRCC2 = (0<<1) + (0<<0);                        
    rDISRC2  = (int)rec_buf;                           
    rDIDSTC2 = (1<<1) + (1<<0);                         
    rDIDST2  = ((U32)IISFIFO);                         
    rDCON2   = (1<<31)+(0<<30)+(1<<29)+(0<<28)+(0<<27)+(0<<24)+(1<<23)+(0<<22)+(1<<20)+(size/2);
     
    rDMASKTRIG2 = (0<<2)+(1<<1)+0;    

      
    rIISMOD = (0<<8) + (2<<6) + (0<<5) + (0<<4) + (1<<3) + (0<<2) + (1<<0);      
/* rIISPSR = (4<<5) + 4;            //Prescaler_A/B=4 for 11.2896MHz*/
    rIISCON = (1<<5)+(0<<4)+(0<<3)+(1<<2)+(1<<1);
     
    rIISFCON = (1<<15) + (1<<13);      

    Uart_Printf("Press any key to exit!!!\n");

    rIISCON |= 0x1;                   
    while(!Uart_GetKey());

     
    Delay(10);               
    rIISCON     = 0x0;      
    rDMASKTRIG2 = (1<<2);    
    rIISFCON    = 0x0;       

    size = 0;

    rGPBCON = save_B;
    rGPECON = save_E;
    rGPBUP  = save_PB;
    rGPEUP  = save_PE;

    rINTMSK = (BIT_DMA2 | BIT_EINT0);
    
    ChangeMPllValue(0xa1,0x3,0x1);              
    Uart_Init(0,115200);
    mute = 1;
}


/******************[ Init1341 ]**************************************/
void Init1341(char mode)
{
    /*Port Initialize
//----------------------------------------------------------
//   PORT B GROUP
//Ports  :   GPB4    GPB3   GPB2  
//Signal :  L3CLOCK L3DATA L3MODE
//Setting:   OUTPUT OUTPUT OUTPUT 
//           [9:8]   [7:6}  [5:4]
//Binary :     01  ,   01    01 
//----------------------------------------------------------   */ 
   /* rGPBDAT = rGPBDAT & ~(L3M|L3C|L3D) |(L3M|L3C); 
    rGPBUP  = rGPBUP  & ~(0x7<<2) |(0x7<<2);         
    rGPBCON = rGPBCON & ~(0x3f<<4) |(0x15<<4);     

      
    _WrL3Addr(0x14 + 2);     
    _WrL3Data(0x60,0);      

    _WrL3Addr(0x14 + 2);     
    _WrL3Data(0x20,0);       
    
    _WrL3Addr(0x14 + 2);    
    _WrL3Data(0x81,0);    */
     rGPBCON = rGPBCON & ~((1<<9)|(1<<7)|(1<<5)) | (1<<8)|(1<<6)|(1<<4); 
	rGPBUP  = rGPBUP  |(0x7<<2);       
   rGPBDAT |= (L3M);											
	rGPBDAT |= (L3C);   
                                    	
    _WrL3Addr(0x14+2);				
   _WrL3Data(0x50,0); 				
    _WrL3Addr(0x14+2); 			
    _WrL3Data(0x10,0); 			
                                   	

    _WrL3Addr(0x14+2); 				
    _WrL3Data(0x81,0);				
  /*  _WrL3Addr(0x14+0); 			
   _WrL3Data(0x0A,0);  */         	   
                            
    
     
    if(mode)
    {
        _WrL3Addr(0x14 + 2);    
/*        _WrL3Data(0xa2,0);      //1,0,1,0, 0,0,10 
                                //Status 1,Gain of DAC 0 dB,Gain of ADC 6dB,ADC non-inverting,DAC non-inverting
                                //,Single speed playback,ADC-On DAC-Off  */     
                                
        _WrL3Data(0xe3,0);      /*1,1,1,0, 0,0,11 
                                //Status 1,Gain of DAC 6 dB,Gain of ADC 6dB,ADC non-inverting,DAC non-inverting
                                //,Single speed playback,ADC-On DAC-On                                   

//        _WrL3Addr(0x14 + 0);    //DATA0 (000101xx+00)
//        _WrL3Data(0x3f,0);      //00,11 1111  : Volume control (6 bits)  
//        _WrL3Data(0x00,0);      //00,00 0000  : Volume control (6 bits) 0dB  */  

        _WrL3Addr(0x14 + 0);    
        _WrL3Data(0x7b,0);                

   
        _WrL3Data(0xc4,0);      
        _WrL3Data(0x91,0);                                    


        _WrL3Data(0xc2,0);     
/*       _WrL3Data(0x4d,0);      //010,0 11,01 : DATA0, MIC Amplifier Gain 9dB, input channel 1 select(input channel 2 off) */
        _WrL3Data(0x59,0);      
    }

}

void ChangeDMA2(void)
{
    if(which_Buf)
    {
        rDISRCC2 = (0<<1) + (0<<0);                         
        rDISRC2  = (int)(Buf + 0x30);                       
    }
    else
    {
        rDISRCC2 = (0<<1) + (0<<0);                         
        rDISRC2  = (int)(Buf + 0x30+(size/2));              
    }
}


void IIS_PortSetting(void)
{
 
    rGPBUP  = rGPBUP  & ~(0x7<<2) | (0x7<<2);   
    rGPBCON = rGPBCON & ~(0x3f<<4) | (0x15<<4); 


    rGPEUP  = rGPEUP  & ~(0x1f)  | 0x1f;    
    rGPECON = rGPECON & ~(0x3ff) | 0x2aa;   

    rGPFUP   = ((rGPFUP   & ~(1<<0)) | (1<<0));     
    rGPFCON  = ((rGPFCON  & ~(3<<0)) | (1<<1));       
    
    rEXTINT0 = ((rEXTINT0 & ~(7<<0)) | (2<<0));      
}


void _WrL3Addr(U8 data)
{       
    S32 i,j;

    rGPBDAT  = rGPBDAT & ~(L3D | L3M | L3C) | L3C;

    for(j=0;j<4;j++);                   

    for(i=0;i<8;i++)                    
    {
        if(data & 0x1)                 
        {
            rGPBDAT &= ~L3C;            
            rGPBDAT |= L3D;                         
            for(j=0;j<4;j++);          
            rGPBDAT |= L3C;             
            rGPBDAT |= L3D;             
            for(j=0;j<4;j++);           
        }
        else                           
        {
            rGPBDAT &= ~L3C;            
            rGPBDAT &= ~L3D;            
            for(j=0;j<4;j++);           
            rGPBDAT |= L3C;            
            rGPBDAT &= ~L3D;            
            for(j=0;j<4;j++);                      
        }
        data >>= 1;
    }
    rGPBDAT  = rGPBDAT & ~(L3D | L3M | L3C) | (L3C | L3M);  
}


void _WrL3Data(U8 data,int halt)
{
    S32 i,j;

    if(halt)
    {
        rGPBDAT  = rGPBDAT & ~(L3D | L3M | L3C) | L3C;        
        for(j=0;j<4;j++);                               
    }

    rGPBDAT  = rGPBDAT & ~(L3D | L3M | L3C) | (L3C | L3M);           
    for(j=0;j<4;j++);                                        

     
    for(i=0;i<8;i++)
    {
        if(data & 0x1)                  
        {
           rGPBDAT &= ~L3C;              
           rGPBDAT |= L3D;               
           for(j=0;j<4;j++);           
           rGPBDAT |= (L3C | L3D);      
           for(j=0;j<4;j++);             
        }
        else                            
        {
           rGPBDAT &= ~L3C;              
           rGPBDAT &= ~L3D;              
           for(j=0;j<4;j++);             
           rGPBDAT |= L3C;              
           rGPBDAT &= ~L3D;             
           for(j=0;j<4;j++);             
        }
        data >>= 1;                     
    }
    rGPBDAT  = rGPBDAT & ~(L3D | L3M | L3C) | (L3C | L3M); 
}


void DMA2_Done(void)
{
    ClearPending(BIT_DMA2);

    WrUTXH0('@');
    if(!which_Buf)
        which_Buf = 1;
    else
        which_Buf = 0;
}

void DMA2_Rec_Done(void)
{
    ClearPending(BIT_DMA2);     
    Rec_Done = 1;
}


void RxInt(void)
{
    rSUBSRCPND = BIT_SUB_RXD0;
    rSUBSRCPND;
    ClearPending(BIT_UART0);

    *_temp ++= RdURXH0(); 
}


void Muting(void)
{
    ClearPending(BIT_EINT0);        

    if(mute)   
    {
        _WrL3Addr(0x14 + 0);        
        _WrL3Data(0xa4,0);    
        mute = 0;
        Uart_Printf("= Mute =\n");
    }
    else       
    {
        _WrL3Addr(0x14 + 0);            
        _WrL3Data(0xa0,0);             
        mute = 1;
        Uart_Printf("= No Mute =\n");
    }
}


volatile int Tx_Done;
volatile int Rx_Done;

void TR_Done(void)
{
    ClearPending(BIT_DMA2);     

    Rx_Done = 1;
    Tx_Done = 1;
/*   WrUTXH0('.');*/
}

void Iis_Tx(void)
{
    unsigned int i, j;
    unsigned short *txdata;

    Tx_Done = 0;
    Uart_TxEmpty(0);

    Uart_Printf("[ IIS Slave Tx test ]\n");

    IIS_PortSetting();

      
    txdata = (unsigned short *)0x31000000;
    
    for(i=0;i<DataCount;i++)
        *(txdata+i) = i;    

      
    rIISMOD  = (1<<8) + (2<<6) + (0<<5) + (1<<4) + (1<<3) + (0<<2) + (1<<0);
    rIISPSR  = (2<<5) + 2;              
    rIISFCON = (0<<15) + (1<<13);         
     
    rIISCON  = (0<<5) + (0<<4) + (0<<3) + (1<<2) + (1<<1) + (0<<0);            
   
      
    rIISCON |=0x1;
    
    for(i=0;i<DataCount;i++)
    {
        while( (rIISCON & 0x080) == 0x80 );    
        *IISFIFO = *(txdata+i);                      
    }

    
    Delay(10);
    rIISCON     = 0x0;         
    rDMASKTRIG2 = (1<<2);       
    rIISFCON    = 0x0;         

    Uart_Printf("\nTx End...\n");

    Uart_Printf("Last 256 Half-Word in 65KBytes transferred data\n");
    
    for(i=0;i<DataDisplay;i++)
    {
        Uart_Printf("0x%x=",(txdata+0xff00+i));
        Uart_Printf("%04x   ",*(txdata+0xff00+i));        
    }
}
  

void Iis_Rx(void)
{
    unsigned int i, j, k, count;
    unsigned short *rxdata;

    Rx_Done = 0;
    Uart_TxEmpty(0);

#if PollMode
    Uart_Printf("[ IIS Master Rx Polling mode test ]\n");
#endif

#if DMA2Mode
    Uart_Printf("[ IIS Master Rx DMA2 mode test ]\n");
#endif
   

    IIS_PortSetting();

    pISR_DMA2= (unsigned)TR_Done;
    rINTMSK  = ~(BIT_DMA2);

     
    rxdata=(unsigned short *)0x31000000;
    
    for(i=0;i<DataCount;i++)
        *(rxdata+i)=0x0;
        
#if DMA2Mode
     
    rDISRCC2 = (1<<1) + (1<<0);    
    rDISRC2  = ((U32)IISFIFO);     
    rDIDSTC2 = (0<<1) + (0<<0);     
    rDIDST2  = (int)rxdata;        
    rDCON2   = (1<<31)+(0<<30)+(1<<29)+(0<<28)+(0<<27)+(1<<24)+(1<<23)+(1<<22)+(1<<20)+(DataCount);
      
    rDMASKTRIG2 = (0<<2)+(1<<1)+0;  
 
      
    rIISMOD  = (0<<8) + (1<<6) + (0<<5) + (1<<4) + (1<<3) + (0<<2) + (1<<0);
    rIISPSR  = (2<<5) + 2;            
    rIISFCON = (1<<14) + (1<<12);
    rIISCON  = (0<<5) + (1<<4) + (1<<3) + (0<<2) + (1<<1) + (0<<0);    
#endif

      

#if PollMode
      
    rIISMOD  = (0<<8) + (1<<6) + (0<<5) + (1<<4) + (1<<3) + (0<<2) + (1<<0);
    rIISPSR  = (2<<5) + 2;            
    rIISFCON = (0<<14) + (1<<12);     
    rIISCON  = (0<<5) + (0<<4) + (1<<3) + (0<<2) + (1<<1) + (0<<0);    
#endif

      
    rIISCON |= 0x1;

#if PollMode       
    count = DataCount;                 
    while(0<count) 
    {
        j = rIISFCON & 0x1f;            
        if(j == 0)
        {
            while(!j)
                j = rIISFCON & 0x1f;    
         }
        
        for(i=0;i<j;i++)
        {
            count--;
            *rxdata++ = *IISFIFO;                   
        }
    }
#endif    

#if DMA2Mode  
    while(!Rx_Done);
#endif
    
     
    Delay(10);
    rIISCON     = 0x0;          
    rDMASKTRIG2 = (1<<2);       
    rIISFCON    = 0x0;          

    Uart_Printf("Last 256 Half-Word in 65KBytes received data\n");

    rxdata=(unsigned short *)0x31000000;  
    
    for(i=0;i<DataDisplay;i++)
    {
        Uart_Printf("0x%x=", (rxdata+0xff00+i));        
        Uart_Printf("%04x   ",*(rxdata+0xff00+i));                
    }
    rINTMSK = (BIT_DMA2);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品久久久精品美女| 青青青伊人色综合久久| 91成人在线免费观看| 美女一区二区视频| 麻豆精品一区二区综合av| 国产精品国模大尺度视频| 欧美日韩不卡一区二区| 国产二区国产一区在线观看| 亚洲一区二区三区四区五区中文| 26uuu久久综合| 日韩欧美亚洲国产另类| 白白色亚洲国产精品| 午夜精品久久久久久久蜜桃app| 久久这里只有精品6| 欧美日韩一区在线| 99视频一区二区| 韩国三级在线一区| 日韩精品一二三| 一区二区三区在线观看视频| 中文字幕av一区二区三区高| 日韩欧美色综合| 欧美日韩国产免费一区二区 | 中文在线一区二区 | 国产精品久久毛片av大全日韩| 欧美一级日韩不卡播放免费| 成人午夜视频在线| 极品少妇xxxx精品少妇偷拍| 亚洲国产视频在线| 一区二区三区欧美日| 国产精品久久久久aaaa樱花 | 日韩欧美亚洲国产另类| 亚洲品质自拍视频| 久久精品视频一区二区三区| 精品日韩成人av| 日韩免费在线观看| 日韩一区二区三区精品视频| 555www色欧美视频| 在线看日本不卡| 91久久精品一区二区| 91视频免费看| 色综合久久久久综合体| www.爱久久.com| 99久久99精品久久久久久| www.欧美.com| 色一区在线观看| 色综合一个色综合亚洲| 欧美最猛性xxxxx直播| 色哦色哦哦色天天综合| 欧美怡红院视频| 欧美少妇性性性| 欧美精品在线一区二区| 91精品国产免费| 日韩三级伦理片妻子的秘密按摩| 日韩精品一区二区三区在线观看| 日韩一级黄色片| 精品国产三级电影在线观看| 精品福利在线导航| 国产人伦精品一区二区| 国产精品久久久久久久蜜臀 | 久久女同互慰一区二区三区| 精品国产百合女同互慰| 国产亚洲精品久| 亚洲视频香蕉人妖| 成人国产精品免费观看视频| av亚洲精华国产精华| 欧美在线三级电影| 欧美一区二区三区公司| 国产婷婷一区二区| 亚洲精选免费视频| 午夜精品久久一牛影视| 国产永久精品大片wwwapp | 91在线云播放| 欧美女孩性生活视频| 欧美成人在线直播| 中文av一区特黄| 亚洲成人免费视| 捆绑紧缚一区二区三区视频| 国产.精品.日韩.另类.中文.在线.播放| 成人国产精品免费| 欧美老肥妇做.爰bbww| 精品国产伦理网| 自拍偷拍国产亚洲| 美脚の诱脚舐め脚责91 | 欧美久久久久久久久中文字幕| 欧美一级片免费看| 国产女人18毛片水真多成人如厕| 亚洲乱码中文字幕| 久久国内精品自在自线400部| 成人美女在线观看| 91精品视频网| 国产精品久久久一本精品| 丝袜国产日韩另类美女| 成人性生交大片免费看视频在线| 91福利国产成人精品照片| 精品入口麻豆88视频| 亚洲乱码国产乱码精品精小说| 三级欧美韩日大片在线看| 风流少妇一区二区| 欧美久久久久久久久中文字幕| 中文字幕高清一区| 精东粉嫩av免费一区二区三区| 91黄色免费版| 国产欧美日韩卡一| 美腿丝袜在线亚洲一区| 在线观看区一区二| 日本一区二区高清| 3d动漫精品啪啪一区二区竹菊| 国产精品三级在线观看| 美女网站色91| 欧美日韩美女一区二区| 中文字幕一区在线观看视频| 麻豆精品一区二区三区| 欧美四级电影在线观看| 亚洲特黄一级片| 国产成人精品免费一区二区| 欧美一区二区视频在线观看2020| 亚洲欧洲精品一区二区三区不卡| 狠狠v欧美v日韩v亚洲ⅴ| 91精品国模一区二区三区| 亚洲欧美国产高清| 成人免费视频视频| 久久精品一区二区三区不卡牛牛| 蜜桃精品视频在线| 欧美一区二区免费| 天天综合日日夜夜精品| 91黄色免费看| 亚洲一区成人在线| 色噜噜狠狠色综合欧洲selulu| 国产精品久99| 99re这里只有精品视频首页| 国产欧美视频一区二区| 国产乱淫av一区二区三区| 欧美成人精品1314www| 美女视频黄久久| 日韩欧美中文字幕一区| 男男gaygay亚洲| 日韩一级免费观看| 久久精品噜噜噜成人88aⅴ| 欧美成va人片在线观看| 九色综合狠狠综合久久| 视频在线观看91| 91麻豆精品国产自产在线| 亚洲超碰97人人做人人爱| 欧美日韩一卡二卡三卡| 日韩主播视频在线| 日韩三级视频在线看| 精品一区二区三区免费视频| 精品国产伦理网| 国产成人在线观看| 中文字幕一区二区三区乱码在线| 99精品视频在线播放观看| 亚洲精品视频自拍| 欧美在线999| 免费在线成人网| 久久青草欧美一区二区三区| 懂色av噜噜一区二区三区av| 中国av一区二区三区| 91丨porny丨蝌蚪视频| 亚洲国产日韩一级| 欧美一区二区精美| 国产精品中文欧美| 成人欧美一区二区三区在线播放| 91国产视频在线观看| 日本午夜精品一区二区三区电影| 91精品国产91久久久久久最新毛片| 麻豆精品一区二区三区| 中文字幕乱码亚洲精品一区 | 国内精品伊人久久久久av影院| 久久美女高清视频| 99久久婷婷国产| 日韩福利视频导航| 国产网红主播福利一区二区| 色欧美日韩亚洲| 久久综合综合久久综合| 最新久久zyz资源站| 欧美日本视频在线| 国产精品一级在线| 亚洲精品视频在线| 日韩精品在线看片z| 成人av影视在线观看| 91性感美女视频| 天天av天天翘天天综合网| ww久久中文字幕| 欧美亚洲综合在线| 国产美女av一区二区三区| 亚洲资源中文字幕| 久久久美女毛片| 欧美色图12p| 高潮精品一区videoshd| 午夜久久久久久久久| 国产精品天美传媒| 7777精品伊人久久久大香线蕉完整版 | 色婷婷狠狠综合| 国产精品一区二区三区网站| 一区二区高清免费观看影视大全 | 国产目拍亚洲精品99久久精品| 欧美亚洲一区三区| 国产成人小视频| 日本sm残虐另类| 亚洲美女淫视频|