📄 _stv82x7.h.svn-base
字号:
/************************************************************************************
COPYRIGHT (C) STMicroelectronics 2005. All rights reserved.
This document contains proprietary and confidential information of the
STMicroelectronics Group. This document is not to be copied in whole orpart.
STMicroelectronics assumes no responsibility for the consequences of use of such
information nor for any infringement of patents or other rights of third
parties which may result from its use. No license is granted by implication or
otherwise under any patent or patent rights of STMicroelectronics.
STMicroelectronics products are not authorized for use as critical components in life
support devices or systems without express written approval of STMicroelectronics.
*************************************************************************************/
/*!
\defgroup STV82X7_INTRO STV82X7 Description
\date 10/10/2005
\author Steven CHEN - ST China
\par Introduction
This document describes the API of the STV82X7's sound module.
It handles the various features of the device:
the Audio Switching, the Sound Demodulation, the Automatic Standard Recognition and
all the Audio Processing.
The S/W is able to control a single STV82X7 device only, that is fitted for the 8 or 16 bits processor
to do S/W integration and I2C Communication.
The developer uses polling rather than interrupt handling in order to be
informed about standard modification of the input IF signal.
The S/W will be built according to the value of the target platform as defined by the each STV82X7 families.
Several definition must be defined by the header file as bellow :
_50KHZ_COEFFICIENT_FILTER_USED_
_75KHZ_COEFFICIENT_FILTER_USED_
_100KHZ_COEFFICIENT_FILTER_USED_
_MN_27KHZ_COEFFICIENT_FILTER_USED_
_MN_50KHZ_COEFFICIENT_FILTER_USED_
_MN_75KHZ_COEFFICIENT_FILTER_USED_
SUPPROT_I2S_FUNCTION
_SUPPROT_OVER_STV8257_
AGC_GAIN, Volume, EQ, Balance and Prescale values have to be adjusted on the each chassis.
\par Abbreviation
<ul>
<li><STRONG>API</STRONG> ... Application Programming Interface </li>
<li><STRONG>DSP</STRONG> ... Digital Signal Processor </li>
<li><STRONG>SVC</STRONG> ... Smart Volume Control </li>
</ul>
\par Using The API
In order to use the STV82X7 , it must first be initiated, using the STV82X7_Initialise() function. During this
call, all required resources are allocated (this call is done by the system supervisor) and main processor
executes H/W reset.
Also S/W reset is executed by STV82X7_Initialise(), at that time all register values returns to reset values.
During this function call, this function will update patch through I2C's communication.
After that, DSP block will be initialized by function call and it will be started.
After that, system developer wants to wide coefficient filter values( 75, 100 KHz ), this function executes
coefficient function in order to update new coefficient filter value, also system developer must define Mecro
to use wide coefficient filter values.
After that, some register values will be updated by STV82X7_InitRegister() in order to adjust
Volume, FM Time Out, Prescale, AGC Value, EQ, SRS Control and Pseudo effect.
System developer can use STV82X7_SetCenterVolume(), STV82X7_SetSurroundLeftVolume(), STV82X7_SetSurroundRightVolume(),
STV82X7_SetHPLeftVolume(), STV82X7_SetHPRightVolume(), STV82X7_SetMasterVolume(), STV82X7_SetLeftScartVolume(),
STV82X7_SetRightScartVolume(), STV82X7_SetLeftVolume() and STV82X7_SetRightVolume() in order to control each volumes.
System developer can use STV82X7_SetDigitalMute(), STV82X7_SetDigitalUnMute(), STV82X7_SetAutoSTDMute(),
STV82X7_SetAutoSTDUnMute(), STV82X7_SetDACMute(), STV82X7_SetDACUnMute(), STV82X7_SetScartDigitalMute() and
STV82X7_SetScartDigitalUnMute() in order to control each mute.
System developer can use STV82X7_SetVolumeMode() in order to control volume mode.
System developer can use STV82X7_ScartOutBalance(), STV82X7_SetLSBalance(), STV82X7_SetSurroundBalance
and STV82X7_SetHPBalance() in order to control each balance.
System developer can use STV82X7_SetHPConfiguration() in order to control Head Phone.
System developer can use STV82X7_SetSubWoofer() in order to control Sub-Woofer.
System developer can use STV82X7_SetPinkNoiseGenerator() in order to generate Pink Noise.
System developer can use STV82X7_SetFMAMTimeOut() in order to set FM searching time out.
System developer can use STV82X7_SetNicamTimeOut() in order to set Nicam searching time out.
System developer can use STV82X7_SetZWTTimeOut() in order to set ZWT searching time out.
System developer can use STV82X7_SetScartDefaultPrescale(), STV82X7_SetFMAMDefaultPrescale() and
STV82X7_NicamDefaultPrescale() in order to set prescale value for each sound system
System developer can use STV82X7_SetEqualizerValue() in order to set equalizer value.
System developer can use STV82X7_ControlTurboSound() in order to set loudness.
System developer can use STV82X7_AutoVolumeCtrl() in order to control auto volume.
System developer can use STV82X7_GetNicamWeakSignal() in order to control weak signal for Nicam.
System developer can use STV82X7_SetNicamMAE() in order to control MAE for Nicam.
System developer can use STV82X7_SetNicamSearchMode() in order to control search mode for Nicam.
System developer can use STV82X7_SetOutput_RFConfig() in order to control SIF channel matrix.
System developer can use STV82X7_SetInOutput_ScartConfig() in order to control scart channel matrix.
System developer can use STV82X7_CheckElectricalShock() in order to execute refresh.
System developer can use STV82X7_ChannelChanged() in order to execute channel change.
System developer can use STV82X7_AutoSearch() in order to execute channel change.
System developer can use STV82X7_ForcedSoundSystem() in order to set special sound system.
System developer can use STV82X7_SetAGCValue() in order to set AGC Value.
System developer can use STV82X7_ForcedMono() in order to force to play Mono.
System developer can use STV82X7_ReturnToStereoFromMono() in order to return to Stereo.
System developer can use STV82X7_DualLanguageSelection() in order to set Language.
System developer can use STV82X7_GetNicamSoundMode() in order to get Nicam sound mode.
System developer can use STV82X7_GetSoundSignalState() in order to get FM sound mode.
System developer can use STV82X7_GetSoundSystem() in order to get sound system.
System developer can use STV82X7_SetSoundSystem() in order to set sound system.
System developer can use STV82X7_SetI2SInOut() and STV82X7_SetI2SOutputSignal() in order to contorl I2S in & output.
\par Dependencies
Patch.h
\par History
Version 1.0.0 : 06/May/2005 - Young OH - (ST Korea) \n
Version 1.0.1 : 20/May/2005 - Young OH - (ST Korea) \n
Modify : Return values.
STV82X7_InitRegister().
STV82X7_SetAGCValue().
Compile : Under visual C++
Version 1.0.2 : 30/May/2005 - Young OH - (ST Korea) \n
Add : Coefficients filter values for 27 KHz, 75 KHz and 100 KHz mode.
Coefficients filter values for MN system.
STV82X7_GetNicamWeakSignal()
STV82X7_SetNicamMAE()
STV82X7_SetI2SInOut()
STV82X7_SetI2SOutputSignal()
STV82X7_SetSRS_InputMode()
STV82X7_SetSRS_TRUBASS()
Modify : STV82X7_CheckElectricalShock()
--> Add IRQ3 for electrical shocking test.
STV82X7_InitRegister()
--> Add STV82X7_SetNicamMAE()
Version 1.0.3 : 03/Jun/2005 - Young OH - (ST Korea) \n
Add : STV82X7_SetScartVolumeMode()
STV82X7_SetNicamTimeOut()
STV82X7_SetZWTTimeOut()
STV82X7_SetAVDelay()
STV82X7_SetHPLeftVolume()
STV82X7_SetHPRightVolume()
STV82X7_SetDynamicBass()
STV82X7_SetHPConfiguration()
STV82X7_GetHPStatus()
STV82X7_SetPinkNoiseGenerator()
Modify : STV82X7_GetSoundSignalState()
STV82X7_ControlTurboSound()
STV82X7_AutoVolumeCtrl()
--> Add Ramp-Up algorism
Patch Data to Version 03
Version 1.0.4 : 08/Jun/2005 - Young OH - (ST Korea) \n
Add : STV82X7_SetSurroundBalance()
Modify : STV82X7_SetSoundSystem()
STV82X7_SetHPBalance()
STV82X7_SetLSBalance()
STV82X7_ScartOutBalance()
STV82X7_SetDefaultCoefficientValues()
Version 1.0.5 : 20/Jun/2005 - Young OH - (ST Korea) \n
Add : STV82X7_AMShiftDirection()
--> Improved field problem in France.
--> Definition
For Window S/W
--> Definition
V04 Patch
Modify : STV82X7_AutoSearch()
--> STV82X7_SetDefaultCoefficientValues() == > STV82X7_SetWideCoefficientValues()
STV82X7_SetNicamSearchMode();
--> Definition
STV82X7_SetOutput_RFConfig();
STV82X7_SetInOutput_ScartConfig();
STV82X7_PlayBeeperSound();
Version 1.0.6 : 12/Jul/2005 - Young OH - (ST Korea) \n
Add : STV82X7_SetScartDACMute()
STV82X7_SetScartDACUnMute()
STV82X7_SetSRSTRS_DolbyPro1_Effect()
--> New function
Modify : STV82X7_SetAVDelay()
STV82X7_SetSoundSystem()
STV82X7_SetFMAMDefaultPrescale()
--> always set AM prescale to AM_PRESCALING_SECAM_L.
STV82X7_SetPseudoEffect()
--> not directly read register, call STV82X7_SetSRS_InputMode()'s function.
STV82X7_SetSRSEffect()
--> change function name : STV82X7_SetSRSWOW_Effect()
STV82X7_SetI2SInOut()
--> change function name : STV82X7_SetI2SOutput()
STV82X7_WaitUpdateCoefficient()
Delete : STV82X7_SetSRSGain()
--> no more need, STV82X7_SetSRS_InputMode()'s function sets SRS-Gain in stead of STV82X7_SetSRSGain().
Version 1.0.3(China) : 10/Oct/2005 - Steven CHEN - (ST Shenzhen) \n
Add : STV82X7_I2CFieldGetValue()
STV82X7_I2CFieldUpdate()
STV82X7_MuteSet()
STV82X7_VolumeSet()
STV82X7_BalanceSet()
STV82X7_SoundStandardGet()
DVAUD_LanguageSet()
STV82X7_ConfigurationChange();
STV82X7_2Chs_I2SAutoLock();
--> New function
Modify :
STV82X7_UpdatePatchData()
-->Simplify the Patch version control.
STV82X7_I2CDataMaskWrite()
-->Improved the i2c data mask write function.
Removed the I2C error return check.
*/
/*!
\defgroup STV82X7 STV82X7
*/
#ifndef _STV82X7_H
#define _STV82X7_H
//#define SUPPROT_I2S_FUNCTION
/*PC_DEBUG_MODE: PC Visual C++ debug mode. If defined PC_DEBUG_MODE, "stdafx.h"
must be included in other DVAUD\*.cpp files should be enabled.*/
//#define PC_DEBUG_MODE
#define kSTV82X7_Address 0x80
/*!
\ingroup STV82X7
Specifies coefficient filter values for BG, I, DK.
*/
#define _75KHZ_COEFFICIENT_FILTER_USED_
/*!
\ingroup STV82X7
Specifies coefficient filter values for MN.
*/
#define _MN_27KHZ_COEFFICIENT_FILTER_USED_
//*******************************************************
// Register Define
//*******************************************************
/*STV82X7 CUT2 Register defines----------------------------*/
//-- IC General Control ---------------------------------
#define kCUT_IDReg 0x00
#define kRESETReg 0x01
#define kI2S_CTRLReg 0x04
#define kI2S_STATReg 0x05
#define kI2S_SYNC_OFFSETReg 0x06
//--- Clocking 1 ---------------------------------------
#define kSYS_CONFIGReg 0x07
#define kFS1_DIVReg 0x08
#define kFS1_MDReg 0x09
#define kFS1_PE_HReg 0x0A
#define kFS1_PE_LReg 0x0B
//--- Demodulator --------------------------------------
#define kDEMOD_CTRLReg 0x0C
#define kDEMOD_STATReg 0x0D
#define kAGC_CTRLReg 0x0E
#define kAGC_GAINReg 0x0F
#define kDC_ERR_IFReg 0x10
//--- Demodulator Channel 1 ----------------------------
#define kCARFQ1HReg 0x12
#define kCARFQ1MReg 0x13
#define kCARFQ1LReg 0x14
#define kFIR1C0Reg 0x15
#define kFIR1C1Reg 0x16
#define kFIR1C2Reg 0x17
#define kFIR1C3Reg 0x18
#define kFIR1C4Reg 0x19
#define kFIR1C5Reg 0x1A
#define kFIR1C6Reg 0x1B
#define kFIR1C7Reg 0x1C
#define kACOEFF1Reg 0x1D
#define kBCOEFF1Reg 0x1E
#define kCRF1Reg 0x1F
#define kCETH1Reg 0x20
#define kSQTH1Reg 0x21
#define kCAROFFSET1Reg 0x22
//--- Demodulator Channel 2 ----------------------------
#define kIAGCRReg 0x25
#define kIAGCCReg 0x26
#define kIAGCSReg 0x27
#define kCARFQ2HReg 0x28
#define kCARFQ2MReg 0x29
#define kCARFQ2LReg 0x2A
#define kFIR2C0Reg 0x2B
#define kFIR2C1Reg 0x2C
#define kFIR2C2Reg 0x2D
#define kFIR2C3Reg 0x2E
#define kFIR2C4Reg 0x2F
#define kFIR2C5Reg 0x30
#define kFIR2C6Reg 0x31
#define kFIR2C7Reg 0x32
#define kACOEFF2Reg 0x33
#define kBCOEFF2Reg 0x34
#define kSCOEFFReg 0x35
#define kSRFReg 0x36
#define kCRF2Reg 0x37
#define kCETH2Reg 0x38
#define kSQTH2Reg 0x39
#define kCAROFFSET2Reg 0x3A
//--- Nicam --------------------------------------------
#define kNICAM_CTRLReg 0x3D
#define kNICAM_BERReg 0x3E
#define kNICAM_STATReg 0x3F
//--- Stereo FM (kzweiton00) ------------------------------
#define kZWT_CTRLReg 0x40
#define kZWT_TIMEReg 0x41
#define kZWT_STATReg 0x42
//--- Analog Control -----------------------------------
#define kADC_CTRLReg 0x56
#define kSCART1_2_OUTPUT_CTRLReg 0x57
#define kSCART3_OUTPUT_CTRLReg 0x58
//--- Cloc#define king 2 ---------------------------------------
#define kFS2_DIVReg 0x5A
#define kFS2_MDReg 0x5B
#define kFS2_PE_HReg 0x5C
#define kFS2_PE_LReg 0x5D
//--- DSP Control --------------------------------------
#define kHOST_CMDReg 0x80
#define kIRQ_STATUSReg 0x81
#define kSOFT_VERSIONReg 0x82
#define kONCHIP_ALGOSReg 0x83
#define kDSP_STATUSReg 0x84
#define kDSP_RUNReg 0x85
#define kI2S_IN_CONFIGReg 0x86
#define kI2S_IN_SHIFT_RIGHTReg 0x87
#define kI2S_IN_MASKReg 0x88
#define kAV_DELAYReg 0x89
//--- Automatic Standard Recognition System ------------
#define kAUTOSTD_CTRLReg 0x8A
#define kAUTOSTD_STANDARD_DETECTReg 0x8B
#define kAUTOSTD_STEREO_DETECTReg 0x8C
#define kAUTOSTD_TIMERSReg 0x8D
#define kAUTOSTD_STATUSReg 0x8E
//--- Audio Preprocessing & Selection ------------------
#define kDC_REMOVAL_INPUTReg 0x90
#define kDC_REMOVAL_LReg 0x91
#define kDC_REMOVAL_RReg 0x92
#define kPRESCALE_SELECTReg 0x93
#define kPRESCALE_AMReg 0x94
#define kPRESCALE_FMReg 0x95
#define kPRESCALE_NICAMReg 0x96
#define kPRESCALE_SCARTReg 0x97
#define kPRESCALE_I2S_1Reg 0x98
#define kPRESCALE_I2S_2Reg 0x99
#define kPRESCALE_I2S_3Reg 0x9A
#define kDEEMPHASIS_DEMATRIXReg 0x9B
#define kPEAK_DET_INPUTReg 0x9D
#define kPEAK_DET_LReg 0x9E
#define kPEAK_DET_RReg 0x9F
#define kPEAK_DET_L_RReg 0xA0
//--- Matrixing ----------------------------------------
#define kAUDIO_MATRIX_INPUTReg 0xA2
#define kAUDIO_MATRIX_CONFIGReg 0xA3
#define kAUDIO_MATRIX_LANGUAGEReg 0xA4
#define kDOWNMIX_IN_MODEReg 0xA6
#define kDOWNMIX_OUT_MODEReg 0xA7
#define kDOWNMIX_DUAL_MODEReg 0xA8
#define kDOWNMIX_CONFIGReg 0xA9
//--- Audio Processing ---------------------------------
#define kPRO_LOGIC_CONTROLReg 0xAA
#define kPCM_SRND_DELAYReg 0xAB
#define kPCM_CENTER_DELAYReg 0xAC
#define kPRO_LOGIC2_CONFIGReg 0xAD
#define kPRO_LOGIC2_DIMENSIONReg 0xAE
#define kPRO_LOGIC2_LEVELReg 0xAF
#define kNOISE_GENERATORReg 0xB0
#define kTRUSRNDXT_CONTROLReg 0xB1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -