中科芯集成電路有限公司 吳志玲 胡凱 張弘 武亞恒 王琪 嚴丹丹
為解決傳統紅外發射編譯器無法實現多用戶編碼以及新增編碼格式較為復雜的問題,本文提出了一種基于XML的紅外發射編譯器的設計,該設計采用XML文件數據格式調用的方法,將不同類型的紅外發射碼以特定信息格式存儲在庫文件中,該格式中包含定制用戶碼信息,編譯器進行編譯操作時直接調用XML文件庫中的配置信息及編碼數據信息即可完成一種紅外發射碼的編譯操作,實現了可定制化多用戶編碼及支持多種編碼格式的可擴充性需求。
近年來隨著物聯網的發展,智能家居展現出強勁的活力。智能遙控器作為智能家居中一種用于遠程控制的裝置得到了廣泛的應用。隨著射頻技術的不斷進步,遙控器信號的傳送接口類型也在不斷增多,目前主要包括紅外線、2.4GHz頻帶電波(RF)、藍牙等,如今最為常見和產量最大的遙控器類型仍然是紅外遙控器。
紅外遙控器作為一種無線發射裝置,采用數字編碼技術將按鍵信息進行編碼,并以高低電平的形式通過紅外二極管發射出光信號,光信號經接收端的紅外接收器接收并將其轉換為電信號,再由解碼處理器進行解碼操作,解調出相應的指令發送至執行端[1]。目前已有的紅外發射編譯器無法實現多用戶碼編碼,也不能滿足不同格式紅外碼的擴充性需求。本文介紹了一種基于可編程智能遙控微控制器的紅外發射編譯器的設計,該編譯器可實現多用戶碼編碼,同時采用了XML文件數據格式調用的方法解決了傳統編譯器無法擴充新編碼格式的問題。
紅外發射與接收工作原理[2]:編碼IC通過三極管將信號進行放大調變,然后將此電信號(脈沖波)經由紅外發射管(940nm波長)轉變為光信號發射出去。紅外接收部分主要由光電二極管加紅外接收IC組成,光電二極管接收到的紅外發射管發射出的光信號后將其轉換為電信號(微安級的電流),此電信號輸入到接收IC內部經過放大—增益—濾波—解調—整形等一系列處理后,還原遙控器給出的原始編碼,通過接收頭端將信號輸出到代碼識別電路[3]。
調制解調原理:紅外遙控是以調制的方式發射數據,即把數據和一定頻率的載波進行“與”操作,既可以提高發射效率又可以降低電源功耗[4]。調制載波頻率一般在30kHz到60kHz之間,大多數使用的是38kHz,占空比1/3的方波,占空比取決于發射端所使用的455kHz晶振[5]。在發射端要對晶振進行整數分頻,分頻系數一般取12,所以455kHz÷12≈37.9 kHz≈38kHz。
本文所設計紅外發射編譯器軟件目前可支持20種常用的紅外編碼格式,均可實現三種定制用戶碼的編譯功能。除此之外,編譯器因采用XML庫調用的模式存儲不同編碼格式,故對編碼格式的擴充性較好,可快速便捷的新增編碼格式,目前支持格式如下:uPD6121G、SAA3010_RC5_38K、rc6-1、rc6-2、rc6-3、7461、50462、TC9012、TC9012F、50560-1、50560-2、0773、7051、2185、6014、Jvc、y261、SONY_1、SONY_2、SONY_3。
本文以常用編碼格式uPD6121G為例說明紅外發射編譯過程,uPD6121G編碼格式如圖1所示。該數據格式包括起始碼、用戶碼、數據碼和數據反碼,用戶碼、數據碼和數據反碼均為8位,故編碼共計32位,數據反碼為數據碼取反后的編碼,編碼時可用于對數據的糾錯。

圖1 uPD6121G數據編碼格式Fig.1 Data coding format of uPD6121G
用戶碼或數據碼中的每一位可以是位‘1’,也可以是位‘0’,‘1’和‘0’是利用脈沖的時間間隔來區分,這種編碼方式為脈沖位置調制方式(PPM)[6]。PPM以脈寬0.56ms、間隔0.565ms、周期1.125ms的組合表示二進制的‘0’,以脈寬0.56ms、間隔1.69ms、周期2.25ms的組合表示二進制的‘1’。
uPD6121G按鍵輸出有兩種方式,一種是每次按鍵都輸出完整的一幀數據;另一種是按下相同的按鍵后每發送完整的一幀數據后再發送重復碼,再到按鍵被松開。
為更好實現人機交互,方便用戶對編碼格式、配置信息等快捷更新,紅外發射編譯器共設計了兩大模塊,即上位機界面與后臺運行編譯程序,紅外發射編譯器編碼過程如圖2所示,本文以uPD6121G為例對編譯過程進行說明。

圖2 編譯器工作流程圖Fig.2 Workflow diagram of compiler
(1)紅外發射編譯器上位機軟件界面如圖3所示,在界面左側配置頁設計了可配置編碼格式名稱、用戶碼位數、用戶碼數值、第二幀發射格式等信息的選擇框,便于用戶根據編碼需求自主設置配置信息。

圖3 紅外發射編譯器軟件界面Fig.3 Software interface of infrared emission compiler
具體實現如下:


(2)XML庫文件中包含20種編碼格式的配置信息,用戶可通過界面選擇其中一種編碼格式,通過對用戶設置的編碼格式進行分析,調用XML庫文件中的編碼格式進行匹配,并讀取XML庫文件中對應格式的配置信息,uPD6121G編碼在XML中部分配置信息如下:


軟件實現如下:

(3)在配置信息中查詢是否包含定制用戶碼,若有,則提取界面中用戶設置的用戶碼并經數據轉換后存儲至燒錄文件對應區域內;若無定制用戶碼則進行后續發射碼的編譯;
軟件實現如下:


本設計中的三組用戶碼UserACom、UserBCom、UserDCom是在原編碼格式用戶碼基礎之上再次擴充的,可將發射按鍵數量擴充至原來的3倍,如常規發射按鍵78個,通過實現多用戶碼的編譯,可將按鍵數量擴充至234個。
(4)根據uPD6121G格式的位定義編譯起始碼、常規用戶碼、用戶反碼(uPD6121G格式中用戶反碼8位數據與用戶碼一樣,未取反,保持不變)、數據碼及數據反碼等信息,并存儲至燒錄文件;實現如下:

(5)將步驟(2)中讀取的配置信息編譯存儲至燒錄文件指定的配置區域;
(6)將包含發射碼所有格式信息及數據信息的二進制文件燒錄至微控制器,此時連接外部發射單元,按下按鍵即可實現紅外遙控的發射操作。


對本文所設計編譯器進行發碼測試,設置如圖4所示,選擇用戶碼D,用戶碼數值為33,其用戶反碼為CC,經編譯器編譯并將文件燒錄至硬件中,按下按鍵值為4E的按鈕,其數據反碼為B1,發射成功后,用通用紅外遙控編碼分析儀接收到的數據如圖5所示,與圖4中配置信息對比發現,紅外遙控編碼分析儀解析到的數據與按鍵值為4E的uPD6121G碼完全一致(注:編譯器編碼格式正確,紅外遙控編碼分析儀接收到信號后將自動匹配編碼類型并顯示出編碼格式及碼值;若編碼錯誤,紅外遙控編碼分析儀將解析不出任何波形)。

圖4 紅外發射編譯器發碼測試Fig.4 Code sending test of infrared emission compiler

圖5 紅外遙控編碼分析儀接收的uPD6121G格式碼形Fig.5 uPD6121G format code received by infrared remote control coding analyzer
用同樣的方法測試LC7461M-C13、MIT-C8D8、TC9012F、Sharp等格式,結果如圖6所示。

圖6 紅外遙控編碼分析儀接收的LC7461M-C13、MIT-C8D8、TC9012F、Sharp格式碼形Fig.6 LC7461M-C13、MIT-C8D8、TC9012F、Sharp format codes received by infrared remote control coding analyzer
傳統紅外發射編譯器無法實現多用戶碼編碼,也不能滿足不同格式紅外碼的擴充性需求。本文設計的基于可編程智能遙控微控制器的紅外發射編譯器可實現多用戶碼編碼,同時因采用XML文件數據格式調用的方法解決了傳統編譯器無法擴充新編碼格式的問題,只需在XML文件數據庫中添加新的編碼格式即可完成新增編碼類型的編譯工作,可擴展性較強。