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

📄 process_data.c

📁 通过BF561双核处理系统
💻 C
字号:
#include "Talkthrough.h"

//--------------------------------------------------------------------------//
// Function:	Process_Data()												//
//																			//
// Description: This function is called from inside the SPORT0 ISR every 	//
//				time a complete audio frame has been received. The new 		//
//				input samples can be found in the variables iChannel0LeftIn,//
//				iChannel0RightIn, iChannel1LeftIn and iChannel1RightIn 		//
//				respectively. The processed	data should be stored in 		//
//				iChannel0LeftOut, iChannel0RightOut, iChannel1LeftOut,		//
//				iChannel1RightOut, iChannel2LeftOut and	iChannel2RightOut	//
//				respectively.												//
//--------------------------------------------------------------------------//

//定义临时存储变量,记录左右声道的数据输入
static fract16 temp0[2*VEC_SIZE];
static fract16 temp1[2*VEC_SIZE];

void Process_Data(void)
{
    int nValue;
	int i;
	
	extern int BTCLeftVolume;
	extern int BTCRightVolume;
	extern fract16 tBuffer0[2*VEC_SIZE];
	extern fract16 tBuffer1[2*VEC_SIZE];
	
	fir_init(state, coefs, delay, NUM_TAPS, 1);	// initialize filter state 
	
	if (dmaFlag == 0)   //乒乓操作
	{
		
		firStereo(iRxBuffer1, iTxBuffer0, VEC_SIZE, &state);	//FIR滤波
		for (i=0;i<VEC_SIZE;i++)
		{
		    temp1[2*i] = iTxBuffer1[2*i];
		    temp1[2*i+1] = iTxBuffer1[2*i+1];
		    iTxBuffer1[2*i] = (temp1[2*i]-temp1[2*i+1])<<2;  //左右相减,将输出写回iTxBuffer1
		    iTxBuffer1[2*i+1] = (temp1[2*i+1]-temp1[2*i])<<2;  

		    //完成第三种设计方案
		    iTxBuffer0[2*i] = iTxBuffer0[2*i] + iTxBuffer1[2*i];  //将左右相减的结果与滤波结果相加,结果作为输出
		    iTxBuffer0[2*i+1] = iTxBuffer0[2*i+1] + iTxBuffer1[2*i+1];
		    
			iChannel0LeftOut = iTxBuffer0[2*i];
			nValue = (iChannel0LeftOut);	
			nValue = (nValue >> BTCLeftVolume);	//volume
			btc_write_value(0, (unsigned int*)&nValue, sizeof(nValue));
			iChannel0RightOut =iTxBuffer0[2*i+1];
			nValue = (iChannel0RightOut);	
			nValue = (nValue >> BTCRightVolume);//volume
			btc_write_value(1, (unsigned int*)&nValue, sizeof(nValue));
		}
		dmaFlag = 1;
	}
	else       //乒乓操作
	{
		
		firStereo(iRxBuffer0, iTxBuffer1, VEC_SIZE, &state);	// FIR滤波
		for (i=0;i<VEC_SIZE;i++)
		{
		    temp0[2*i] = iTxBuffer0[2*i];
		    temp0[2*i+1] = iTxBuffer0[2*i+1];
		    iTxBuffer0[2*i] = (temp0[2*i]-temp0[2*i+1])<<2;  //左右相减,将输出写回iTxBuffer0
		    iTxBuffer0[2*i+1] = (temp0[2*i+1]-temp0[2*i])<<2;

		    //完成第三种设计方案
		    iTxBuffer1[2*i] = iTxBuffer1[2*i] + iTxBuffer0[2*i];  //将左右相减的结果与滤波结果相加,结果作为输出
		    iTxBuffer1[2*i+1] = iTxBuffer1[2*i+1] + iTxBuffer0[2*i+1];

			iChannel0LeftOut =iTxBuffer1[2*i];
			nValue = (iChannel0LeftOut);	
			nValue = (nValue >> BTCLeftVolume);	//volume
			btc_write_value(0, (unsigned int*)&nValue, sizeof(nValue));
			iChannel0RightOut =iTxBuffer1[2*i+1];
			nValue = (iChannel0RightOut);	
			nValue = (nValue >> BTCRightVolume);//volume
			btc_write_value(1, (unsigned int*)&nValue, sizeof(nValue));
		}
		dmaFlag = 0;
	} 

}

⌨️ 快捷键说明

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