⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fmd1216.h

📁 PHILIPS fmd1216高频头 C51 i2c通信程序
💻 H
字号:
//fmd1216 driver

#define fmd1216_rf   0xc2  // RF device address of FMD1216ME 
#define fmd1216_if   0x86  // IF device address of FMD1216ME for Analog TV and FM radio

#define ATV_IF   3890 // 38.9MHZ, IF of Analog TV  
#define FM_IF   1070 // 10.70MHZ, IF of FM Radio 
#define DVBT_IF  3613 // 36.13MHZ,if OF   DVBT IF

#define MIN_IPF   4800    // 48 MHZ
#define MAX_IPF   86400  // 864 MHZ

#define TV_MODE   0
#define FM_MODE   1
#define DVBT_MODE   2


unsigned char pdivider_lo;
unsigned char pdivider_hi;

unsigned long in_freq = 18425;
unsigned long lo_freq;
unsigned char fine_value = 20;

void wr_fmd1216_rfdvbt(unsigned char bBW)
{   
    
    lo_freq = in_freq + DVBT_IF;
	lo_freq = lo_freq + fine_value*5 - 100;
	lo_freq = lo_freq*100/1667;   
    pdivider_lo = lo_freq&0xff;
    pdivider_hi = ((lo_freq>>8)&0xff);
	i2c_write(fmd1216_rf,pdivider_hi,pdivider_lo);
	if(bBW==8)
		bBW = 0x10;
	//low band
    if(in_freq < 14400)
	{
       i2c_data = 0x01|bBW;
	   i2c_write(fmd1216_rf,0xbc,i2c_data);
    }
    else if(in_freq < 16000)
	{
       i2c_data = 0x01|bBW;
	   i2c_write(fmd1216_rf,0xf4,i2c_data);
    }
    //mid band 
    else if(in_freq < 33000)
	{
       i2c_data = 0x02|bBW;
	   i2c_write(fmd1216_rf,0xbc,i2c_data);
    }
    else if(in_freq < 44200)
	{
       i2c_data = 0x02|bBW;
	   i2c_write(fmd1216_rf,0xf4,i2c_data);
    }
    // high band
    else if(in_freq < 62600)
	{
       i2c_data = 0x04|bBW;
	   i2c_write(fmd1216_rf,0xbc,i2c_data);
    }
    else if(in_freq < 80400)
	{
       i2c_data = 0x04|bBW;
	   i2c_write(fmd1216_rf,0xf4,i2c_data);
    }
	else
	{
       i2c_data = 0x04|bBW;
	   i2c_write(fmd1216_rf,0xfc,i2c_data);
    }

	i2c_write_without_subaddr(fmd1216_rf,0xa0);
}



void wr_fmd1216_rf(void)
{   
    lo_freq = in_freq + ATV_IF;
	lo_freq = lo_freq + fine_value*5 - 100;
	lo_freq = lo_freq*16/100;   
    pdivider_lo = lo_freq&0xff;
    pdivider_hi = ((lo_freq>>8)&0xff);
	i2c_write(fmd1216_rf,pdivider_hi,pdivider_lo);
    if(in_freq < 16000)
	{
	   i2c_write(fmd1216_rf,0x86,0x11);
    }
    else if(in_freq < 44200)
	{
	   i2c_write(fmd1216_rf,0x86,0x12);
    }
	else
	{
	   i2c_write(fmd1216_rf,0x86,0x14);
    }

	i2c_write_without_subaddr(fmd1216_rf,0x60);
}

void wr_fmd1216rf_150mhz(void)
{   
    lo_freq = 15000 + ATV_IF;
	lo_freq = lo_freq + fine_value*5 - 100;
	lo_freq = lo_freq*16/100;   
    pdivider_lo = lo_freq&0xff;
    pdivider_hi = ((lo_freq>>8)&0xff);
	i2c_write(fmd1216_rf,pdivider_hi,pdivider_lo);
	i2c_write(fmd1216_rf,0x86,0x11);

}

void wr_fmd1216rf_fm(void)
{   
    lo_freq = in_freq + FM_IF;
	lo_freq = lo_freq + fine_value*5 - 100;
	lo_freq = lo_freq*20/100;   
    pdivider_lo = lo_freq&0xff;
    pdivider_hi = ((lo_freq>>8)&0xff);
	i2c_write(fmd1216_rf,pdivider_hi,pdivider_lo);
	i2c_write(fmd1216_rf,0x80,0x19);
	i2c_write_without_subaddr(fmd1216_rf,0x40);
}

void wr_fmd1216_if_bg(void)
{  
	i2c_write(fmd1216_if,0x00,0x16);
	i2c_write(fmd1216_if,0x01,0x70);
	i2c_write(fmd1216_if,0x02,0x49);
}


void wr_fmd1216_if_i(void)
{  
	i2c_write(fmd1216_if,0x00,0x16);
	i2c_write(fmd1216_if,0x01,0x70);
	i2c_write(fmd1216_if,0x02,0x4a);
}

void wr_fmd1216_if_dk(void)
{  
	i2c_write(fmd1216_if,0x00,0x16);
	i2c_write(fmd1216_if,0x01,0x70);
	i2c_write(fmd1216_if,0x02,0x4b);
}


void wr_fmd1216_if_l(void)
{  
	i2c_write(fmd1216_if,0x00,0x06);
	i2c_write(fmd1216_if,0x01,0x4e);
	i2c_write(fmd1216_if,0x02,0x4b);
}

void wr_fmd1216_if_lp(void)
{  
	i2c_write(fmd1216_if,0x00,0x86);
	i2c_write(fmd1216_if,0x01,0x4e);
	i2c_write(fmd1216_if,0x02,0x53);
}


void wr_fmd1216if_fm(void)
{  
	i2c_write(fmd1216_if,0x00,0x0e);
	i2c_write(fmd1216_if,0x01,0xd0);
	i2c_write(fmd1216_if,0x02,0x77);
}

void rd_fmd1216_if(void)
{
    i2c_data = 0xff;
	i2c_read_without_subaddr(fmd1216_if);
}




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -