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

📄 audio.c

📁 电子产品音效处理芯片驱动
💻 C
📖 第 1 页 / 共 2 页
字号:
   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 + -