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

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

?? adc_pwm_amr_enc_dec_1.c

?? 基于TMS320F2812的AMR+RS編解碼+OFDM調(diào)制解調(diào)源程序。是stand alone運行版本
?? C
字號:
#include "DSP28_Device.h"
#include "RS.H"
#include "setting.h"
#include "new1.h"


interrupt void eva_cmp1_isr(void);
interrupt void evb_cmp4_isr(void);
interrupt void adc_isr(void);

extern int16 buffer3[];
extern int16 buffer4[];
extern int16 synth[];


//WordType FrameTx = TotalFrame;
//WordType FrameRx = TotalFrame;
//WordType RxFirstFrame = 1;
WordType AdcFrame = 4;
//WordType PwmFrame = 1;
   
Uint16 i, j = 0;
Uint16 ConversionCount = 1;
Uint16 EncFlag = 0;
Uint16 DecFlag = 0;
//Uint16 PwmFlag = 1;
//Uint16 PwmConv = 0;
Uint16 DemoduFlag = 0;
Uint16 PWMOFDMStart = 0;    
Uint16 PwmoutStart = 0;                              
Uint16 PwmCount = 0;                                   //音頻輸出計數(shù) 
Uint16 pwmtestCount = 0;
Uint16 EncNum = 0;
Uint16 ModuDataOutNum = 0;                             //調(diào)制數(shù)據(jù)輸出計數(shù)
Uint16 ADCInputVoiceNum = 0;                              //音頻輸入采樣計數(shù)
Uint16 ADCModuDataNum = 88;                             //調(diào)制數(shù)據(jù)采樣輸入計數(shù)
Uint16 	Voltage1[480];                                  //音頻輸入采樣
extern int    Voltage2[3200];                                 //調(diào)制后的數(shù)據(jù)發(fā)射
//extern int  Voltage3[2200];                                 //調(diào)制后的數(shù)據(jù)接收 
int 	Voltage4[320];                                  //音頻輸出
int    *pModuData = Voltage2;
//int    *pADCModuData = Voltage3;                       //指示待調(diào)制數(shù)據(jù)
int    ModuFrame;
//int    ModuPreFrame = 5;
//int    DemoduFrame;                                    //解調(diào)的幀數(shù) 
extern int demodushift;

Uint16 volt2flag;	//voltage2 buffer pointer
int16 OFDM_frame;

//extern int DataBuffer[];
Uint16 FrameSynFlag = 0; // OFDM demodulate frame synch starting flag
Uint16 FrameSyn;
Uint16 volt3flag;
int *DecoData = buffer4;
Uint16 OFDMSampleStart = 0;
Uint16 SampleDelay = 0;
Uint16 TestCnt = 0;
Uint16 Div2Flag = 1;
Uint16 BitConv = 1;

void main(void)
{
 
    DINT;
    InitSysCtrl();
    InitFlash();
       
   	EINT;
    EALLOW;
    SysCtrlRegs.HISPCP.all = 0x0000;	// HSPCLK = SYSCLKOUT = 150MHz
    EDIS;
    
    EALLOW;
    GpioMuxRegs.GPAMUX.all = 0x00FF;
    GpioMuxRegs.GPBMUX.all = 0x00FF; 
    EDIS;
   
   	DINT;
	IER = 0x0000;
	IFR = 0x0000;
	

	InitPieCtrl();
	
	InitPieVectTable();	

    InitAdc();
    
    AdcRegs.ADCTRL3.bit.ADCCLKPS = 0x0003;      //ADC clock =150/6=25M
    AdcRegs.ADCTRL1.bit.CPS = 0x0000;
   // AdcRegs.ADCTRL1.bit.ACQ_PS = 0x0009;      // SAM/HOLD = 400/10 = 40KHz  
    
    EALLOW;
	PieVectTable.ADCINT = &adc_isr;
	PieVectTable.CMP1INT  = &eva_cmp1_isr;
	PieVectTable.CMP4INT  = &evb_cmp4_isr;
	EDIS;
	
   // Configure ADC
    AdcRegs.ADCMAXCONV.all = 0x0001;       // Setup 2 conv's on SEQ1
    AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0000; // Setup ADCINA0 as 1st SEQ1 conv.
    AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x0008; // Setup ADCINB0 as 2nd SEQ1 conv.
    AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1 = 1;  // Enable EVASOC to start SEQ1
    AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1;  // Enable SEQ1 interrupt (every EOS)       

   // Configure EVA
	EvaRegs.EVAIMRA.all = 0x0002;
    EvaRegs.EVAIFRA.all = 0x0002;
    EvaRegs.ACTRA.all = 0x0666;
	EvaRegs.DBTCONA.all = 0x0000; // Disable Dead Band Unit
    EvaRegs.COMCONA.all = 0xA600;
    
   // Configure EVB
   EvbRegs.EVBIMRA.all = 0x0002;
   EvbRegs.EVBIFRA.all = 0x0002;
   EvbRegs.ACTRB.all = 0x0666;
   EvbRegs.DBTCONB.all = 0x0000; // Disable Dead Band Unit
   EvbRegs.COMCONB.all = 0xA600;  
   
    EvaRegs.GPTCONA.bit.T2TOADC = 2;       // Enable EVASOC in EVA
	EvaRegs.T2CNT = 0x0000;   
    EvaRegs.T2PR =0x249F;                  // SOC 采樣頻率= HSPCLK/9375 = 16K
    EvaRegs.T2CON.all = 0x1040;            // Enable timer 2 compare (upcount mode)   

	EvaRegs.T1PR = 0x249F;                 // PWM 輸出語音頻率= HSPCLK/9375=16KHz   
    EvaRegs.T1CNT = 0x0C35;   
    EvaRegs.CMPR1 = 0x0000;                // 調(diào)制后的數(shù)據(jù)發(fā)送   
    EvaRegs.T1CON.all = 0x1042;            // Enable timer 1 compare (upcount mode)       
   
    EvbRegs.T3PR = 0x249F;                 // PWM 輸出OFDM信號頻率= HSPCLK/9375=16KHz
    EvbRegs.T3CNT = 0x186A;   
    EvbRegs.CMPR4 = 0x0000;                // 解碼后的數(shù)據(jù)進行D/A
	EvbRegs.T3CON.all = 0x1042;      
   	
	PieCtrlRegs.PIEIFR1.all = 0;
	PieCtrlRegs.PIEIFR2.all = 0;
	PieCtrlRegs.PIEIFR4.all = 0;


	PieCtrlRegs.PIEIER1.bit.INTx6 = 1;//AD
	PieCtrlRegs.PIEIER2.bit.INTx1 = 1;//compare1 interrupt voice output
    PieCtrlRegs.PIEIER4.bit.INTx1 = 1;//compare4 interrupt OFDM signal output		
    	
	IER |= (M_INT1 | M_INT2 | M_INT4);

	EINT;
	ERTM;	
      
    asm(" nop");
    asm(" nop");
    asm(" nop");    
    asm(" nop");    
    asm(" setc 	 ovm,sxm");    
    asm(" spm	 1");    
    
    
    initiate(); //編碼初始化
    Speech_Decode_Frame_init();
    Init_RS();

	/*the variable used 
	for judging first OFDM frame in Transmit.c */     
  	OFDM_frame = 0;  
    volt2flag = 3200;  
    demodushift = 0;
    TestCnt = 0;
    
   
    
 //   for(i=0;i<88;i++)
//    	Voltage3[i] = 0x0FFF;
  	

	
	//初始化參數(shù)
	PWMOFDMStart = 0;
	EncFlag = 0;     
    EncNum = 0;
    ModuFrame = -1;
//    pModuData = Voltage2;
    
    /*Main function*/
    while (1)
    {
    	//語音編碼和調(diào)制
		if(EncFlag == 1)                    	//EncFlag為0表示接收數(shù)據(jù)不夠編碼,一直等待
		{
			EncFlag = 0; 			
		
			for(i=0; i<160; i++)
   			{
   				buffer3[i] = Voltage1[160*EncNum + i] - 0x8D60;
   			//	buffer3[i] -= 0x08D6;
   			}	
			if(++EncNum == 3)
		  		EncNum = 0;
			    
	  	 	codamr();                   //語音編碼
	  		for(i=0; i<103; i++,j++)
			{		
				buffer3[i] = AmrCode[j];					
				if(j == 5150)
				{
					j = 0;				
				}
			}	  	 	
	  	 	
	  	 	demodushift = 0;
	  	 	for(i=0;i<103;i++)
	  	 		buffer4[i] = buffer3[i];
	  	 		
	  	 	Speech_Decode_Frame();	
  			for(i=0; i<160; i++,pwmtestCount++)
     		{	
     		     		
     			Voltage4[pwmtestCount] = ((synth[i]>>4) + 0x0800) & 0x0FFF;
     		}
     		if(pwmtestCount == 320)
     			pwmtestCount = 0;
	
		/*	for(i=0; i<103; i++)
			{
				buffer3[i] = BitConv;
				BitConv = !BitConv;
			}*/
			
			//跟蹤voltage2的OFDM數(shù)據(jù)塊存儲位置
		/*	ModuFrame = RS_OFDM_Mod();			
			if ( PWMOFDMStart == 0 )
			{	
				volt2flag = 3200;			
				if(ModuFrame == 1)
					pModuData = Voltage2 + 1040;
			}
			else if( PWMOFDMStart == 1 )
			{ 
				if(ModuFrame == 1)
					pModuData = Voltage2 + 1040;
				else if(ModuFrame == 2 || ModuFrame == 3)
					pModuData += 720;
				else if(ModuFrame == 4)
					pModuData = Voltage2;
			}*/
		}

/*		//OFDM解調(diào)和語音解碼		
		if(FrameSynFlag == 1 )                    	
		{			
			if(DemoduFlag == 1)
				asm(" ESTOP0");
				
			//FrameSyn = FindFrame(Voltage3);
			volt3flag = 264 + 864;
			pADCModuData = Voltage3 + 264;
			FrameSynFlag = 0;
		}
		
		if(DemoduFlag == 1)								
		{
			if(FrameSynFlag == 1)
				asm(" ESTOP0");
			
			DecFlag = Receive(pADCModuData, DecoData);
			DemoduFlag = 0;
			demodushift = 0;
			
			if(AdcFrame == 1)
			{
    			//Receive(pADCModuData, DecoData);
				pADCModuData += 864;
				//DecFlag = 2;
    			//demodushift = 0;
	    	}
	    	else if(AdcFrame == 2)
	    	{
	    		//Receive(pADCModuData, DecoData);
	    		pADCModuData = Voltage3 + 88;
	    		//DecFlag = 3;
	    		//demodushift = 0;
	      	}
	    	else if(AdcFrame == 3)
	    	{
	    		//Receive(pADCModuData, DecoData);
	    		pADCModuData = Voltage3 + 88 + 720;
	    		//DecFlag = 2;
	    	//	demodushift = 0;					    		
	    	}
	    	else if(AdcFrame == 4)
	    	{
	    		//Receive(pADCModuData, DecoData);
	    		//DecFlag = 3;
	    	//	demodushift = 0;    		   		
	    	}	    	
  		 }
 
  		 while(DecFlag)
  		 {
  		 	Speech_Decode_Frame();	
  			for(i=0; i<160; i++,pwmtestCount++)
     		{	
     		
     		//	synth[i] = (synth[i]/8) + 0x0FFF;
     			Voltage4[pwmtestCount] = ((synth[i]>>4) + 0x0800) & 0x0FFF;
     			if(pwmtestCount+1 == PwmCount)
     				asm(" ESTOP0");					
       		}
       		DecFlag--;
       		demodushift += 103;
       		if(pwmtestCount == 1600)
       			pwmtestCount = 0;
       		
		 }*/
	}
}

interrupt void  adc_isr(void)//adc中斷以16k速率進入
{   	
	//輸入語音采樣8k
   	if(ConversionCount)                                 
   	{
   		Voltage1[ADCInputVoiceNum] = AdcRegs.ADCRESULT0;
   		ADCInputVoiceNum++;
   		TestCnt++;
   		if(TestCnt == 240) PwmoutStart = 1;
				//PWMOFDMStart = 1;
   		if(ADCInputVoiceNum == 160) 
		{
    		EncFlag = 1;
   		}	
    	else if(ADCInputVoiceNum == 320) 
		{
			//ADCInputVoiceNum = 0;
   		 	EncFlag = 1;
   		}
   		else if(ADCInputVoiceNum == 480)
   		{
   			ADCInputVoiceNum = 0;
   			EncFlag = 1;
   		}	
    }
    ConversionCount = !ConversionCount;
   
 /*  //調(diào)制數(shù)據(jù)輸入的采樣16k  	
    if(OFDMSampleStart)
    {
   		Voltage3[ADCModuDataNum] = AdcRegs.ADCRESULT1;              
   		Voltage3[ADCModuDataNum] = (Voltage3[ADCModuDataNum]>>4) & 0x0FFF;
   		Voltage3[ADCModuDataNum] -= 0x0920; 
   		
   		if(AdcFrame == 3 && ADCModuDataNum == 88+1352+j)
		{
			Voltage3[j] = Voltage3[j+1352+88];
			j++;
			if(j == 88) 
				j=0;				
		}			
		
   		ADCModuDataNum++;
   		if (ADCModuDataNum == 1608)
   			PwmoutStart = 1;//start outputing voice
   			
   		if(AdcFrame==4 && ADCModuDataNum == 480)
   		{
   			FrameSynFlag = 1;
   			AdcFrame = 0;  
   			
   		}
   		else if(AdcFrame==0 && ADCModuDataNum == volt3flag)
   		{
   			DemoduFlag = 1; 
   			AdcFrame++; //AdcFrame = 1
   			volt3flag += 720;
   		}
   		else if(AdcFrame==1 && ADCModuDataNum == volt3flag)
   		{
   			ADCModuDataNum = 88;
   			DemoduFlag = 1;
   			AdcFrame++;   //AdcFrame = 2
   			   			
   		}	
   		else if(AdcFrame==2 && ADCModuDataNum == 88+720)
   		{
  			DemoduFlag = 1; 
   			AdcFrame++;  //AdcFrame = 3	
   		}
		else if(AdcFrame==3 && ADCModuDataNum == 88+1440)
   		{
  			DemoduFlag = 1; 
   			AdcFrame++; //AdcFrame = 4   						
   			ADCModuDataNum = 88;	
   		}  	
   		
   	}*/
    // Reinitialize for next ADC sequence
    AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1;         // Reset SEQ1
    AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;		// Clear INT SEQ1 bit
    PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;   // Acknowledge interrupt to PIE

    return;
}


interrupt void eva_cmp1_isr(void)                  //音頻輸出
{
	if(PwmoutStart)
	{
		if( Div2Flag)
		{
			EvaRegs.CMPR1 = Voltage4[PwmCount];
			PwmCount++;
			if(PwmCount == 320)
  	   			PwmCount = 0;
  	   	//	if(PwmCount == pwmtestCount)
  	   		//	asm(" ESTOP0");
		}
		if(Div2Flag == 1) 
			Div2Flag = 0;		
		else if(Div2Flag == 0) 
			Div2Flag = 1;
		else
			asm(" ESTOP0");
	}	
	
	
	EvaRegs.EVAIMRA.all = 0x0002;
    EvaRegs.EVAIFRA.all = 0x0002;
	
	// Acknowledge interrupt to recieve more interrupts from PIE group 2
	PieCtrlRegs.PIEACK.all = PIEACK_GROUP2;
	return;

}


interrupt void evb_cmp4_isr(void)                //調(diào)制后數(shù)據(jù)輸出
{
/*	if(PWMOFDMStart)
	{
	
		Voltage2[ModuDataOutNum] = ((Voltage2[ModuDataOutNum]>>3)+0x1000) & 0x1FFF;
		EvbRegs.CMPR4 = Voltage2[ModuDataOutNum];
    	ModuDataOutNum++;
    	SampleDelay++;
    	if(SampleDelay == 9600)
    		OFDMSampleStart = 1; //OFDM sample start
    	if( ModuDataOutNum == 3200 )
    	{
    		ModuDataOutNum = 0;
   		}   	
   	}
   	
    EvbRegs.EVBIMRA.all = 0x0002;  
    EvbRegs.EVBIFRA.all = 0x0002;
	
	// Acknowledge interrupt to recieve more interrupts from PIE group 2
	PieCtrlRegs.PIEACK.all = PIEACK_GROUP4;   */
	
	return;
}



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三区视频| 色婷婷综合久久久中文一区二区| 91精品国产欧美一区二区成人| 香蕉av福利精品导航| 欧美伊人久久久久久久久影院| 亚洲一区二区三区四区的| 欧美性videosxxxxx| 青青国产91久久久久久| 欧美不卡在线视频| 国产精品91一区二区| 亚洲视频综合在线| 在线播放中文字幕一区| 久久99久久99精品免视看婷婷| 精品av综合导航| 成人性生交大片免费看中文| 一区二区三区在线免费播放| 在线电影一区二区三区| 久久99精品久久久| 中文字幕一区二区不卡| 欧美伊人精品成人久久综合97 | 精品国产乱码久久久久久免费| 国产在线国偷精品免费看| 国产精品美女视频| 欧美日韩亚洲综合在线| 精品夜夜嗨av一区二区三区| 中文字幕精品一区二区精品绿巨人 | 一区二区三区欧美亚洲| 91精品国产欧美一区二区成人| 成人综合在线视频| 日韩高清不卡一区二区三区| 欧美激情资源网| 在线看国产一区| 激情综合色播激情啊| 一区二区三区不卡在线观看 | 欧美精品日韩一区| 国产精华液一区二区三区| 亚洲成人黄色影院| 国产日产亚洲精品系列| 欧美日韩国产另类不卡| 国产精品一区二区男女羞羞无遮挡| 亚洲精品久久久蜜桃| 精品久久久久99| 欧美日韩黄色影视| 91香蕉视频在线| 国产一区二区三区在线看麻豆| 视频一区免费在线观看| 国产精品天干天干在观线| 欧美一区二区三区视频在线| 91蝌蚪国产九色| 国产成人免费视频网站| 日本不卡视频在线| 91精品国产欧美一区二区成人| 国产成人在线看| 奇米综合一区二区三区精品视频| 国产精品欧美经典| 欧美不卡一区二区三区四区| 欧美色爱综合网| eeuss鲁片一区二区三区在线看| 免费av网站大全久久| 一区二区三区在线影院| 国产精品剧情在线亚洲| 久久久综合激的五月天| 欧美xxxxxxxxx| 欧美一区二区三区四区久久| 欧美日韩五月天| 欧美性一二三区| 欧美视频在线播放| 在线一区二区三区四区| 91尤物视频在线观看| fc2成人免费人成在线观看播放| 国产精品一级在线| 国产乱国产乱300精品| 狠狠色丁香婷婷综合| 久久精品国产免费看久久精品| 日韩**一区毛片| 日韩av午夜在线观看| 日本成人在线网站| 亚洲二区在线视频| 三级成人在线视频| 日韩成人精品在线| 天天av天天翘天天综合网| 五月婷婷综合网| 美国欧美日韩国产在线播放| 另类调教123区| 黄色成人免费在线| 国产成人午夜视频| 成人av先锋影音| 色婷婷久久久久swag精品| 91成人在线免费观看| 欧美日韩中文国产| 91精品国产91热久久久做人人| 欧美一区二区三区在线| 久久夜色精品国产噜噜av| 国产日韩欧美a| 亚洲精品免费在线播放| 亚洲v中文字幕| 久久不见久久见免费视频1| 国产一区二区女| 99视频在线精品| 欧美日韩精品欧美日韩精品| 日韩免费视频一区二区| 中文字幕免费不卡| 亚洲国产日韩综合久久精品| 麻豆国产一区二区| 国产一区二区女| 91久久国产最好的精华液| 欧美一卡在线观看| 中文久久乱码一区二区| 亚洲免费观看高清完整版在线| 亚洲成人777| 国产大陆精品国产| 欧美午夜视频网站| 久久久久国产精品麻豆ai换脸| 亚洲欧美一区二区不卡| 日韩高清不卡在线| 成人18视频日本| 欧美一区二区三区日韩| 中文字幕一区二区三区蜜月| 日产欧产美韩系列久久99| 国产不卡一区视频| 欧美日韩综合不卡| 国产欧美1区2区3区| 亚洲精品videosex极品| 紧缚捆绑精品一区二区| 日本韩国一区二区| 精品国产精品一区二区夜夜嗨| 亚洲丝袜美腿综合| 国产一区二区三区四区五区美女 | 成人免费精品视频| 制服丝袜一区二区三区| 亚洲视频免费看| 国产综合久久久久久鬼色| 欧美在线观看视频一区二区三区 | 欧美一二三四在线| ...中文天堂在线一区| 精品一二线国产| 欧美精品777| 亚洲美女一区二区三区| 国产成a人亚洲| 欧美成人a在线| 日韩精品一级中文字幕精品视频免费观看 | 国产成人免费网站| 日韩三级中文字幕| 亚洲一区二区av电影| 成人aaaa免费全部观看| 久久色.com| 蜜桃视频在线观看一区二区| 在线观看日产精品| 国产精品久久久久久福利一牛影视| 久久精品国产澳门| 欧美精品久久久久久久多人混战| 综合自拍亚洲综合图不卡区| 国产成人综合网站| 精品久久99ma| 久久国内精品自在自线400部| 欧美日韩一区二区三区在线看| 中文字幕日本不卡| 成人看片黄a免费看在线| 久久久亚洲精品石原莉奈 | 国产日韩高清在线| 精品在线播放免费| 欧美不卡视频一区| 麻豆精品在线播放| 欧美一区二区免费| 日韩vs国产vs欧美| 91 com成人网| 久久精品国产精品亚洲精品| 日韩欧美国产一区在线观看| 奇米精品一区二区三区四区 | 欧美另类久久久品| 婷婷夜色潮精品综合在线| 欧美日韩国产一二三| 亚洲www啪成人一区二区麻豆| 在线观看91精品国产麻豆| 三级欧美在线一区| 欧美精品一区二区蜜臀亚洲| 国产东北露脸精品视频| 国产精品电影院| 91国内精品野花午夜精品| 奇米色777欧美一区二区| 日韩美女在线视频| 粉嫩aⅴ一区二区三区四区| 国产精品欧美经典| 欧日韩精品视频| 免费美女久久99| 国产亚洲精品精华液| 91玉足脚交白嫩脚丫在线播放| 亚洲一区二区三区精品在线| 欧美精品日韩综合在线| 另类小说视频一区二区| 中文字幕av一区二区三区免费看 | 国产精品午夜在线观看| 色综合久久综合| 日韩专区一卡二卡| 久久精品一区二区三区不卡 | 日韩欧美国产综合一区| 丁香五精品蜜臀久久久久99网站 | 极品销魂美女一区二区三区| 久久精品人人做人人综合| 91麻豆视频网站|