📄 tuner_xuguang_js-6b111.c
字号:
#include "tuner_XuGuang_JS-6B111.h"
#include "common.h"
#include "System.h"
#include "TwoWire.h"
#include "Tuner.h"
#ifdef TV
#if (TUNER_AFC_CONTROL==ON)
BYTE Tuner_ReadStatus (void)
{
return ( TunerReadByte(/*TUNER_ADB*/0xC2) /*& 0x7*/ );
}
#endif
/* --------------------------------------------------------------------------
Function : Tuner_WriteFreq
Prupose : Write channel frequency and control command to tuner
Arguments : Bool afUpDn 0:Channel Up / 1:Channel Down
Returns : -- -- --
External : -- -- --
Notes :
-------------------------------------------------------------------------- */
void Tuner_WriteFreq(uDWORD ChFreq)
{
#if 1
uCHAR k;
I2CWriteByte(0x86, 0x00,0xd6);
I2CWriteByte(0x86, 0x01,0x70);
I2CWriteByte(0x86, 0x02,/*m_cSoundSystem*/0x0e);
ChFreq&=0x7fff;
if(ChFreq < VLMAX)
k=BAND_VL;
else if(ChFreq > VHMAX)
k=BAND_UHF;
else
k=BAND_VH;
TunerWriteByte(0xC6,(uCHAR)(ChFreq>>8),(uCHAR)(ChFreq&0x00FF),k);
#else
BYTE bBandPort;
BYTE bTemp[4];
//------- Check band type
if( ChFreq >= TUNER_H_BAND_MIN_FREQ ) // Check on the High band range
bBandPort = TUNER_BS_H_BAND ;
else if( ChFreq >= TUNER_M_BAND_MIN_FREQ ) // Check on the Mid band range
bBandPort = TUNER_BS_M_BAND ;
else // Check on the Low band range
bBandPort = TUNER_BS_L_BAND ;
bTemp[0] = mHIBYTE(ChFreq);
bTemp[1] = mLOBYTE(ChFreq);
bTemp[2] = TUNER_CB1;
bTemp[3] = bBandPort;
TunerWriteByte1(TUNER_ADB,(uCHAR)bTemp[0],(uCHAR)bTemp[1],bTemp[2],bTemp[3]);
#endif
}
/* --------------------------------------------------------------------------
Function : Tuner_AFC_Control
Prupose : Tuner AFC control function
Arguments : -- -- --
Returns : Bool -- Is fine tune success
External : -- -- --
Notes :
-------------------------------------------------------------------------- */
uWORD Tuner_AFC_Control(uDWORD ChFreq)
{
#if (TUNER_AFC_CONTROL==ON)
WORD OrignChFreq;
BYTE lbAFC_Cnt;
BYTE cTemp, cTemp1, i;
// ------------ Save frequency
OrignChFreq = ChFreq;
twdDelay(100);//150 //200 //250 //450 //2000
// ------------ Fine tune control
for (lbAFC_Cnt=0; lbAFC_Cnt < 7; lbAFC_Cnt++)
{
//twdDelay(30);
for(i=0;i<10;i++){
twdDelay(20); //Delay can't too short!
//m_cBuff[0]=Tuner_ReadStatus();
cTemp=Tuner_ReadStatus();
}
//cTemp = m_cBuff[0];
if(cTemp&0x40)//Lock
{
cTemp1 = cTemp & 0x07;
switch( /*Tuner_ReadStatus()*/ cTemp1)
{
case 4: // -125.0 K
ChFreq += TUNER_FINETUNE_HIGH;
break;
case 3: // - 62.5 K
ChFreq += TUNER_FINETUNE_MID;
break;
//default:
case 2: // Center freqency
return ChFreq;
case 1: // + 62.5 K
ChFreq -= TUNER_FINETUNE_MID;
break;
case 0: // +125.0 K
ChFreq -= TUNER_FINETUNE_HIGH;
break;
}
Tuner_WriteFreq(ChFreq);
//twdDelay(100); //300 //1000
}else{
//break;
return FAILURE;
}
}
// ------------ Revocer frequency if AFC fail
Tuner_WriteFreq(OrignChFreq);
return FAILURE;
#else
return ChFreq;
#endif
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -