基于單片機(jī)和TEA5767HN的FM收音機(jī)系統(tǒng)的設(shè)計(jì)
摘要:為了在電子產(chǎn)品中嵌入立體聲FM數(shù)字收音機(jī)功能。采用單片機(jī)AT89S52和TEA5767HN為硬件核心,運(yùn)用I2C總線通信方式進(jìn)行軟件設(shè)計(jì),給出了實(shí)現(xiàn)手動(dòng)搜臺(tái)、自動(dòng)搜臺(tái)等功能的FM數(shù)字調(diào)頻收音機(jī)的設(shè)計(jì)方法。該方法采用PT2257對(duì)音頻進(jìn)行處理,以實(shí)現(xiàn)立體聲輸出,因而具有輕巧、方便、頻帶范圍寬、低功耗、高靈敏度等特點(diǎn),并可以嵌入MP3、手機(jī)、便攜式播放器等小型電子產(chǎn)品中。
關(guān)鍵詞:?jiǎn)纹瑱C(jī);AT89S52;TEA5767HN;PT2257
0 引言
在當(dāng)前數(shù)字信息技術(shù)和網(wǎng)絡(luò)技術(shù)高速發(fā)展的PC時(shí)代。嵌入式技術(shù)越來(lái)越同人們的生活緊密相關(guān)。其中掌上嵌入式電子產(chǎn)品更是給人們的生活帶來(lái)了很大方便和很多快樂(lè)。盡管生活方式不斷發(fā)生變化,但無(wú)線電仍然很流行。因此,本文針對(duì)TEA5767HN數(shù)字收音機(jī)芯片的控制機(jī)理,闡述了通過(guò)該芯片和C51單片機(jī)來(lái)將FM數(shù)字收音機(jī)嵌入智能電子產(chǎn)品的設(shè)計(jì)方法。
1 系統(tǒng)整體設(shè)計(jì)思路
本立體聲FM數(shù)字收音機(jī)的設(shè)計(jì)目標(biāo)是通過(guò)單片機(jī)AT89S52來(lái)控制FM接收芯片TEA5767HN,從而實(shí)現(xiàn)可自動(dòng)搜索并存儲(chǔ)10多個(gè)電臺(tái)節(jié)目(也可手動(dòng)搜索并存儲(chǔ)電臺(tái)節(jié)目)。所收聽(tīng)電臺(tái)的頻率和臺(tái)號(hào)及時(shí)鐘可在顯示模塊中的LCD上顯示,音量則可通過(guò)音量加、減按鍵自主控制,并能存儲(chǔ)關(guān)機(jī)時(shí)設(shè)定的數(shù)據(jù)以及鬧鐘功能。具體系統(tǒng)設(shè)計(jì)框圖如圖1所示。
本系統(tǒng)主要由單片機(jī)AT89S52控制模塊、TEA5767HN收音模塊、音量控制模塊、ROM存儲(chǔ)模塊、顯示模塊、按鍵模塊和電源模塊七部分組成。本系統(tǒng)硬件設(shè)計(jì)的關(guān)鍵則在于FM接收、音頻處理等模擬部分;軟件設(shè)計(jì)的關(guān)鍵在于控制模塊與收音模塊之間的通信。
從圖1中可以看出,控制模塊僅僅通過(guò)I2C總線與收音模塊連接并控制收音機(jī)工作。本設(shè)計(jì)使用單片機(jī)P3口的兩個(gè)I/O腳來(lái)模擬I2C總線的SDA和SCL時(shí)序并與TEA5767HN通信;TEA5767HN輸出的左右聲道音頻信號(hào)可通過(guò)音量控制模塊進(jìn)行前級(jí)放大及音量控制,然后輸入到TDA7057進(jìn)行后級(jí)功率放大,最后輸出到揚(yáng)聲器。單片機(jī)可通過(guò)I2C總線進(jìn)行音量調(diào)節(jié);ROM存儲(chǔ)模塊主要用于存儲(chǔ)電臺(tái)數(shù)據(jù)、音量數(shù)據(jù)和時(shí)鐘數(shù)據(jù),為存儲(chǔ)和讀取數(shù)據(jù)帶來(lái)方便。系統(tǒng)可通過(guò)按鍵進(jìn)行操作,通過(guò)MCU檢測(cè)按鍵信號(hào)并經(jīng)單片機(jī)實(shí)現(xiàn)手動(dòng)搜臺(tái)、自動(dòng)搜臺(tái)、音量控制、時(shí)鐘調(diào)整等功能,各項(xiàng)操作提示和操作結(jié)果均可通過(guò)LCD顯示出來(lái)。穩(wěn)壓電源模塊產(chǎn)生的5 V和3.3 V電壓可分別為各個(gè)模塊器件供電。
2 硬件系統(tǒng)電路設(shè)計(jì)
由于本系統(tǒng)硬件設(shè)計(jì)的關(guān)鍵在于FM接收、音頻處理等模擬電路部分,其余電路均為常規(guī)電路,因而其硬件系統(tǒng)的設(shè)計(jì)著重分析收音模塊、音量控制模塊這兩部分電路。
2.1 收音模塊電路分析
FM接收電路是系統(tǒng)硬件電路中的核心部分之一,本硬件系統(tǒng)采用單芯片TEA5767HN作為FM接收電路的核心元器件。Philips公司提供的TE-A5767HN芯片為低電壓、低功耗和低價(jià)位的全集成單芯片立體聲無(wú)線電產(chǎn)品,它只需要極少的外圍元件,并且基本上不需要外部對(duì)高頻信號(hào)的手動(dòng)調(diào)準(zhǔn)。另外,其頻帶范圍較寬,可以完全免費(fèi)調(diào)到歐洲、美國(guó)和日本的調(diào)頻波段。
圖2所示為TEA5767HN的FM應(yīng)用電路連接圖。圖中,VCC接穩(wěn)壓電源模塊中的3.3 V電源,并通過(guò)磁珠FB及電容器進(jìn)行干擾抑制。22μF的電容選用鉭電容,兩個(gè)0.1μF的電容可以選用介電常數(shù)高、高頻性能好的陶瓷電容,以保證整個(gè)收音模塊的電源系統(tǒng)更加穩(wěn)定。R_OUT、L_OUT為FM的音頻信號(hào)輸出。DATA和CLK為I2C通信的數(shù)據(jù)線和時(shí)鐘線,系統(tǒng)的MCU通過(guò)I2C接口來(lái)對(duì)FM Module進(jìn)行控制。芯片上的W/READ引腳在本系統(tǒng)中沒(méi)有使用,故空接。CLK、DATA用于與系統(tǒng)的MCU實(shí)現(xiàn)串行通信。BUS-ENABLE為總線使能信號(hào),當(dāng)BUS-ENABLE為低時(shí),芯片上的FM-Mod-ule引腳進(jìn)入省電模式,所以采取空接方式。RF為FM收音模塊的天線接口,即射頻信號(hào)輸入腳。
2.2 音量控制模塊
音量控制電路使用的單芯片PT2257是由CMOS技術(shù)制造而成的2聲道音量控制IC,可采用I2C控制,具有0~79 dB的衰減范圍,而且噪音低、立體聲分離度高、使用外圍元件少,是較為流行的AV視頻產(chǎn)品音量控制元件。
音量控制電路采用I2C控制方式,其音量大小由MCU控制,因而省去了電位器,避免了電位器產(chǎn)生的雜音干擾音頻信號(hào)。但其不足之處是該IC過(guò)載能力較差,不能帶動(dòng)功率稍大的喇叭,所以,本設(shè)計(jì)把音量控制電路放置在前置信號(hào)輸入端,然后再接入TDA7057進(jìn)行后級(jí)放大。
3 系統(tǒng)軟件設(shè)計(jì)
基于AT89S52單片機(jī)控制平臺(tái)的TEA5767HN數(shù)字收音機(jī)的軟件設(shè)計(jì)主要包括六個(gè)部分:I2C總線通信協(xié)議、TEA5767HN收音模塊控制、PT22 57音量控制、時(shí)鐘鬧鐘模塊的中斷服務(wù)、AT24C02存儲(chǔ)模塊控制、鍵盤掃描及狀態(tài)顯示。本文的軟件系統(tǒng)設(shè)計(jì)應(yīng)當(dāng)著重分析TEA5767HN收音模塊控制、PT2257音量模塊這兩部分的工作原理以及編程思路。
本系統(tǒng)程序使用C語(yǔ)言編寫(xiě),主程序由啟動(dòng)、初始化、鍵盤掃描、按鍵處理、液晶顯示等5大模塊組成。其中系統(tǒng)初始化包括AT89S52的初始化、TEA5767HN的初始化和LCD的初始化;按鍵處理通過(guò)調(diào)用函數(shù)的方法實(shí)現(xiàn)按鍵復(fù)用功能,可實(shí)現(xiàn)手動(dòng)搜臺(tái)、自動(dòng)搜臺(tái)、音量控制、時(shí)間調(diào)整、鬧鐘調(diào)整等操作;顯示模塊可顯示系統(tǒng)的各個(gè)工作狀態(tài)。
3.1 TEA5767HN模塊的軟件設(shè)計(jì)
3.1.1 TEA5767HN讀寫(xiě)寄存器
TEA5767HN有5個(gè)寫(xiě)寄存器和5個(gè)讀寄存器,每個(gè)寄存器可存儲(chǔ)8位數(shù)據(jù)。
寫(xiě)寄存器可以存儲(chǔ)控制信息,包括軟件靜音、模式選擇、PLL可編程計(jì)數(shù)器的設(shè)置、向上向下搜索模式選擇、靜左/右音頻、可編程端口的設(shè)置、待機(jī)節(jié)能模式、歐洲/日本頻段選擇、晶振頻率選擇、ADC門限設(shè)置、去加重設(shè)置等。
讀寄存器可檢測(cè)接收電路狀態(tài),反饋控制信息,包括搜索到有效電臺(tái)標(biāo)志位、搜索到有效電臺(tái)后PLL可編程計(jì)數(shù)器的狀態(tài)、4 b ADC的輸出、以及7 b IF中頻輸出等。
3.1.2 TEA5767HN的數(shù)據(jù)傳輸
TEA5767HN的數(shù)據(jù)順序是:地址、字節(jié)1、字節(jié)2、字節(jié)3、字節(jié)4、字節(jié)5,數(shù)據(jù)傳送必須按照這個(gè)順序。每個(gè)字節(jié)將控制不同的功能。
每個(gè)字節(jié)的第七位為最高位,并作為字節(jié)的第一位傳送。在時(shí)鐘的下降沿,數(shù)據(jù)變?yōu)橛行盘?hào)。在每一字節(jié)后面加停止信號(hào)可以縮短傳送時(shí)間。在整個(gè)傳輸完成之前,發(fā)送一個(gè)停止條件,其保留的字節(jié)將包含以前的信息。如果一個(gè)字節(jié)沒(méi)有傳送完,新的字節(jié)將被使用,但新的調(diào)諧周期不會(huì)開(kāi)始。
3.1.3 TEA5767HN的讀寫(xiě)流程
根據(jù)TEA5767HN的讀寫(xiě)協(xié)議,調(diào)用公用I2C驅(qū)動(dòng)即可編寫(xiě)出TEA5767HN的讀寫(xiě)函數(shù):radio_write(),radio_read()。它們可為手動(dòng)搜臺(tái)、自動(dòng)搜臺(tái)等FM功能調(diào)用,以實(shí)現(xiàn)程序的模塊化,優(yōu)化程序結(jié)構(gòu)。TEA5767HN的讀寫(xiě)流程如圖3所示。其中I2C_Start(FM)和I2C_Stop(FM)分別表示啟動(dòng)和停止I2C總線,Check_(FM)為應(yīng)答信號(hào)。
3.1.4 收音模塊的初始化
TEA5767HN在上電復(fù)位時(shí),靜音位設(shè)置為“1”,其他所有位設(shè)置為“0”。為了初始化集成塊,所有位都必須重新設(shè)定。所以,上電后必須重新給TEA5767HN寫(xiě)入數(shù)據(jù),以初始化收音模塊。
TEA5767HN的初始化流程圖如圖4所示。圖中的radio_write_data[]分別為要寫(xiě)入TEA5767HN的5個(gè)字節(jié)數(shù)據(jù)。本系統(tǒng)寫(xiě)入數(shù)據(jù)讓TEA5767HN接收的頻率為88100 kHz,選擇歐洲制式和32.768 MHz晶振,同時(shí)采用立體聲輸出。函數(shù)get_pll()是根據(jù)當(dāng)前頻率計(jì)算出PLL值的函數(shù)。調(diào)用get_pll()函數(shù)計(jì)算出PLL值后,應(yīng)再把PLL高6位送給字節(jié)1的低6位,接著把PLL的低8位送給字節(jié)2。頻率顯示則可直接調(diào)用fm_disp()函數(shù)來(lái)完成。
3.1.5 手動(dòng)搜臺(tái)
手動(dòng)搜臺(tái)主要由按鍵掃描和調(diào)用radio_write()等函數(shù)來(lái)完成。操作兩個(gè)按鍵(down,up)可完成向下向上調(diào)臺(tái)。當(dāng)按下up鍵時(shí),當(dāng)前的頻率將增加100 kHz,然后調(diào)用函數(shù)get_pll()將十進(jìn)制的頻率值轉(zhuǎn)化為14位的PLL值,然后再將PLL值進(jìn)一步轉(zhuǎn)化為兩個(gè)二進(jìn)制分別寫(xiě)入TEA57 67HN的寫(xiě)寄存器的第一和第二個(gè)字節(jié)。頻率顯示可直接調(diào)用fm_disp()函數(shù)來(lái)完成。
3.1.6 自動(dòng)搜臺(tái)與讀臺(tái)
自動(dòng)搜臺(tái)主要使系統(tǒng)從最低頻率87.5 MHz開(kāi)始全頻率搜索,每次步進(jìn)100 kHz,如此不斷地寫(xiě)入和讀出,同時(shí)調(diào)用頻率顯示函數(shù)不斷地刷新頻率。當(dāng)搜索到最高頻率108MHz時(shí),自動(dòng)退出搜臺(tái)模式。在自動(dòng)搜臺(tái)過(guò)程中,可通過(guò)讀寄存器中的ADC與中頻IF來(lái)辨別是否搜到有效電臺(tái)。若ADC>3,同時(shí)中頻IF在0x30~0x3E范圍內(nèi),則說(shuō)明搜到有效電臺(tái),此時(shí)讀出TEA5767讀寄存器中的字節(jié)1和字節(jié)2,然后將這兩個(gè)字節(jié)的數(shù)據(jù)轉(zhuǎn)化為PLL,最后通過(guò)寫(xiě)ROM把搜到的電臺(tái)信息即PLL值存儲(chǔ)到AT24C02的片地址中,以方便讀臺(tái)使用。
讀臺(tái)是一個(gè)讀ROM和寫(xiě)TEA5767的操作。將ROM中的電臺(tái)信息讀取出來(lái),然后將信息再一次寫(xiě)入TEA5767即可。在自動(dòng)搜臺(tái)中,由于存儲(chǔ)的信息是14位的PPL值,所以還必須調(diào)用函數(shù)將PLL轉(zhuǎn)化為十進(jìn)制的頻率frequency,然后再送進(jìn)LCD顯示。
3.2 PT2257的音量控制設(shè)計(jì)
本系統(tǒng)使用PT2257來(lái)控制收音機(jī)輸出的音量,以實(shí)現(xiàn)數(shù)字化音量控制。PT2257的地址為88H。單片機(jī)可與PT2257通過(guò)I2C進(jìn)行通信。PT2 257的寫(xiě)操作先由單片機(jī)發(fā)出啟動(dòng)信號(hào)寫(xiě)入PT2257的片地址0x88,然后,由PT2257送回應(yīng)答信號(hào),單片機(jī)收到應(yīng)答信號(hào)后,即向PT2257發(fā)送音量衰減量數(shù)據(jù),單片機(jī)再次收到應(yīng)答信號(hào)后,即發(fā)出停止信號(hào),如此即可完成一次控制過(guò)程。
PT2257衰減量數(shù)據(jù)Vol由十位和個(gè)位兩部分組成。數(shù)據(jù)的傳輸順序是先發(fā)送十位數(shù)據(jù),再發(fā)送個(gè)位數(shù)據(jù)。寫(xiě)入的十位數(shù)據(jù)為(Vol/10)|TenDB,個(gè)位數(shù)據(jù)為(Vol%10)|OneDB。其中TenDB=0xe0,OneDB=0xd0。衰減量的大小為十位和個(gè)位值的合并,圖5給出了PT2257的寫(xiě)流程和音量控制流程。
4 電路設(shè)計(jì)說(shuō)明
本設(shè)計(jì)在硬件方面以經(jīng)典電路為主,所以在常規(guī)電路設(shè)計(jì)方面不難。但是,由于本設(shè)計(jì)涉及到高頻與低頻信號(hào)的處理,所以要特別注重抗干擾電路的設(shè)計(jì)。在設(shè)計(jì)樣品的調(diào)試過(guò)程中,為提高抗干擾能力,作者得出以下經(jīng)驗(yàn):
(1)I2C總線的布線技巧
在TEA5767HN收音模塊設(shè)計(jì)時(shí),由于I2C總線與32.768 kHz的布線靠得太近,信噪比和靈敏度都可能很差。因此,筆者在做PCB板時(shí),把I2C總線通過(guò)跳線的方式走到下層。
(2)磁珠的應(yīng)用
磁珠一般專門用于抑制信號(hào)線、電源線上的高頻噪聲和尖峰干擾,同時(shí)還具有吸收靜電脈沖的能力。本設(shè)計(jì)中的磁珠用來(lái)吸收超高頻信號(hào)(如一些RF電路、PLL、振蕩電路、含超高頻存儲(chǔ)器電路等)。為了盡量減少電源對(duì)收音模塊的干擾,本設(shè)計(jì)使用了特征頻率為100 MHz的磁珠串接入3.3 V電路中。
(3)電路中“電流聲”的處理
電路中經(jīng)常會(huì)有“電流聲”。這是因?yàn)殡娐樊a(chǎn)生了一定的振蕩,電流只要有變化,就會(huì)有噪音,這樣,根據(jù)電流聲的頻率就可以有針對(duì)性的進(jìn)行處理。具體抑制措施有兩個(gè):一是用電感或電阻把干擾隔離在敏感區(qū)域外;另一方面,也可以用電容把噪音泄放到地。
因此,筆者根據(jù)設(shè)計(jì)實(shí)踐和相關(guān)資料,歸納出提高電路抗干擾能力的三字訣,那就是“避”、“堵”、“疏”。其中的避,就是指合理布局,躲開(kāi)敏感區(qū),如設(shè)跳線或屏蔽敏感區(qū)等方式;堵,就是用電感/電阻把干擾隔離在敏感區(qū)域之外;疏,就是用電容把噪音釋放到地。另外,還要遵循兩大原則,分別是:“高頻信號(hào)點(diǎn)觸接地;低頻信號(hào)處處接地。”
5 結(jié)語(yǔ)
以TEA5767HN和單片機(jī)為硬件核心的立體聲FM數(shù)字收音機(jī)與傳統(tǒng)收音機(jī)相比,其PCB板布局小,硬件調(diào)試較為簡(jiǎn)單,在音效處理和性能方面都更加可靠。通過(guò)軟硬件的結(jié)合,本系統(tǒng)可實(shí)現(xiàn)手動(dòng)搜臺(tái)、自動(dòng)搜臺(tái)、數(shù)控音量和鬧鐘等功能。在軟件設(shè)計(jì)上也可通過(guò)公用I2C使單片機(jī)與多個(gè)IC進(jìn)行通信,并可通過(guò)軟件實(shí)現(xiàn)按鍵復(fù)用功能,因而大大降低了產(chǎn)品體積。