📄 lc72130.c
字号:
if(MonoStereo)
{
In2_Cdata[0] |= 0x08; //io2 output low level
}
else
{
In2_Cdata[0] &= 0xf7; //io2 output high level
}
}
ELSE
IFDEF (Receiver_Macro.bKWANGSUNG_MV011)
if(gps->bAmFm)
{
In2_Cdata[0] |= 0x20; //bo2 output low level
}
else
{
if(MonoStereo)
{
In2_Cdata[0] |= 0x20; //bo2 output low level
}
else
{
In2_Cdata[0] &= 0xdf; //bo2 output high level
}
}
ELSE
if(gps->bAmFm)
{
In2_Cdata[1] |= BO5_MONO;
}
else
{
if(MonoStereo)
{
In2_Cdata[1] |= BO5_MONO;
}
else
{
In2_Cdata[1] &= 0xfe;
}
}
ENDIF
ENDIF
ll_send_cmd_to_radio(IN2_CMD,In2_Cdata[0],In2_Cdata[1],In2_Cdata[2]);
}
/////////////////////////////////////////////////////////////////////////////////////////////////
// void ll_set_fmam() -
//
// Input:
// None
//
// Output:
// None
//
// Desc :
// Function switch audio FM and AM output. gcompo frequency should be same as gps frequency
// Note: Frequency should been stored when it take effect
//
///////////////////////////////////////////////////////////////////////////////////////////////////
void ll_set_fmam()
{
IFDEF (Receiver_Macro.bMATSUSHITA_TM08)
if (gps->bAmFm)
{
In1_Cdata = AMREF_FREQ | AMINL | COUNTER_RESET | CRYSTAL_FREQ;
In1_Pdata = ((gcompo.CurrentAMfreq+450)/AMFreq_DIVIDER)<< 4;
In2_Cdata[0] = 0x03; //io2 & io1 output mode
if(!gcompo.bIsAudioMuted)
In2_Cdata[0] |= 0x80; //bo4 mute or unmute
// In2_Cdata[0] |= 0x40; //b03 fm/am sd sensitivity
// In2_Cdata[0] |= 0x20; //bo2 nc
In2_Cdata[0] |= 0x10; //bo1 fm/am switch,1 = fm,0 = am
In2_Cdata[0] |= 0x08; //io2 mono/stereo,mono mode
// In2_Cdata[0] |= 0x04; //io1 =0,fm mode
In2_Cdata[1] = DEAD_ZONE | PHASE_ERR_WIDTH | DOC_MODE;
In2_Cdata[2] = IFS_VALUE | MEASURE_TIME;
}
else
{
In1_Cdata = FMREF_FREQ | FMIN | COUNTER_RESET | CRYSTAL_FREQ;
In1_Pdata = (gcompo.CurrentFMfreq+1070)/FMFreq_DIVIDER;
In2_Cdata[0] = 0x03; //io2 & io1 output mode
if(!gcompo.bIsAudioMuted)
In2_Cdata[0] |= 0x80; //bo4 mute or unmute
// In2_Cdata[0] |= 0x40; //b03 fm/am sd sensitivity
// In2_Cdata[0] |= 0x20; //bo2 nc
// In2_Cdata[0] |= 0x10; //bo1 fm/am switch,1 = fm
if(gcompo.bMonoStereo)
In2_Cdata[0] |= 0x08; //io2 mono/stereo,1 = stereo
In2_Cdata[0] |= 0x04; //io1 =0,fm mode
In2_Cdata[1] = DEAD_ZONE | PHASE_ERR_WIDTH | DOC_MODE;
In2_Cdata[2] = IFS_VALUE | MEASURE_TIME;
}
ELSE
IFDEF (Receiver_Macro.bKWANGSUNG_MV011)
if (gps->bAmFm)
{
In1_Cdata = AMREF_FREQ | AMINL | COUNTER_RESET | CRYSTAL_FREQ;
In1_Pdata = ((gcompo.CurrentAMfreq+450)/AMFreq_DIVIDER)<< 4;
In2_Cdata[0] = 0x03; //io2 & io1 output mode
if(!gcompo.bIsAudioMuted)
In2_Cdata[0] |= 0x80; //bo4 mute or unmute
In2_Cdata[0] |= 0x40; //b03 fm/am switch 0 = am
In2_Cdata[0] |= 0x20; //bo2 mono/stereo,0 = mono mode
// In2_Cdata[0] |= 0x10; //bo1 nc
// In2_Cdata[0] |= 0x08; //io2 fm mode,1 = am mode
// In2_Cdata[0] |= 0x04; //io1 nc
In2_Cdata[1] = DEAD_ZONE | PHASE_ERR_WIDTH | DOC_MODE;
In2_Cdata[2] = IFS_VALUE | MEASURE_TIME;
}
else
{
In1_Cdata = FMREF_FREQ | FMIN | COUNTER_RESET | CRYSTAL_FREQ;
In1_Pdata = (gcompo.CurrentFMfreq+1070)/FMFreq_DIVIDER;
In2_Cdata[0] = 0x03; //io2 & io1 output mode
if(!gcompo.bIsAudioMuted)
In2_Cdata[0] |= 0x80; //bo4 mute or unmute
// In2_Cdata[0] |= 0x40; //b03 fm/am switch 1 = fm
if(gcompo.bMonoStereo)
In2_Cdata[0] |= 0x20; //bo2 mono/stereo
// In2_Cdata[0] |= 0x10; //bo1 nc
In2_Cdata[0] |= 0x08; //io2 fm mode,0 = fm mode
// In2_Cdata[0] |= 0x04; //io1 nc
In2_Cdata[1] = DEAD_ZONE | PHASE_ERR_WIDTH | DOC_MODE;
In2_Cdata[2] = IFS_VALUE | MEASURE_TIME;
}
ELSE
if (gps->bAmFm)
{
In1_Cdata = AMREF_FREQ | AMINL | COUNTER_RESET | CRYSTAL_FREQ;
In1_Pdata = ((gcompo.CurrentAMfreq+450)/AMFreq_DIVIDER)<< 4;
In2_Cdata[0] = 0x10;
if(!gcompo.bIsAudioMuted)
In2_Cdata[0] |= 0x20;
In2_Cdata[1] = DEAD_ZONE | PHASE_ERR_WIDTH | DOC_MODE | BO5_MONO;
In2_Cdata[2] = IFS_VALUE | MEASURE_TIME;
}
else
{
In1_Cdata = FMREF_FREQ | FMIN | COUNTER_RESET | CRYSTAL_FREQ;
In1_Pdata = (gcompo.CurrentFMfreq+1070)/FMFreq_DIVIDER;
In2_Cdata[0] = 0x80;
if(!gcompo.bIsAudioMuted)
In2_Cdata[0] |= 0x20;
In2_Cdata[1] = DEAD_ZONE | PHASE_ERR_WIDTH | DOC_MODE;
if(gcompo.bMonoStereo)
In2_Cdata[1] |= BO5_MONO;
In2_Cdata[2] = IFS_VALUE | MEASURE_TIME;
}
ENDIF
ENDIF
ll_send_cmd_to_radio(IN1_CMD,(unsigned char) (In1_Pdata),(unsigned char)((In1_Pdata) >> 8),In1_Cdata);
ll_send_cmd_to_radio(IN2_CMD,In2_Cdata[0],In2_Cdata[1],In2_Cdata[2]);
}
/////////////////////////////////////////////////////////////////////////////////////////////////
// void ll_radio_init() -
//
// Input:
// None
//
// Output:
// None
//
// Desc :
// Config radio control pin and set radio work mode
//
///////////////////////////////////////////////////////////////////////////////////////////////////
void ll_radio_init(void)
{
//Config radio parameters
IFDEF (Receiver_Macro.bTUNER_FOR_AMERICA)
FMFreq_DIVIDER = 10;
FMFreq_STEP = 10;
ELSE
FMFreq_DIVIDER = 5;
FMFreq_STEP = 5;
ENDIF
IFDEF (Receiver_Macro.bTUNER_FOR_AMERICA)
FMREF_FREQ = Rfreq_050KHZ;
ELSE
FMREF_FREQ = Rfreq_025KHZ;
ENDIF
IFDEF (Receiver_Macro.bMATSUSHITA_TM08)
CRYSTAL_FREQ = CRYSTAL_72MHZ;
ELSE
IFDEF (Receiver_Macro.bKWANGSUNG_MV011)
CRYSTAL_FREQ = CRYSTAL_72MHZ;
ELSE
CRYSTAL_FREQ = CRYSTAL_45MHZ;
ENDIF
ENDIF
set_din_out();
set_dout_in();
set_radio_clk_out();
set_radio_stb_out();
set_radio_SD_in();
set_radio_ST_in();
delay_us(50);
ll_set_fmam();
ll_mute_radio(FALSE,FALSE);
}
/////////////////////////////////////////////////////////////////////////////////////////////////
// void ll_change_freq_value() -
//
// Input:
// None
//
// Output:
// None
//
// Desc :
// Function change frequency. Increase or decrease frequency step by step or continuously
//
///////////////////////////////////////////////////////////////////////////////////////////////////
void ll_change_freq_value(void)
{
if(gps->bAmFm)
In1_Pdata =((gcompo.CurrentAMfreq+450)/AMFreq_DIVIDER)<< 4;
else
In1_Pdata = (gcompo.CurrentFMfreq+1070)/FMFreq_DIVIDER;
ll_send_cmd_to_radio(IN1_CMD,(unsigned char) (In1_Pdata),(unsigned char)((In1_Pdata) >> 8),In1_Cdata);
}
/////////////////////////////////////////////////////////////////////////////////////////////////
// void ll_select_radio_station() -
//
// Input:
// None
//
// Output:
// None
//
// Desc :
// This function select radio station.
//
/////////////////////////////////////////////////////////////////////////////////////////////////
void ll_select_radio_station()
{
if(gps->bAmFm)
In1_Pdata =((gcompo.CurrentAMfreq+450)/AMFreq_DIVIDER)<<4;
else
In1_Pdata = (gcompo.CurrentFMfreq+1070)/FMFreq_DIVIDER;
In1_Cdata &= 0xfb;
ll_send_cmd_to_radio(IN1_CMD,(unsigned char) (In1_Pdata),(unsigned char)((In1_Pdata) >> 8),In1_Cdata);
}
///////////////////////////////////////////////////////////////////////////////
//void ll_countIF_start()
//
//Input:
// None
//Output:
// None
//Desc:
// send IF counter start command to tuner
///////////////////////////////////////////////////////////////////////////////
void ll_countIF_start(void)
{
// In1_Cdata &= 0xfb;
// ll_send_cmd_to_radio(IN1_CMD,(unsigned char) (In1_Pdata),(unsigned char)((In1_Pdata) >> 8),In1_Cdata);
// delay_us(5000);
if(gps->bAmFm)
In1_Pdata =((gcompo.CurrentAMfreq+450)/AMFreq_DIVIDER)<< 4;
else
In1_Pdata = (gcompo.CurrentFMfreq+1070)/FMFreq_DIVIDER;
In1_Cdata |= COUNTER_START;
ll_send_cmd_to_radio(IN1_CMD,(unsigned char) (In1_Pdata),(unsigned char)((In1_Pdata) >> 8),In1_Cdata);
}
///////////////////////////////////////////////////////////////////////////////
//void ll_check_IFcounter()
//
//Input:
// None
//Output:
// if IF OK return 1 else return 0
//Desc:
// read out the IF counter and judge
///////////////////////////////////////////////////////////////////////////////
BOOL ll_check_IFcounter(void)
{
DWORD Ifcount;
ll_read_data_from_radio(pRadioData);
ll_read_data_from_radio(pRadioData);
In1_Cdata &= 0xfb; //counter stop
ll_send_cmd_to_radio(IN1_CMD,(unsigned char) (In1_Pdata),(unsigned char)((In1_Pdata) >> 8),In1_Cdata);
Ifcount = ((((DWORD)lc_dataout[0]) <<16) | (((DWORD)lc_dataout[1]) <<8) | (DWORD)lc_dataout[2]) & 0xfffff;
// if ( (lc_dataout[0] & 0x10) == 0x10)
if(1)
{
if(gps->bAmFm)
{
if((Ifcount >AMIF_CENTER - AMIF_RANGE) && (Ifcount < AMIF_CENTER + AMIF_RANGE))
return 1;
else
return 0;
}
else
{
if((Ifcount >FMIF_CENTER - FMIF_RANGE) && (Ifcount < FMIF_CENTER + FMIF_RANGE))
return 1;
else
return 0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -