📄 jack.c
字号:
SET_GT0(1); //GT0=1; //64MS
SET_GT1(1); //GT1=1;
SET_CTE(0); //CTE=0;
mode2_send_24bit_data();
mode1_send_24bit_data();
dly_tsk(20);
do// check ul bit
{
looptime ++;
if( looptime > 20 )
break; // timeout
ldataup = 0;
ldataup = read_24bit_outup_data();
}while(!(ldataup&0x00100000)); // pll is locked?
looptime = 0;
/************************/
/****************************/
dly_tsk(2);
// radio station is exist?
//if (ldataup&0x400000)
//if(c0&0x40) continue;
if( TUNER_READ_DA ) continue;
dly_tsk(2);
SET_CTE(1);//CTE=1;
mode2_send_24bit_data();
mode1_send_24bit_data();
dly_tsk(100);
//NOP;
do // check if counter is over?
{
looptime++;
if( looptime > 10 ) break; // timeout
}while(TUNER_READ_DA );
looptime = 0;
dly_tsk(2);
ldataup=read_24bit_outup_data();
SET_CTE(0);//CTE=0;
if((ldataup & 0x0fffff)>=0x6fc0 && (ldataup & 0x0fffff)<=0x7140)// 0x7080->450KHZ +/- 3k
{
//sensitivity
SET_IFS(1); //IFS=1;
break;
}
#endif
}
}
autosearch_flag=FALSE;
}
void Fmautosearch( BYTE autosearch_status )
{
BYTE looptime=0;
UINT32 ldataup;
//FM_TEMP_DATA = 87800;
if(am_fm_flag == 4)//fm-->am_fm_flag = 0;
{
while(1) //autosearch must rotation for ever
{
if( autosearch_status)
{
//if(autosearch_flag!=1) //up
// return;
FM_TEMP_DATA += 2; //gap = 2. 100K STEP
FM_TEMP_SHOW_DATA += 100; //gap = 2. 100K STEP
FM_REAL_DATA = FM_TEMP_DATA;
SET_IFSW(0); //IFSW, 0: mute, 1: receive mode
//FM_FREQ_MIN 0x7b2 //87.8MHZ, ref 25khz
//FM_FREQ_MAX 0x942 //108Mhz, ref 25khz
if(FM_REAL_DATA>FM_FREQ_MAX/*108000*/) //am max
{
FM_REAL_DATA=FM_FREQ_MAX/*108000*/;
FM_TEMP_SHOW_DATA = 108000;
break;
}
}
else //if( !autosearch_status )
{
//if(autosearch_flag!=2) //down
// return;
FM_TEMP_DATA -= 2; //gap = 2. 100K STEP
FM_TEMP_SHOW_DATA -= 100; //gap = 2. 100K STEP
FM_REAL_DATA=FM_TEMP_DATA;
SET_IFSW(0); //IFSW=1; //mute
if(FM_TEMP_DATA<FM_FREQ_MIN/*87800*/)//Am min
{
FM_TEMP_DATA=FM_FREQ_MIN/*87800*/;
FM_TEMP_SHOW_DATA = 87800;
break;
}
}
//FM_SHOW_DATA = FM_TEMP_SHOW_DATA;
//FM_SHOW_DATA = FM_REAL_DATA;
Test_curr(1,(BYTE)(FM_TEMP_SHOW_DATA/1000),(BYTE) ((FM_TEMP_SHOW_DATA%1000)/100),0);
#if 0
//tuner.ambak=in1_data12;//in1_data12=tuner.ambak;
SET_R0(1);// REF CLOCK: 3KHZ
SET_R1(1);
SET_R2(0);
SET_R3(0);
SET_GT0(1); //GT0=1; //64MS
SET_GT1(1); //GT1=1;
SET_CTE(0); //CTE=0;
mode2_send_24bit_data();
mode1_send_24bit_data();
dly_tsk(20);
do// check ul bit
{
looptime ++;
if( looptime > 20 )
break; // timeout
ldataup = 0;
ldataup = read_24bit_outup_data();
}while(!(ldataup&0x00100000)); // pll is locked?
looptime = 0;
/************************/
/****************************/
dly_tsk(2);
// radio station is exist?
//if (ldataup&0x400000)
//if(c0&0x40) continue;
if( TUNER_READ_DA ) continue;
dly_tsk(2);
SET_CTE(1);//CTE=1;
mode2_send_24bit_data();
mode1_send_24bit_data();
dly_tsk(100);
//NOP;
do // check if counter is over?
{
looptime++;
if( looptime > 10 ) break; // timeout
}while(TUNER_READ_DA );
looptime = 0;
dly_tsk(2);
ldataup=read_24bit_outup_data();
SET_CTE(0);//CTE=0;
if( ( (ldataup & 0x0fffff)>=0xa7200 ) && ( (ldataup & 0x0fffff)<=0xa7400 ))// a7300->10.7MHZ +/- 4k(40K)
{
//sensitivity
SET_IFS(1); //IFS=1;
break;
}
#endif
}
}
autosearch_flag=FALSE;
}
void Amstepsearch( BYTE step_up_flag )
{
BYTE looptime=0;
UINT32 ldataup;
if(am_fm_flag == 3)//am
{
if( step_up_flag)
{
//if(autosearch_flag!=1) //up
// return;
AM_TEMP_DATA += 0x30; // 3*3k step
AM_REAL_DATA = AM_TEMP_DATA;
//SET_IFSW(0); //IFSW, 0: mute, 1: receive mode
//AM_FREQ_MAX 0x2b20 // 1620k
//AM_FREQ_MIN 0x1440 // 522k
if(AM_REAL_DATA>AM_FREQ_MAX) //am max
{
AM_REAL_DATA=AM_FREQ_MAX;//AM_FREQ_MIN;
}
}
else //if( autosearch_status)
{
//if(autosearch_flag!=2) //down
// return;
AM_TEMP_DATA -= 0x30; //gap = 3; 3*3K step
AM_REAL_DATA = AM_TEMP_DATA;
//SET_IFSW(0); //IFSW=1; //mute
if(AM_REAL_DATA<AM_FREQ_MIN)//Am min
{
AM_REAL_DATA=AM_FREQ_MIN;
}
}
mode1_send_data = AM_REAL_DATA;
SET_R0(0);// REF CLOCK: 3KHZ
SET_R1(0);
SET_R2(1);
SET_R3(1);
SET_GT0(1); //GT0=1; //64MS
SET_GT1(1); //GT1=1;
SET_CTE(0); //CTE=0;
mode2_send_24bit_data();
mode1_send_24bit_data();
#if 0
I2cDelay(2);
I2cDelay(2);
SET_CTE(1);//CTE=1;
mode2_send_24bit_data();
mode1_send_24bit_data();
I2cDelay(100);
I2cDelay(2);
ldataup=read_24bit_outup_data();
SET_CTE(0);//CTE=0;
if((ldataup & 0x0fffff)>=0x6fc0 && (ldataup & 0x0fffff)<=0x7140)// 0x7080->450KHZ +/- 3k
{
//sensitivity
SET_IFS(1); //IFS=1;
}
#endif
}
autosearch_flag=FALSE;
}
void Fmstepsearch( BYTE step_up_flag )
{
BYTE looptime=0;
UINT32 ldataup;
if(am_fm_flag == 4)//fm-->am_fm_flag = 0;
{
if( step_up_flag)
{
//if(autosearch_flag!=4) //up
// return;
FM_TEMP_DATA += 2; //gap = 2. 100K STEP
FM_TEMP_SHOW_DATA += 100; //gap = 2. 100K STEP
FM_REAL_DATA = FM_TEMP_DATA;
SET_IFSW(0); //IFSW, 0: mute, 1: receive mode
//FM_FREQ_MIN 0x7b2 //87.8MHZ, ref 25khz
//FM_FREQ_MAX 0x942 //108Mhz, ref 25khz
if(FM_REAL_DATA>FM_FREQ_MAX/*108000*/) //am max
{
FM_REAL_DATA=FM_FREQ_MAX/*108000*/;
FM_TEMP_SHOW_DATA = 108000;
}
}
else //if( !autosearch_status )
{
//if(autosearch_flag!=4) //down
// return;
FM_TEMP_DATA -= 2; //gap = 2. 100K STEP
FM_TEMP_SHOW_DATA -= 100; //gap = 2. 100K STEP
FM_REAL_DATA=FM_TEMP_DATA;
SET_IFSW(0); //IFSW=1; //mute
if(FM_TEMP_DATA<FM_FREQ_MIN/*87800*/)//Am min
{
FM_TEMP_DATA=FM_FREQ_MIN/*87800*/;
FM_TEMP_SHOW_DATA = 87800;
}
}
Test_curr(1,(BYTE)(FM_TEMP_SHOW_DATA/1000),(BYTE) ((FM_TEMP_SHOW_DATA%1000)/100),0);
SET_R0(1);// REF CLOCK: 3KHZ
SET_R1(1);
SET_R2(0);
SET_R3(0);
SET_GT0(1); //GT0=1; //64MS
SET_GT1(1); //GT1=1;
SET_CTE(0); //CTE=0;
mode2_send_24bit_data();
mode1_send_24bit_data();
#if 0
//dly_tsk(2);
//dly_tsk(2);
SET_CTE(1);//CTE=1;
mode2_send_24bit_data();
mode1_send_24bit_data();
dly_tsk(100);
#if 0
dly_tsk(2);
ldataup=read_24bit_outup_data();
SET_CTE(0);//CTE=0;
if( ( (ldataup & 0x0fffff)>=0xa7200 ) && ( (ldataup & 0x0fffff)<=0xa7400 ))// a7300->10.7MHZ +/- 4k(40K)
{
//sensitivity
SET_IFS(1); //IFS=1;
}
#endif
#endif
}
autosearch_flag=FALSE;
}
void tuner_auto_search( BYTE autosearch_up_flag )
{
if( autosearch_up_flag) //auto search up
{
if( am_fm_flag == 3)//am
Amautosearch( 1 );
else if( am_fm_flag == 4)
Fmautosearch( 1 );
}
else // autosearch_flag == 2, auto search down
{
if( am_fm_flag == 3 )//am
Amautosearch( 0 );
else if(am_fm_flag == 4)
Fmautosearch( 0 );
}
}
void init_ic(void)
{
SET_GPIO_W(TUNER_CE|TUNER_CL|TUNER_DA|TUNER_READ_DA);
SET_GPIO_HI(TUNER_CE|TUNER_CL|TUNER_DA|TUNER_READ_DA);
}
void init_value(void)
{
mode1_send_data = 0x00;
mode1_ctl_data = 0x00;
mode2_send_data0 =0x00;
mode2_send_data1 =0x00;
mode2_send_data2 = 0x00;
}
void jack_main(void)
{
init_ic();
init_value();
// load_tuner_E2PROM();
SET_IOC1(1); //output mode;
SET_IOC2(1); //output mode;
SET_IO1(0); //high;
SET_IO2(0); //high;
AM_FM_SELECT();
//while(1)
{
if(autosearch_flag)
{
tuner_auto_search(1);
//write2mem=1;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -