📄 halgft808.c
字号:
#include "utiltypedef.h"
#include "common.h"
#include "halGFT808.h"
#if(FM_TRANS_MODULE == FM_TRANS_GFT808)
#define DELAY(x) DelayUs(x)
static void halGFTSendData(BYTE byData)
{
BYTE i;
GFT_DATAOUT();
for(i=0; i<8; i++)
{
if(byData & 0x01)
GFT_Data = 1;
else
GFT_Data = 0;
GFT_Clk = 0; //low
byData >>= 1;
DELAY(WAIT_TIME);
GFT_Clk = 1; //high, the data is clocked in on the rising edge of clock
DELAY(WAIT_TIME);
}
}
/*-----------------------------------------------------------------------------------------*/
static BYTE data s_FMIdx;
void halFMSet(BYTE byChIdx)
{
WORD wTransValue = 0x0800; //Test mode bit: 0 0 ; Phase Detector bit: 0 0 ; MPX bit : 1
s_FMIdx = byChIdx;
UartOutText("-I-: FM Idx 0x");UartOutValue(byChIdx, 2);
wTransValue |= FM_FREQ_BASE + byChIdx;
#ifndef FM_NULL_TEST
GFT_ENABLE();
GFT_EN = 1;//enable chip
halGFTSendData((BYTE)wTransValue);
halGFTSendData((BYTE)(wTransValue >> 8));
GFT_EN = 0;//at the falling edge of EN, stored data is latched.
#endif
return;
}
void halFMUp(void) //byChIdx: 0-> 203
{
s_FMIdx++;
if(s_FMIdx > FM_CHIDX_MAX){//Over Max
s_FMIdx = 0;
}
halFMSet(s_FMIdx);
return;
}
void halFMDown(void) //byChIdx: 0-> 203
{
if(s_FMIdx == 0){//Minmal
s_FMIdx = FM_CHIDX_MAX;//turn around
}else
s_FMIdx--;
halFMSet(s_FMIdx);
return;
}
WORD halFMGetFreq(void)
{
// FMDigital = FM_FREQ_BASE+FMLevel;
WORD wTmp = FM_FREQ_BASE + (WORD)s_FMIdx;
//UartOutText("-I-: halFMGetFreq 0x");UartOutValue(wTmp, 4);
return wTmp;
}
BYTE halFMGetIdx(void)
{
//FMDigital = FM_FREQ_BASE+FMLevel;
//WORD wTmp = FM_FREQ_BASE + s_FMIdx;
return s_FMIdx;
}
BYTE halFMFreq2Idx(WORD wFreq)
{
WORD wTmp = wFreq;
//Checking parameter validation
if((wFreq>=FM_FREQ_BASE) && (wFreq<=FM_FREQ_MAX)){
wTmp = wTmp - FM_FREQ_BASE;
}else{
wTmp = FM_CHIDX_INVALID;
}
return (BYTE)wTmp;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -