📄 triton_voice_loop.c
字号:
#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 + -