|
這幾天做個(gè)案子,用到飛利浦的TEA5767的收音機(jī)模塊,在網(wǎng)上搜了下相關(guān)的內(nèi)容,發(fā)現(xiàn)很多人都在問,可是提供編程指導(dǎo)的很少,可能是高手都不屑回答這些小問題吧,在這里我把我的部分程序及TEA5767的相關(guān)資料放上來吧,給需要的人一些參考.(PS:無錫硅動(dòng)力的SP3767和TEA5767完全兼容,有中文資料) TEA5767采用I2C或者三線接口控制,我是用的I2C,單片機(jī)用STC89C52,帶1K EEPROM,可以掉電存臺(tái),1602LCD顯示. TEA5767讀寫數(shù)據(jù)都是5個(gè)字節(jié),其中PLL參數(shù)14位,具體數(shù)據(jù)格式請(qǐng)看datasheet.以下程序中的函數(shù)可以直接在主程序中調(diào)用. #include "iic.c" #define max_freq 108000 #define min_freq 87500 unsigned char radio_write_data[5]={0x29,0xc2,0x20,0x11,0x00}; //要寫入TEA5767的數(shù)據(jù) unsigned char radio_read_data[5]; //TEA5767讀出的狀態(tài) unsigned int default_pll=0x29c2;//0x29f9; //默認(rèn)存臺(tái)的pll,87.8MHz //unsigned int max_pll=0x339b; //108MHz時(shí)的pll, //unsigned int min_pll=9000; //70MHz時(shí)的pll void radio_write(void) { unsigned char i; iic_start(); iic_write8bit(0xc0); //TEA5767寫地址 if(!iic_testack()) { for(i=0;i<5;i++) { iic_write8bit(radio_write_data[i]); iic_ack(); } } iic_stop(); } //讀TEA5767狀態(tài),并轉(zhuǎn)換成頻率 void radio_read(void) { unsigned char i; unsigned char temp_l,temp_h; pll=0; iic_start(); iic_write8bit(0xc1); //TEA5767讀地址 if(!iic_testack()) { for(i=0;i<5;i++) { radio_read_data[i]=iic_read8bit(); iic_ack(); } } iic_stop(); temp_l=radio_read_data[1]; temp_h=radio_read_data[0]; temp_h&=0x3f; pll=temp_h*256+temp_l; get_frequency(); } //由頻率計(jì)算PLL void get_pll(void) { unsigned char hlsi; unsigned int twpll=0; hlsi=radio_write_data[2]&am |