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

📄 audiotest.c

📁 音频编解码芯片 LM4930的测试程序
💻 C
字号:
/****************************************************************************
* 文 件 名:AudioTest.c
* 功    能:使用硬件I2C对LM4930进行操作,利用中断方式操作。
****************************************************************************/
#include  "config.h" 
#include  "Functions.h"

/****************************************************************************
* 名    称:AudioTest()
* 功    能:向LM4930的三个寄存器写入配置字,从而使LM4930工作在正常模式和状态
* 说    明:在STARTUP.S文件中使能IRQ中断(清零CPSR中的I位);
*          在CONFIG.H文件中包含I2CINT.H。
****************************************************************************/
void  AudioTest(void)
{
//	uint8 i;
	uint16 temp1;
	uint8 temp2;
	uint8 STOP_FLAG;
	uint32  AddrShift = 0;
	uint8 Key_Value1=0;
	uint8 Key_Value2=0;
	/*encode mode is A-law,and default configure*/
    uint8  aBASICCONFIG_DATA[]       = {0x00,0x40};//BASICCONFIG寄存器默认配置字,可以改变
	/*encode mode is u-law,and default configure*/
    uint8  uBASICCONFIG_DATA[]       = {0x00,0xC0};//BASICCONFIG寄存器默认配置字,可以改变

	uint8  VOICE_TESTCONFIG_DATA[]  = {0x02,0x81};//VOICE/TESTCONFIG寄存器默认配置字。可以改变
	uint8  GAINCONFIG_DATA[]        = {0x00,0x17};//GAINCONFIG寄存器默认配置字,可以改变
	


//    PINSEL0 = 0x00000000;			
//    PINSEL1 = 0x00000000;	
   
    I2C_Init(100000);                      		// I2C初始化
    SPI_Init();                                 //SPI初始化
/****************************************************************************
**设置BASICCONFIG寄存器,选择不同的编码方式和工作模式
****************************************************************************/
/*串口显示可以设置的编码方式,0代表A-law,1代表u-law,可以通过键盘选择*/    
	UART0_SendStr("\nPlease chose encode mode,and default is A-law");
	UART0_SendStr("\n0 : A-law");
	UART0_SendStr("\n1 : u-law");

	Key_Value1 = UART0_RcvByte();//获得键值

	/*显示可以选择的选项,通过键盘输入相应的值*/
	UART0_SendStr("\nPlease chose voice mode,and default is Mono Speaker Mode");
	UART0_SendStr("\n	You can chose as fellow:");
	UART0_SendStr("\n 0 : Powerdown mode");
	UART0_SendStr("\n 1 : Standby mode");
	UART0_SendStr("\n 2 : Mono Speaker mode");
	UART0_SendStr("\n 3 : Headphone call mode");
	UART0_SendStr("\n 4 : Conference call mode");
	UART0_SendStr("\n 5 : L+R mixed to mono speaker mode");

	Key_Value2 = UART0_RcvByte();//获得键值

	if(Key_Value1)//选择的是u-law
	{
		uBASICCONFIG_DATA[1] |= Key_Value2;
		ISendByte(BASICCONFIG,uBASICCONFIG_DATA);	    // 配置BASICCONFIG寄存器
	}
	else         //选择的是a-law
	{
		aBASICCONFIG_DATA[1] |= Key_Value2;
		ISendByte(BASICCONFIG,aBASICCONFIG_DATA);	    // 配置BASICCONFIG寄存器
	}
	
	/*清零键值变量*/
    Key_Value1 = 0;
	Key_Value2 = 0;

/********************************************************************************
** 配置VOICE/TESTCONFIG,选择不同的侧音
********************************************************************************/
	/* 显示可设置的侧音选项*/
	UART0_SendStr("\nPlease set sidestone,and default is muted.");
	UART0_SendStr("\nYou can chose one from 12 with interval -3dB from -30dB to 0dB");
	UART0_SendStr("\n0 : Mute");
	UART0_SendStr("\n1 : -30dB");
	UART0_SendStr("\n2 : -27dB");
	UART0_SendStr("\n......");
	UART0_SendStr("\n11 : 0dB");

	Key_Value1 = UART0_RcvByte();//获得键值

	VOICE_TESTCONFIG_DATA[1] |= Key_Value1 <<1;
	ISendByte(VOICE_TESTCONFIG,VOICE_TESTCONFIG_DATA);//配置VOICE/TESTCONFIG寄存器

/*********************************************************************************
** 配置GAINCONFIG,选择不同的loudspeaker gain或者micphone gain
**********************************************************************************/

		/*清零键值变量*/
    Key_Value1 = 0;
	Key_Value2 = 0;

	/*显示loudspeaker是选择高16种增益还是低16种增益*/
	UART0_SendStr("\nPlease set the loudspeaker gain,and default is 0dB");
	UART0_SendStr("\nYou can chose one from lower 16 with interval 1.5dB");
	UART0_SendStr("\nYou can chose one from higher 16 with interval 1.5dB,too");
	UART0_SendStr("\n0 : lower 16");
	UART0_SendStr("\n1 : higher 16");

		/*得到键值并显示*/
	Key_Value1 = UART0_RcvByte();
	if(!Key_Value1)
	{
		GAINCONFIG_DATA[1] &= 0xEF;
	/*显示低16种增益可以选择的项*/
		UART0_SendStr("\nPlease chose one from 16 with interval 1.5dB");
		UART0_SendStr("\n0 : -34.5dB");
		UART0_SendStr("\n1 : -33dB");
		UART0_SendStr("\n......");
		UART0_SendStr("\n15 : -12dB");
	/*显示输入的键值*/
		Key_Value1 = UART0_RcvByte();
		
	/*配置GAINCONFIG*/
		GAINCONFIG_DATA[1] |= Key_Value1;
	/*显示micphone的16种增益*/
		UART0_SendStr("\nPlease set the micphone gain,And Default is 17dB");
		UART0_SendStr("\nyou can chose one from 16 with interval 2dB");
		UART0_SendStr("\n0 : 17dB");
		UART0_SendStr("\n1 : 19dB");
		UART0_SendStr("\n......");
		UART0_SendStr("\n15 : 47dB");
	/*获得键值并显示*/
		Key_Value2 = UART0_RcvByte();
	
	/*配置增益寄存器*/	
		GAINCONFIG_DATA[0] |= Key_Value2<<2;
		ISendByte(GAINCONFIG,GAINCONFIG_DATA);
	}
	else
	{
		/*显示高16种增益可以选择的项*/
		UART0_SendStr("\nPlease chose one from 16 with interval 1.5dB");
		UART0_SendStr("\n0 : -10.5dB");
		UART0_SendStr("\n1 : -9dB");
		UART0_SendStr("\n......");
		UART0_SendStr("\n15 : 12dB");
	/*显示输入的键值*/
		Key_Value1 = UART0_RcvByte();
	
	/*配置GAINCONFIG*/
		GAINCONFIG_DATA[1] |= Key_Value1;
	/*显示micphone的16种增益*/
		UART0_SendStr("\nPlease set the micphone gain,and default is 17dB");
		UART0_SendStr("\nyou can chose one from 16 with interval 2dB");
		UART0_SendStr("\n0 : 17dB");
		UART0_SendStr("\n1 : 19dB");
		UART0_SendStr("\n......");
		UART0_SendStr("\n15 : 47dB");
	/*获得键值并显示*/
		Key_Value2 = UART0_RcvByte();
	
	/*配置增益寄存器*/	
		GAINCONFIG_DATA[0] |= Key_Value2<<2;
		ISendByte(GAINCONFIG,GAINCONFIG_DATA);
	}

	/*LM4930配置完成,可以正常工作了*/
	UART0_SendStr("\nThe LM4930 has been configured completely,now you can speak.");

   /*把从SPI0口接收到的数据存入SRAM中*/
	do{
		STOP_FLAG = SRAMWordWrite(AddrShift++,RcvData());
	}while (!STOP_FLAG);
	/*把存入SRAM中的语音数据再送到LM4930中输出*/
	
	AddrShift = 0;
	while(AddrShift < 0x1FFFFF)
	{
		temp1 = SRAMWordRead(AddrShift++);
		temp2 = (temp1 & 0xFF00);
		temp2 = temp2>>8;
		SendData(temp2);
		SendData(0);
		temp2 = (temp1 & 0x00FF);
		SendData(0);
		
	}
	/*测试完成*/

	UART0_SendStr("\nHave you heard the word you said?");
	UART0_SendStr("\nif heard,test successfully;otherwise,test unsuccessfully");

//   while(1);
//    return(0);					
}

⌨️ 快捷键说明

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