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

📄 triton_voice_loop.c

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 C
📖 第 1 页 / 共 2 页
字号:
#include "tritonsys_voice_loop_back_a9.h"
#include "mcsi2.h"
#include "dmareq_mapping.h"
#include "Gdma.h"
#include "tritonsys_recorder_voice_a9.h"
#include "mcbsp1.h"
//#include "RealSin1_1k.h"
//#include "RealSin1_400.h"

//#include "TestMusic1.h"

UWORD16 MIC_DATA1[0xfff] = {0};

//#include "800hz.h"
//#include "dat.h"
//#include "P4.h"
//#include "test1.h"
//#include "test2.h"
void config_Xbar_voice_loop(void)
{
  CONFIGURATION_FUNC_MUX_ARM_DMA_A = ((MCSI2_RX_DMAREQ-1) << 6);
} 

void config_DMA_interrupts_voice_loop(void)
{
  INTH2_InitLevel (DMA_CH1_INT, INTH_IRQ, DMA_CH1_INT, INTH_LOW_LEVEL_SENSITIVE);
} 


void enable_DMA_interrupts_voice_loop(void)
{
  INTH2_EnableOneIt(DMA_CH1_INT, INTH_IRQ);
} 

void test_TEST_RAM_DMA_TX_RX_req_voice_loop()
{  
  // DMA access from Mcbsp receive register to memory
  DMAT_ConfigureRheaMemTransfert_OMAP32(
    DMA_CHANNEL_1,
    DMA_RHEA,
    (UWORD32)&MCSI2_RX0_REG,
    DMA_RHEA,
    (UWORD32)&MCSI2_TX0_REG,
    DMA_TYPE,
    SIZEOF_ELEMENT * VOICE_SAMPLES_NB_FOR_SECOND_10,
    2);  
  
  // Enable DMA channels -> DMA request are taken into account
  DMA_Omap32EnableChannel(DMA_CHANNEL_1); 
}

void Triton_Audio_Outputs_OPEN_SPK(void)
{ MSI2C_AccessPage(AUDIO_page);
 MSI2C_MasterPollingSendAbb(AUDIO_OUTEN3, 0x02);
}
void triton_voice_loop_config(void)
{

  Triton_Audio_Outputs_Charge_Settings(AUDIO_CARKIT_CHARGE_AUTO, AUDIO_AUXO_CHARGE_AUTO, AUDIO_EAR_CHARGE_AUTO, AUDIO_HSO_CHARGE_AUTO);
  Triton_PLL_Settings(AUDIO_STEREO_PLL_POWER_OFF, AUDIO_STEREO_PLL_SPEEDUP_INACTIVE, AUDIO_VOICE_PLL_POWER_ON);
  Triton_Analog_Settings(AUDIO_VMID_1_35V, AUDIO_VMID_LOW_PASS_RC_FILTER_RESISTANCE_NOT_BYPASSED, AUDIO_MIC_BIAS_2V, AUDIO_MIC_BIAS_ACTIVE);
 
  Triton_Audio_Outputs_Enabling_And_Mixing (AUDIO_HF_VOICE_SPEECH, AUDIO_CAR_KIT_NONE, AUDIO_AUXO_NONE, AUDIO_EAR_VOICE_SPEECH, AUDIO_HSOL_VOICE_SPEECH, AUDIO_HSOR_VOICE_SPEECH);
  Triton_Audio_Inputs_Selection(AUDIO_INPUT_MIC);
  Triton_Voice_Filter_Bypass_Settings(AUDIO_WHOLE_VOICE_DOWNLINK_FILTER_BYPASSED);
  Triton_Voice_Speech_Path_Settings(AUDIO_VCK_BURST_MODE, AUDIO_VCK_FREQ_2MHz_WIDE_BAND);
//  Triton_Audio_Outputs_OPEN_SPK();
  Triton_Voice_Gain_Settings(AUDIO_VOICE_DOWNLINK_VOLUME_0dB, AUDIO_VOICE_DOWNLINK_DIG_GAIN_6, AUDIO_VOICE_DOWNLINK_DIG_GAIN_6, AUDIO_VOICE_SIDETONE__5);
//  Triton_Voice_Gain_Settings(AUDIO_VOICE_DOWNLINK_VOLUME__12dB, AUDIO_VOICE_DOWNLINK_DIG_GAIN__6, AUDIO_VOICE_UPLINK_DIG_GAIN__6, AUDIO_VOICE_SIDETONE__5);
  Triton_Audio_Power(AUDIO_STEREO_DOWNLINK_PATH_ENABLE, AUDIO_VOICE_UPLINK_PATH_ENABLE, AUDIO_VOICE_DOWNLINK_PATH_ENABLE);


/*   Triton_Audio_Volume_settings(AUDIO_GAIN__19dB, AUDIO_GAIN__19dB); */
/*   Triton_Speaker_Amp_Gain_Settings(AUDIO_SPKAMP_GAIN__3_5dB); */
/*   Triton_Ear_Amp_Gain_Settings(AUDIO_EAR_AMP__11dB); */
/*   Triton_Hook_Enable(AUDIO_HOOK_DISABLE); */
/*   Triton_Hand_Free_Activation(AUDIO_HAND_FREE_DIG_PART_INACTIVE); */
/*   Triton_FM_Radio_Gain(AUDIO_FM_RADIO_GAIN_2dB); */
/*   Triton_Analog_Loop_Active(AUDIO_INTERNAL_ANALOG_LOOP_NOT_ACTIVE); */
/*   Triton_Audio_Reset(AUDIO_DIGITAL_PART_RESET); */
/*   Triton_Audio_Boost(AUDIO_VOICE_UPLINK_INPUT_AMPLIFIER_NOT_BOOST); */
/*   Triton_Audio_Part_Registers_Init(); */


  //Triton_Audio_Outputs_Charge_Settings(AUDIO_CARKIT_CHARGE_AUTO, AUDIO_AUXO_CHARGE_AUTO, AUDIO_EAR_CHARGE_AUTO, AUDIO_HSO_CHARGE_AUTO);
  
  //Triton_Analog_Settings(AUDIO_VMID_1_35V, AUDIO_VMID_LOW_PASS_RC_FILTER_RESISTANCE_NOT_BYPASSED, AUDIO_MIC_BIAS_2V, AUDIO_MIC_BIAS_ACTIVE);
  
  //Triton_Audio_Outputs_Enabling_And_Mixing (AUDIO_HF_NONE, AUDIO_CAR_KIT_NONE, AUDIO_AUXO_NONE, AUDIO_EAR_AUDIO_MONO_FROM_LEFT_CHANNEL, AUDIO_HSOL_NONE, AUDIO_HSOR_NONE);
  //Triton_Audio_Inputs_Selection(AUDIO_INPUT_MIC);
  
  //Triton_Voice_Filter_Bypass_Settings(AUDIO_WHOLE_VOICE_DOWNLINK_FILTER_BYPASSED);
  //Triton_Voice_Speech_Path_Settings(AUDIO_VCK_BURST_MODE, AUDIO_VCK_FREQ_500KHz_NARROW_BAND);
  //Triton_Voice_Gain_Settings(AUDIO_VOICE_DOWNLINK_VOLUME__12dB, AUDIO_VOICE_DOWNLINK_DIG_GAIN__6, AUDIO_VOICE_UPLINK_DIG_GAIN__6, AUDIO_VOICE_SIDETONE__5);

  //Triton_Voice_Memo_Activation(AUDIO_VOICE_MEMO_INACTIVE);

  //Triton_Audio_Stereo_Settings(AUDIO_STEREO_TO_MONO_ON_LEFT, AUDIO_DEFAULT_VALUE, AUDIO_DEFAULT_VALUE);
  //Triton_Stereo_Sampling_Rate_Freq (AUDIO_STEREO_SAMPLE_RATE_FREQ_32KHz);
  
  //Triton_PLL_Settings(AUDIO_STEREO_PLL_POWER_ON, AUDIO_STEREO_PLL_SPEEDUP_ACTIVE, AUDIO_VOICE_PLL_POWER_OFF);
  //Triton_Audio_Power(AUDIO_STEREO_DOWNLINK_PATH_ENABLE, AUDIO_VOICE_UPLINK_PATH_DISABLE, AUDIO_VOICE_DOWNLINK_PATH_DISABLE);
  //Triton_I2S_Power(AUDIO_I2S_ON);//enable Triton I2S module
  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}


void McsiVoiceLoopBack(void)
{
	unsigned short val ;
  	int i;
	int  end_of_dma = 0;
  	int temp;
	UWORD8 reg_val;
	
//	 MIC_DATA1[0xfff] = {0};
  //Init I2C Interface
 // MSI2C_InitConnectionAbb();

  // Test DMA transfers
 // config_Xbar_voice_loop();

  // Configure DMA interrupts (CH0, CH1) and enable them
 // config_DMA_interrupts_voice_loop();
 // enable_DMA_interrupts_voice_loop();

  // disable MCSI2
  MCSI_disable(MAP_MCSI2_ADDR);

  //INTH2_DisableOneIt(MCSI2_TX_RX_RST_FRAMEERROR_INT);

  // MCSI initialisations

//  triton_voice_loop_config();
 
  MCSI2_CONTROL_REG         = 0x0;     // disable mcsi bt     
 // MCSI2_MAIN_PARAM_REG      = 0x000f;
	MCSI2_MAIN_PARAM_REG      =0x0f;//zhy

 //ahuoMCSI2_MAIN_PARAM_REG      = 0xC00f;  // slave, 16 bit data + DMA requests enabled on RX
//   MCSI2_MAIN_PARAM_REG      = 0x000f;  // slave, 16 bit data + no DMA
   MCSI2_CHANNEL_USED_REG =0x01;     
  MCSI2_OVER_CLOCK_REG      = 0x00;    // no additionnal bit   
  // MCSI2_CLOCK_FREQUENCY_REG = 0x0A;    // 12Mhz/10=1.2Mhz
    // MCSI2_CLOCK_FREQUENCY_REG = 0x34;    // 26Mhz/52=0.5Mhz
	MCSI2_CLOCK_FREQUENCY_REG = 0x0d;
  MCSI2_INTERRUPTS_REG      = 0x0000;  // tx and rx interrupts on channel 0
//    MCSI2_INTERRUPTS_REG      = 0x0000;  // tx and rx interrupts on channel 0

  //SetupTritonLoopback();

//  test_TEST_RAM_DMA_TX_RX_req_voice_loop();

  //configure triton in voice loop mode
  triton_voice_loop_config();

  // enable MCSI2
//  Triton_ClassD_open(1);
//zhy
	reg_val = MSI2C_MasterPollingReceiveAbb(AUDIO_CTRL3);
  	reg_val = ( ( 0x80 & 0xF0 ) | ( 0x01 & 0x0F) );

  	MSI2C_MasterPollingSendAbb( AUDIO_CTRL3, reg_val );

	Triton_Ear_Amp_Gain_Settings(0x1);
	MSI2C_MasterPollingSendAbb(AUDIO_OUTEN3, 01 );
	
	
	reg_val = MSI2C_MasterPollingReceiveAbb(AUDIO_CTRL5);
  	reg_val = ( ( 0x30 & 0xF0 ) | ( reg_val & 0x0F) );//ear -11dB for 0x10;-1dB for 0x30

	MSI2C_MasterPollingSendAbb( AUDIO_CTRL5, reg_val );


	//2.5V
/*	reg_val = MSI2C_MasterPollingReceiveAbb(AUDIO_CTRL2);
  	reg_val = ( reg_val | (0x20) );

	MSI2C_MasterPollingSendAbb( AUDIO_CTRL2, reg_val );
*/
	//Adjust uplink GPA 
		MSI2C_MasterPollingSendAbb( AUDIO_VULGAIN, 0x10 );

	//off ear
//	MSI2C_MasterPollingSendAbb( AUDIO_OUTEN2,0 );

	//off spk	
//	MSI2C_MasterPollingSendAbb( AUDIO_OUTEN3,0 );

//OFF  MIC
//	reg_val = MSI2C_MasterPollingReceiveAbb(AUDIO_PWRONSTATUS);

//	MSI2C_MasterPollingSendAbb( AUDIO_PWRONSTATUS, 0xE );

//configure VSP
	reg_val = MSI2C_MasterPollingReceiveAbb(AUDIO_CTRL1);

	MSI2C_MasterPollingSendAbb( AUDIO_CTRL1, 0x13 );

//zhy


	UART_Printf(UART2,"Please Enter your choice: \n "); 
	UART_Printf(UART2,"1: mic wave --> earphone,L,R channel,headfree \n ");     
	UART_Printf(UART2,"2: earphone,L,R channel,headfree have triangle wave \n ");   
		val = UART_GetNum(UART2);
    	UART_Printf(UART2,"\n\r");
		memset (MIC_DATA1, 0, sizeof(MIC_DATA1));
   
        switch (val)
    	{  
    		UWORD16 j;   		
    		case 1:
    		{
    		MCSI_enable(MAP_MCSI2_ADDR);
    	    
    		for (i=0;i<4096;i++)
    		{       
   				
			 MIC_DATA1[i]=MCSI2_RX0_REG;}; 
			 while(1)
			 {
			 for(i=0;i<4096;i++)
			 {
			 MCSI2_TX0_REG = MIC_DATA1[i]; 
//			MCSI2_TX0_REG = MCSI2_RX0_REG;
			}
			}
    		   break;
    		}	
    		case 2:
    		{
    		MCSI_enable(MAP_MCSI2_ADDR);
			 while(1)
  			{ 
  
  

			//  MCSI2_TX0_REG = 0x055;
  			temp= temp+500;
  			for (i=0 ; i < 500 ; i++);
  			if (temp>65520)
  			{temp=0;}

 //zhy begin
MCSI2_TX0_REG = temp;
/*  {
	temp = 	Test_sin1k[i];
	MCSI2_TX0_REG =Test_sin1k[i];
  
  }
*/

//  MCSI_disable(MAP_MCSI2_ADDR);

  }
    		break;
             }
	     }




  MCSI_enable(MAP_MCSI2_ADDR);

  while(1)
  { 
  
  

//  MCSI2_TX0_REG = 0x055;
  temp= temp+500;
  for (i=0 ; i < 500 ; i++);
  if (temp>65520)
  {temp=0;}

  MCSI2_TX0_REG = temp;
  

//  MCSI_disable(MAP_MCSI2_ADDR);

  }
  


  //  if ( ( TIME_WaitUs(OSTIMER1, POLLING_MODE , 10000 /*20000000*/)) == IS_OK )//wait 20s
  //  RES_Set(TEST_OK); 
  //else
  //  RES_Set(TEST_BAD); 

  /* Wait press key*/
 // uiWaitKeyboard();

 // Triton_Audio_Power(AUDIO_STEREO_DOWNLINK_PATH_DISABLE, AUDIO_VOICE_UPLINK_PATH_DISABLE, AUDIO_VOICE_DOWNLINK_PATH_DISABLE);
 // MCSI_disable(MAP_MCSI2_ADDR);

}




UWORD16 tritonsys_voice_loop_back(void) {

  UWORD16 result_tritonsys_voice_loop_back;
  UWORD16 error_code;
  
  /* Synchonization between DSP */


 // switch in SAM mode MGS3 memories  
 // APIF_DSP_API_CONFIG = 0;FL

  // enable MCSI clock
  ULPD_SoftReqEnable(MCSI);//FL

  /* Wait for MCSI2 release */
//  while(count_mb1_int == 0);
//  count_mb1_int --;

  // enable ARM access to MCSI2
  error_code = SSW_Grab(MCSI2);

  McsiVoiceLoopBack();

    return result_tritonsys_voice_loop_back;
   
    
}












/* ============================================================================
* GLOBAL VARIABLES DECLARATIONS
* =============================================================================*/
//extern FUNC PE_InterruptArray []; 

//UWORD16 AbbDeviceAddress = AbbDeviceAddressDefault ;  // FL device address used for the I2c communication
//UWORD8  Abb_page_in_use  = AbbPageDefault ;           // FL Abb Page selection
/* ============================================================================
* FUNCTIONS
* =============================================================================*/
/* ----------------------------------------------------------
 * NAME        : dma_channel_1_irqHandler
 *
 * DESCRIPTION : Interrupt Handler Function
 * 		                                       
 * ---------------------------------------------------------- */
static void dma_channel_1_irqHandler(void)
{
  DMA_Omap32GetCondBitsInterrupt(DMA_CHANNEL_1);
}



void dma_conf_voice_memo(UWORD32 SizeOfTestBuffer)
{
  UWORD16 flags;

⌨️ 快捷键说明

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