📄 audio.c
字号:
AudioBass( 50 ); /* 0..100 */
AudioTreble( 50 ); /* 0..100 */
AudioBalance( 50 ); /* 0..100 */
//---2004.0813 Jeffrey.Jin Add one pen for GBM ExSPK use_s---
AudioSPK_SW(0);
//---2004.0813 Jeffrey.Jin Add one pen for GBM ExSPK use_e---
// Follow are output setting
// Loudness Loudspeaker Channel -- 0dB, Normal Mode
MspWriteWord(MTS_WR_DSP, MTS_LOUDNESS, 0x0000);
// Spatial Effects Loudspeaker Channel -- Effect off, Mode A, Max HPG
MspWriteWord(MTS_WR_DSP, MTS_SP_EFFECT, 0x0000);
// Volume SCART1 output channel -> +12dB
MspWriteWord(MTS_WR_DSP, MTS_VOLUME_SCRT1, 0x7F00);
MspWriteWord(MTS_WR_DSP, MTS_AUTO_VOL_CRTN, 0x8400);
#endif
}
/************************************************************************/
/************************************************************************/
//void AudioControl(Byte val)
//{
// if( FgMuting || (val==AUDIO_MUTE))
// {
// AudioVolume( 0 ); /* 0 */
// MTS_mode( MTS_MUTE );
// AUDIO_MUTE_PIN = 1;
// }
// else if (val==AUDIO_PLAY)
// {
// if(FgAudioSelect&&((IsPortA(TYPE_SUB)&&FgBlockingA)||(IsPortB(TYPE_SUB)&&FgBlockingB)))
// {
// AudioVolume(0);
// }
// else if(!FgAudioSelect&&((IsPortA(TYPE_MAIN)&&FgBlockingA)||(IsPortB(TYPE_MAIN)&&FgBlockingB)))
// {
// AudioVolume(0);
// }
// else
// {
// AUDIO_MUTE_PIN = 0;
// if((!FgAudioSelect&&IsMain(TYPE_TV))||(FgAudioSelect&&IsSub(TYPE_TV)))
// {
// MTS_init();
// ShortDelay(10);
// MTS_mode(MtsValue);
// }
// AudioVolume( VolumeValue ); /* 0..100 */
// AudioInputGain( 0 ); /* 0..15 */
// AudioBass( BassValue ); /* 0..14 */
// AudioTreble( TrebleValue ); /* 0..14 */
// AudioBalance( BalanceValue ); /* 0..100 */
// }
// }
//}
#if TRUMPION_TV
/************************************************************************/
/* Function : MSP_StandardSelect */
/* Description : Select the MTS standard. */
/************************************************************************/
#if ( MTS_DECODER==MTS_ALL_MSP34X5 )
void MSP_StandardSelect(Word select)
{
MspWriteWord(MTS_WR_DEM, 0x0020, select);
MspStandard = select;
}
#endif
/************************************************************************/
/* Function : MTS_status */
/* Description : get MTS Stereo && SAP status */
/************************************************************************/
Byte MTS_status(void)
{
#if (MTS_DECODER==MTS_USA_PHILIPS)
ReadI2CData( MTS_ADDR,0x00,I2C_SELECT+IIC_NO_BASE_ADDR+2 );
TrmBuf[0] &= 0x60;
return( TrmBuf[0] );
#elif (MTS_DECODER==MTS_USA_SONY)
ReadI2CData( MTS_ADDR,0x00,I2C_SELECT+IIC_NO_BASE_ADDR+1 );
TrmBuf[0] &= 0xF0;
return( TrmBuf[0] );
#elif (MTS_DECODER==MTS_JPN_SONY)
Byte IDATA bval;
if( MTS_ST_PIN==0 )
{
bval = 0x40; /* stereo in */
}
else
{
if( MTS_SAP_PIN==0 ) bval = 0x20; /* SAP in */
else bval = 0x00; /* MONO in */
}
//if( MTS_MAIN_PIN==1 ) bval |= 0x10; /* MAIN in */
return(bval);
#elif ( MTS_DECODER==MTS_ALL_MSP34X5 )
return 0;
#elif ( MTS_DECODER==MTS_AN5832 )
ReadI2CData( MTS_ADDR,0x00,I2C_SELECT+IIC_NO_BASE_ADDR+1 );
TrmBuf[0] &= 0xC0;
return( TrmBuf[0] );
#elif ( MTS_DECODER==MTS_NONE )
return 0;
#endif
}
#if ( MTS_DECODER==MTS_ALL_MSP34X5 )
void MTS_AutoMode(void)
{
#if ((TV_TYPE==TV_NTSC)||(TV_TYPE==TV_ALL)) //lixing modify 2.18
switch( MtsValue )
{
case MTS_STEREO :
MSP_StandardSelect(MSP_BTSC_STEREO);
break;
case MTS_MONO :
MSP_StandardSelect(MSP_AUTO_STANDARD);
break;
case MTS_SAP :
case MTS_DUAL :
MSP_StandardSelect(MSP_BTSC_MONO_SAP);
break;
default :
break;
};
#else // (TV_TYPE==TV_PAL)
MSP_StandardSelect(MSP_AUTO_STANDARD);
#endif
}
#endif
/************************************************************************/
/* Function : MTS_mode */
/* Description : set MTS output mode */
/************************************************************************/
void MTS_mode(Byte mode)
{
Byte IDATA sts;
sts = MTS_status();
#if (MTS_DECODER==MTS_USA_PHILIPS)
switch( mode ){
case MTS_STEREO :
if( sts & MTS_PILOT_STEREO ) { sts = MTS_CTRL_STEREO; }
else { sts = MTS_CTRL_MONO; mode = MTS_MONO; }
break;
case MTS_SAP :
if( sts & MTS_PILOT_SAP ) { sts = MTS_CTRL_SAP; }
else { sts = MTS_CTRL_MONO; mode = MTS_MONO; }
break;
case MTS_MONO :
sts = MTS_CTRL_MONO;
break;
case MTS_DUAL :
if( sts & MTS_PILOT_SAP ) { sts = MTS_CTRL_DUAL; }
else { sts = MTS_CTRL_MONO; mode = MTS_MONO; }
break;
case MTS_MUTE :
sts = MTS_CTRL_MUTE;
break;
default :
sts = MTS_CTRL_MONO;
break;
};
WriteI2CByte( MTS_ADDR,MTS_CON3,sts );
#elif (MTS_DECODER==MTS_USA_SONY)
switch( mode ){
case MTS_STEREO :
if( sts & MTS_PILOT_STEREO ) { sts = MTS_CTRL_STEREO; }
else { sts = MTS_CTRL_MONO; mode = MTS_MONO; }
break;
case MTS_SAP :
if( sts & MTS_PILOT_NOISE ) { sts = MTS_CTRL_MONO; mode = MTS_MONO; }
else if( sts & MTS_PILOT_SAP ) { sts = MTS_CTRL_SAP; }
else { sts = MTS_CTRL_MONO; mode = MTS_MONO; }
break;
case MTS_MONO :
sts = MTS_CTRL_MONO;
break;
case MTS_DUAL :
if( sts & MTS_PILOT_NOISE ) { sts = MTS_CTRL_MONO; mode = MTS_MONO; }
else if( sts & MTS_PILOT_SAP ) { sts = MTS_CTRL_DUAL; }
else { sts = MTS_CTRL_MONO; mode = MTS_MONO; }
break;
case MTS_MUTE :
sts = MTS_CTRL_MUTE;
break;
default :
sts = MTS_CTRL_MONO;
break;
};
WriteI2CByte( MTS_ADDR,MTS_CON1,sts );
#elif (MTS_DECODER==MTS_JPN_SONY)
switch( mode ){ /* bit[2]=Stereo, bit[1]=Sap, bit[0]==Main */
case MTS_STEREO :
Phd1WriteByte( 0xB9,0xFF ); /* not used */
// need to force FOMO_PIN to low
break;
case MTS_SAP :
Phd1WriteByte( 0xB9,0x00 ); /* 4.5V to Vcc */
break;
case MTS_DUAL :
Phd1WriteByte( 0xB9,0x8A ); /* 2V to 3V */
break;
//case MTS_MAIN :
case MTS_MONO :
Phd1WriteByte( 0xB9,0xFF ); /* 0V to 0.5V */
// need to force FOMO_PIN high
break;
case MTS_MUTE :
default :
Phd1WriteByte( 0xB9,0xFF ); /* not used */
break;
};
#elif ( MTS_DECODER==MTS_ALL_MSP34X5 )
if( mode==MTS_MUTE ) return;
switch( mode ){
case MTS_STEREO : // Stereo(tranparency mode)
MspWriteWord(MTS_WR_DSP, MTS_LDSPK_SOURCE, 0x0120);
MspWriteWord(MTS_WR_DSP, MTS_SCRT1_SOURCE, 0x0120); //algu
break;
case MTS_SAP : // Sound B Mono
MspWriteWord(MTS_WR_DSP, MTS_LDSPK_SOURCE, 0x0110);
MspWriteWord(MTS_WR_DSP, MTS_SCRT1_SOURCE, 0x0110);//algu
break;
case MTS_MONO : // Stereo(tranparency mode)
MspWriteWord(MTS_WR_DSP, MTS_LDSPK_SOURCE, 0x0130); //Eric change from 0x0130 to 0x0230 2003/2/24 11:21AM
MspWriteWord(MTS_WR_DSP, MTS_SCRT1_SOURCE, 0x0130);//algu
break;
case MTS_DUAL : // Stereo(tranparency mode)
default :
MspWriteWord(MTS_WR_DSP, MTS_LDSPK_SOURCE, 0x0120);
MspWriteWord(MTS_WR_DSP, MTS_SCRT1_SOURCE, 0x0120);//algu
break;
};
MTS_AutoMode();
#elif ( MTS_DECODER==MTS_AN5832 )
switch( mode ){
case MTS_STEREO :
if( sts & MTS_PILOT_STEREO ) sts = MTS_CTRL_STEREO;
else sts = MTS_CTRL_MONO;
break;
case MTS_SAP :
if( sts & MTS_PILOT_SAP ) sts = MTS_CTRL_SAP;
else sts = MTS_CTRL_MONO;
break;
case MTS_DUAL :
if( sts & MTS_PILOT_SAP ) sts = MTS_CTRL_DUAL;
else sts = MTS_CTRL_MONO;
break;
case MTS_MUTE :
sts = MTS_CTRL_MUTE;
break;
case MTS_MONO :
default :
sts = MTS_CTRL_MONO;
break;
};
WriteI2CByte( MTS_ADDR,0x00,sts|0x20 );
#endif
}
/************************************************************************/
/* Function : MTS_init */
/* Description : MTS initialize */
/************************************************************************/
void MTS_init(void)
{
#if (MTS_DECODER==MTS_USA_PHILIPS)
WriteI2CByte( MTS_ADDR,MTS_CON1,0x07 );
WriteI2CByte( MTS_ADDR,MTS_CON2,0x07 );
WriteI2CByte( MTS_ADDR,MTS_CON3,MTS_CTRL_STEREO );
WriteI2CByte( MTS_ADDR,MTS_CON4,0x07 );
WriteI2CByte( MTS_ADDR,MTS_ALI1,0x10 );
WriteI2CByte( MTS_ADDR,MTS_ALI2,0x90 );
WriteI2CByte( MTS_ADDR,MTS_ALI3,0x03 );
#elif (MTS_DECODER==MTS_USA_SONY)
WriteI2CByte( MTS_ADDR,MTS_ATT,0x09 );
WriteI2CByte( MTS_ADDR,MTS_SPECTRAL,0x1F );
WriteI2CByte( MTS_ADDR,MTS_WIDEBAND,0x1F );
WriteI2CByte( MTS_ADDR,MTS_CON1,0x09 );
WriteI2CByte( MTS_ADDR,MTS_CON2,0x00 );
#elif (MTS_DECODER==MTS_JPN_SONY)
MTS_mode( MTS_MONO );
#elif ( MTS_DECODER==MTS_ALL_MSP34X5 )
// Byte idx;
// 1. MODUS-Register:Automatic = on
#if (TVN_COUNTRY==TV_NTSC_USA)
// MspWriteWord(MTS_WR_DEM, MTS_MODUS, 0x3003); //lixing modify for ANA_IN1+
MspWriteWord(MTS_WR_DEM, MTS_MODUS, 0x3103); //lixing modify 2.2 for ANA_IN2+
#elif (TVN_COUNTRY==TV_NTSC_JAPAN)
// MspWriteWord(MTS_WR_DEM, MTS_MODUS, 0x5003);
MspWriteWord(MTS_WR_DEM, MTS_MODUS, 0x5103); //lixing modify 2.2 for ANA_IN2+
#else //(TVN_COUNTRY==TV_NTSC_KOREA)
// MspWriteWord(MTS_WR_DEM, MTS_MODUS, 0x1003);
MspWriteWord(MTS_WR_DEM, MTS_MODUS, 0x1103); //lixing modify 2.2 for ANA_IN2+
#endif
// LoudSpeaker source -> Stereo or A , Stereo(tranparency mode)
// FM matrix mode -> 100K FM deviation, SOund A mono
MspWriteWord(MTS_WR_DSP, MTS_PRESCALE_FMAM, 0x2403);
// Automatic Volume Correction -> AVC on, 4 sec delay
MspWriteWord(MTS_WR_DSP, MTS_AUTO_VOL_CRTN, 0x8400);
// NICAM Prescale -> 9 dB gain
MspWriteWord(MTS_WR_DSP, MTS_PRESCALE_NICAM, 0x5a00);
// STANDARD Selection Register -> Automatic Sound Detection
MSP_StandardSelect(MSP_AUTO_STANDARD);
#elif ( MTS_DECODER==MTS_AN5832 )
WriteI2CByte( MTS_ADDR,0x00,0x00 );
WriteI2CByte( MTS_ADDR,0x01,0x04 );
#elif ( MTS_DECODER==MTS_NONE )
#endif
return;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -