|
楼主 |
发表于 2017-11-13 22:05:30
|
显示全部楼层
******************************************************/
void si47xxAMRX_Initialize(void)
{
u8 i;
u8 cmd[2];
u8 rsp[1];
if(fRtReceived)
Lcd_ClearRect(RDS_PI_XADDR,RDS_PI_YADDR,101,3); //清显示
else
Lcd_ClearRect(RDS_PI_XADDR,RDS_PI_YADDR,101,2);
fRtReceived = 0; //
// power up the device, and then perform the,initial configuration.
si47xx_PowerUp(AM_WORKMODE,AM_POWERUP_PATCHED); //power_up切换到AM模式
si47xx_set_HardMute(0x03); //mute on,bit1,bit0 = 1,mute off
PAMP_EN; //开AMP
#if PATCH_AM_MAX_AVC_ENABLE //
si47xx_AM_AUTO_VOLUME(AmMaxAVC);
#endif
si47xx_AM_FRONTEND_AGC_CONTROL(AM_FRONTEND_AGC_CONTROL_Default); //ant default
// Configure all other registersroperty 0x3402. AM_SEEK_FREQ_SPACING
si47xx_AM_SEEK_FREQ_SPACING((u16)AmSpacing); //参考频率
// set am DeemphasisreEmproperty 0x3100. AM_DEEMPHASIS
si47xx_AM_DeemPhasis((u16)AmDeemp); //1:0x3100去加重
// set the band range
si47xx_AM_SEEK_BAND_BOTTOM((u16)AmSeekBottem); //搜索下限
si47xx_AM_SEEK_BAND_TOP((u16)AmSeekTop); //搜索上限
//set the am channel filter bandwidth:2k,3k,4k,6k
si47xx_AM_Filter(AmFilter); //2:0x3102, 波段带宽
//set Refclk frequencroperty 0x0201. REFCLK_FREQ
if(RCLK)
si47xx_set_REFCLK_FREQ(32700+RCLK); //参考时钟
else
si47xx_set_REFCLK_FREQ(00);
//SET REFCLK frequenc prescale
si47xx_set_REFCLK_PRESCALE(REFCLKPRESCALE); //设置RCLK输入分频器值
si47xx_AM_SOFT_MUTE_RATE(AmSMuteRate); //0x3300
si47xx_AM_MUTE_SNR_THRESHOLD(AmSMuteSNR); //0x3303
si47xx_AM_MUTE_MAX_ATTENUATION(AmSMuteAtten); //0x3302, 设置最大衰减在软静音(dB),设置为0禁用软静音,默认值是8dB
si47xx_AM_SOFT_MUTE_SLOP( AmSMuteSlope); //0x3301, 设置AM软静音斜率,默认值是1坡度
//set seek tune SNR and RSSI: 设定自动搜索时的SNR RSSI阀值
si47xx_AM_SEEK_TUNE_SNR_THRESHOLD(AmSeekSNR); //搜索时SNR阀值
si47xx_AM_SEEK_TUNE_RSSI_THRESHOLD(00); //搜索时RSSI阀值
//set current tune frequence
if( AmSpacing == 9) //步进频率,参考频率9KHz
AmBand -= (AmBand-522)%9; //Initial the AM band to 9k band
else if( AmSpacing == 10)
AmBand -= AmBand%10 ; //Initial the AM band to 10k band
si47xxAMRX_tune(AmBand);
si47xx_AM_SEEK_TUNE_RSSI_THRESHOLD(AmSeekRSSI); //搜索时RSSI阀值
if(Vol&0x0F)
{
if(Vol>8)
Vol = 8;
si47xx_set_Volume(0); //set the volume
si47xx_set_HardMute(0);
for(i=1;i<=T_Volume[Vol];i++)
si47xx_set_Volume(i); //set the volume
}
Lcd_DispVol();
cmd[0] = GPIO_SET; //切换外天线到AM,SW
cmd[1] = GPIO_GPO1_Hi; //GPO1 = 1,外ANT切换到AM/SW
si47xx_command(2, cmd, 1, rsp); //&rsp送出2字节,返回1byte状态字
} |
|