摘 要: 在紅外遙控設(shè)備的使用中,設(shè)備的穩(wěn)定性和調(diào)節(jié)平滑性是最基本而最重要的指標(biāo)。根據(jù)NEC紅外協(xié)議,設(shè)計了一種基于STM32F103C8單片機的紅外可調(diào)的功放系統(tǒng)。此系統(tǒng)通過STM32F103C8的輸入端口捕獲紅外遙控器發(fā)射的脈沖信號,用其強大的定時器對遙控編碼進(jìn)行解碼,判斷出哪個功能鍵被按下,根據(jù)所按下的功能鍵驅(qū)動單片機的GPIO口輸出控制信號來調(diào)節(jié)數(shù)控電位器X9313,實現(xiàn)功放輸入電壓的調(diào)節(jié),從而平滑地調(diào)節(jié)音量的增加和減少。通過測試,功放系統(tǒng)可通過紅外遙控器進(jìn)行有效的、平滑穩(wěn)定的音量調(diào)節(jié)。
關(guān)鍵詞: STM32F103C8; 紅外; X9313; PAM8403
隨著音視頻領(lǐng)域數(shù)字化大浪潮的發(fā)展,傳統(tǒng)的按鈕調(diào)節(jié)型音量控制器漸漸地失去主導(dǎo)地位,高效、平穩(wěn)的紅外遙控倍受用戶喜愛。紅外遙控是一種無線、非接觸控制技術(shù),具有抗干擾能力強、信息傳輸可靠、功耗低、成本低、易實現(xiàn)等顯著優(yōu)點,廣泛應(yīng)用于諸多電子設(shè)備特別是家用電器,并越來越多地應(yīng)用到計算機系統(tǒng)中。
常見的D類功率放大器采用51單片機作為主控芯片,本文使用ST公司的32位ARM單片機,其主頻可以達(dá)到72 MHz,能快速高效地對紅外進(jìn)行解碼,調(diào)節(jié)音量的大小。STM32F103C8的通用定時器是一個通過可編程預(yù)分頻器驅(qū)動的16 bit自動裝載計數(shù)器,它適用于多種場合,包括測量輸入信號的脈沖長度(輸入捕獲)或者產(chǎn)生輸出波形(輸出比較和PWM)[1]。
1 STM32F103C8單片機簡述
本系統(tǒng)選用意法半導(dǎo)體STM32F103C8芯片為主控芯片,這是一款以ARM Cortex-M3為內(nèi)核的32 bit 芯片,時鐘頻率為72 MHz,從而區(qū)別于功能簡單的8 bit 單片機,專門應(yīng)用于對性能要求較高、成本要求較低以及低功耗的場合[2]。具有運行速度高、處理能力強、外設(shè)界面豐富、價格低廉和控制、運算性能很強等特點。其具體性能指標(biāo)如下:(1)最高工作頻率為72 MHz;工作溫度范圍:-40℃~+85℃;寬電壓供電:2.0 V~3.6 V;(2)128 KB的閃存和16 KB的SRAM;(3)12位16通道A/D轉(zhuǎn)換器,具有雙采樣和保持功能,轉(zhuǎn)換時間最短1 s。(4)3個16位通用定時器,每個定時器有多達(dá)4個通道用于輸入捕獲、輸出比較PWM或脈沖輸出[3]。本系統(tǒng)用到STM32F103C8的通用定時器2的輸入捕獲模式對紅外信號進(jìn)行解碼,與傳統(tǒng)的單片機相比省去了同時要打開外部中斷和定時器中斷的繁瑣過程,節(jié)約了資源。
2 紅外簡介
紅外線遙控沒有無線電遙控那樣穿過障礙物去控制被控對象的能力,因此在設(shè)計紅外線遙控器時,不需要像無線電遙控器那樣每套(發(fā)射器和接收器)有不同的遙控頻率或編碼(否則可能隔墻控制或干擾鄰居的家用電器)。同時,同類產(chǎn)品的紅外線遙控器可以有相同的編碼或遙控頻率,且不會出現(xiàn)遙控信號“串門”的情況,這使得紅外遙控得以大批量生產(chǎn),在家電設(shè)備上得到了普遍應(yīng)用。
紅外遙控的編碼一般使用NEC Protocol的PWM(脈沖寬度調(diào)制)和NXP RC-5 Protocol的PPM(脈沖位置調(diào)制)[4]。本系統(tǒng)中遙控器使用NEC協(xié)議,其特征如下:
(1) 8 bit地址和8 bit指令長度;
(2) 命令和地址傳輸2次,確??煽啃裕?br />
(3) 采用PWM脈沖位置調(diào)制,根據(jù)發(fā)射紅外載波的占空比來區(qū)分代表“0”和“1”;
(4) 載波頻率為38 kHz;
(5) 位時間為1.125 ms或2.25 ms。
NEC碼的位定義:一個脈沖對應(yīng)560μs的連續(xù)載波,一個邏輯1傳輸需要2.25 ms(560 μs脈沖+1 680 μs低電平),一個邏輯0的傳輸需要1.125 ms(560μs脈沖+560 μs低電平)。遙控器接收頭在沒有脈沖時為高電平,收到脈沖后變?yōu)榈碗娖?,這樣,在接收頭端收到的信號為:邏輯1時間為560 μs(低)+1 680 μs(高),邏輯0時間為560 μs(低)+560μs(高)。
NEC遙控指令的數(shù)據(jù)格式為:同步碼頭、地址碼、地址反碼、控制碼、控制反碼。同步碼由一個9 ms的低電平和一個4.5 ms的高電平組成,地址碼、地址反碼、控制碼、控制反碼均是8 bit數(shù)據(jù)格式。按照低位在前、高位在后的順序發(fā)送。傳輸時采用反碼傳輸,增加傳輸?shù)目煽啃?。遙控器的任意一按鍵被按下時,從紅外接收頭端收到的波形如圖1所示。
3 系統(tǒng)硬件設(shè)計
基于STM32F103C8的功放系統(tǒng)硬件部分主要由STM32最小系統(tǒng)、紅外接收電路、音頻調(diào)節(jié)電路、功放電路組成。硬件結(jié)構(gòu)框圖如圖2所示。
3.1 嵌入式微處理器單元
主控芯片STM32F103C8、電源、復(fù)位電路、晶振電路、J-LINK調(diào)試界面構(gòu)成STM32最小系統(tǒng)。STM32F103C8內(nèi)嵌經(jīng)出廠調(diào)校的8 MHz的RC振蕩器,2.0~3.6 V供電,能使系統(tǒng)的工作頻率為72 MHz。外部接有按鍵,10 kΩ的電阻,0.1 μF的電容組成復(fù)位電路。
3.2 紅外信號的接收和處理
紅外接收電路采用Vishay Semiconductor GmbH公司的HS0038紅外一體化接收頭,接收紅外信號頻率為38 kHz,周期約26 μs,同時能對信號進(jìn)行放大、檢波、整形,得到TTL 電平的編碼信號。3個管腳分別是地、+5 V電源、解調(diào)信號輸出端。為了消除干擾,對紅外接收頭的輸出信號接到74HC14進(jìn)行兩次反相后接入STM32的PA6腳,目的是為了得到理想平穩(wěn)的、有規(guī)則的高低電平波形,以便于STM32的解碼。其紅外信號接收、處理電路如圖3所示。
3.3 音量調(diào)節(jié)電路
美國XICOR公司研制的X9313是一種非易失性數(shù)控電位器,是理想的可調(diào)電阻器。與機械式電位器相比有以下優(yōu)點:調(diào)節(jié)精度高,不易受振動、污染等影響,無機械磨損,易于用單片機或邏輯電路控制,體積小巧易于安裝,適用于音量、燈光控制等場合[5]。音頻信號的左聲道分別經(jīng)過10 k?贅電阻和10 ?滋F電容后接入數(shù)控電位器X9313的高端Rh端,STM32F103C8的GPIOA的PA4口接X9313的“增加”控制引腳INC,PA5口接X9313的升/降控制輸入腳U/D, 數(shù)控電位器的低端RL接地, 滑動端RW經(jīng)過10 ?滋F的極性電容后接入PAM8403模塊的左聲道輸入引腳LIN。右聲道同樣經(jīng)過另一數(shù)控電位器后接入PAM8403模塊的右聲道輸入引腳RIN。功放電路部分采用由PAM公司生產(chǎn)的PAM8403和部分器件組成數(shù)字功放板模塊。PAM8403立體聲D類音頻功率放大器能夠以D類放大器的效率提供AB類放大器的性能,能夠以高于85%的效率提供3 W功率。音量調(diào)節(jié)電路圖如圖4所示。
系統(tǒng)上電后進(jìn)行系統(tǒng)初始化,包括:使能用于輸入捕獲的定時器時鐘、輸入捕獲和輸出的I/O引腳時鐘;初始化GPIO,PA1為上拉輸入,PA2~PA7為推挽輸出;定義定時器輸入捕獲結(jié)構(gòu)體,進(jìn)行各參數(shù)設(shè)置;設(shè)置定時器輸入捕獲通道,捕獲下降沿,設(shè)置采樣分頻系數(shù),濾波機制等。數(shù)控電位器X9313的片選輸入腳CS給低電平,器件被選中,在音頻信號接入的情況下等待紅外遙控器的按鍵信號。紅外接收頭的信號輸出端經(jīng)反相器74HC14兩次反相后接入STM32的PA6腳,當(dāng)有鍵按下時PA6腳電平由高電平變?yōu)榈碗娖?,觸發(fā)定時器2中斷進(jìn)行紅外中斷解碼。如圖6所示STM32輸入捕獲紅外解碼流程,PA6腳由高電平變?yōu)榈碗娖綍r,觸發(fā)中斷判斷是否接收到引導(dǎo)碼,當(dāng)引導(dǎo)碼接收成功后接著接收地址碼、地址反碼、數(shù)據(jù)碼、數(shù)據(jù)反碼,32 bit數(shù)據(jù)接收完后判斷數(shù)據(jù)碼和數(shù)據(jù)反碼之和是否為0FFH,之和等于0FFH則此次數(shù)據(jù)有效準(zhǔn)備下次數(shù)據(jù)的接收,否則數(shù)據(jù)無效進(jìn)行下次數(shù)據(jù)的接收。
當(dāng)紅外遙控有鍵按下時,STM32輸入捕獲紅外解碼出“1”、“0”對應(yīng)的程序代碼如下所示:
if((IR_PluseSub>900)&&(IR_PluseSub<1300))
{
Im[m/8]=Im[m/8]>>1|0x80;
m++;
}
if((IR_PluseSub>450)&&(IR_PluseSub<900))
{
Im[m/8]=Im[m/8]>>1;
m++;
}
文中建立的紅外遙控音量可調(diào)系統(tǒng)使用功能強大的32位STM32F103C8單片機,可實現(xiàn)音量的平穩(wěn)、有效的調(diào)節(jié),對于智能化家居系統(tǒng)中多個遙控家電設(shè)備共享一個紅外遙控器的實現(xiàn)能提供一定的參考價值。該系統(tǒng)紅外遙控將來可以直接利用STM32的內(nèi)部定時器產(chǎn)生38 kHz的紅外載波,通過學(xué)習(xí)目前市場上各種紅外遙控器的紅外編碼即可成為萬能遙控器[6],為智能化家居的發(fā)展帶來一定的推進(jìn)作用。
參考文獻(xiàn)
[1] 黃智偉,王兵,朱衛(wèi)華. STM32 32位ARM微控制器應(yīng)用設(shè)計與實踐[M].北京:北京航空航天大學(xué)出版社,2012.
[2] 許雪楠,梁晉濤,黃邦宇.基于STM32的健康一體機控制系統(tǒng)的設(shè)計[J].微型機與應(yīng)用,2013,32(16):20-22.
[3] STMicroelectronics.STM32F103xB STM32F103x8 data sheet [EB/OL].(2009)[2013].http://www.st.com.
[4] 劉軍.例說STM32[M].北京:北京航空航天大學(xué)出版社,2011.
[5] 李學(xué)海.非易失性數(shù)控電位器E2POT-X9313[J].電子制作,1997(8):12-13.
[6] 邵振,章勇,劉培培.應(yīng)用于智能家居中的紅外學(xué)習(xí)型紅外模塊設(shè)計[J]. 通信市場,2011(4):7-8,27.