,
(蘇州工業園區職業技術學院,蘇州 215123)

圖1 NEC標準
電視遙控器使用專用集成發射芯片來實現遙控碼的發射,如東芝TC9012、飛利浦SAA3010T等。通常彩電遙控信號的發射,就是將某個按鍵所對應的控制指令和系統碼(由0和1組成的序列)調制在38 kHz的載波上,然后經放大、驅動紅外發射管將信號發射出去。本文使用的是一體化接收頭,當一體化接收頭收到38 kHz 紅外信號時,輸出端輸出低電平,否則為高電平。不同公司的遙控芯片,采用的遙控碼格式也不一樣。較普遍的有兩種:一種是NEC標準,另一種是PHILIPS 標準。
NEC標準:遙控載波的頻率為38 kHz(占空比為1:3),當某個按鍵按下時,系統首先發射一個完整的全碼,如果鍵按下超過108 ms仍未松開,接下來發射的代碼(連發代碼)將僅由起始碼(9 ms)和結束碼(2.5 ms)組成。
一個完整的全碼=引導碼+客戶碼+客戶碼+數據碼+數據反碼。其中,引導碼是由高電平4.5 ms和低電平4.5 ms組成;接著是客戶碼的低8位、客戶碼的高8位、數據碼8位、數據碼的反碼8位,共32位數據;其中前16位為客戶碼,能區別不同的紅外遙控設備,防止不同機種遙控器互相干擾;后16位為8位的數據碼和8位的數據反碼,數據反碼用于核對數據是否接收準確。
NEC、TOSHIBA、SAMSONG公司的編碼格式有其共通之處:全碼都由“引導碼+客戶碼+客戶碼+數據碼+數據碼反碼”組成;接收端根據數據碼作出應該執行什么動作的判斷。連發代碼是在持續按鍵時發送的碼,它告知接收端,某鍵是在被連續地按著。NEC標準如圖1所示。
發射數據0時用“0.56 ms高電平+0.565 ms低電平=1.125 ms”表示,數據1用“高電平0.56 ms+低電平1.69 ms=2.25 ms”表示。即發射碼“0”表示發射38 kHz的紅外線0.56 ms,停止發射0.565 ms。發射碼“1”表示發射38 kHz的紅外線0.56 ms,停止發射1.69 ms。需要注意的是:當一體化接收頭收到38 kHz紅外信號時,輸出端輸出低電平,否則為高電平。所以一體化接收頭輸出的波形是與發射波形是反向的,如圖2所示。

圖2 遙控發射碼與一體化接收頭信號比較
NEC、TOSHIBA、SAMSONG公司的編碼格式有其共通之處:全碼都由“引導碼+客戶碼+客戶碼+數據碼+數據碼反碼”組成;數據“0”和“1”的定義相同,不同的只是引導碼高低電平的持續時間不同,客戶碼位數有長有短,第一個簡碼和全碼最后一位之間的延時不同,簡碼的引導脈沖不同等。所以,可以把相同的部分做成通用子程序,包括產生數據“0”和“1”的子程序“ONE”和“ZERO”,9 ms、4.5 ms、2.25 ms、22 ms、45 ms等時間控制子程序。
當使用MSP430G2553時,紅外遙控器的學習需要和通信功能相結合,單片機不能存儲學習到的紅外鍵值,需要傳給存儲器保存,也需要由存儲器來傳輸要還原的鍵值。同時由于MSP430G2553的RAM比較小,只有512字節,如果要實現紅外鍵值的學習,需要謹慎使用RAM空間。
有些公司的攝像機的遙控器是不遵循任何標準的紅外編碼格式的,所以要進行紅外學習只能采集到紅外接收頭端收到的碼值波形,在還原的時候,也就是在低電平時間內紅外輸出端發送38 kHz的載波,在高電平時間內紅外輸出端保持低電平。記錄接收到的波形的過程就是紅外學習的過程,可以采用定時器捕獲的方法,定時器設置為上升沿、下降沿都捕獲。MSP430G2553有兩個定時器,其中一個用來記錄系統TICKS(精度為10 μs),另外一個用作定時器捕獲。使用這兩個定時器就可以記錄下紅外接收頭接收到的波形,中斷處理流程圖如圖3所示。

圖3 處理流程

圖4 業務程序處理流程
我們記錄波形中高、低電平的時間,由于開始學習的第一個狀態一定是低電平狀態,所以不需要記錄高低電平位置,那么接下來需要把記錄下來的高低電平的值傳給業務,此時要區別下是不是干擾,如果記錄的值太少就不是鍵值,而是干擾源發出的,然后在業務程序需要進行發送的時候再把這組值發給我們,業務程序處理流程如圖4所示。
那么如果業務將包含一個鍵值信息的高低電平值發給我們,該怎么處理呢?在紅外鍵值還原過程中只需要用到一個用于計時功能的定時器,結合接收到的鍵值延時信息進行還原就可以了。其中的長延時是公司的攝像機遙控器在按鍵按下后發送的若干組值,這些代表一個鍵值,每組之間會有20 ms左右的延時,這個延時也需要記錄下來,并且需要記錄下這個長延時出現在第幾個高低電平位置,以便能正確還原出鍵值。還原流程如圖5所示。

圖5 還原處理流程
在調試過程中,首先需要弄明白紅外編碼和解碼的原理,然后針對具體情況學習不止一種遙控器。由于不能針對某種紅外協議標準進行學習,所以直接將接收到的紅外波形的高低電平時間記錄下來,還原時也是依據這個時間值進行還原。調試中總是遇到學習到的數據錯誤的問題,

[1] TI. RS-422 and RS-485 Standards Overview and System Configurations,2010.
[2] TI. GPIO User's Guide,2011.
[3] Jonahan Corbe, Alessandro Rubini, Greg Kroah-Hartman. LINUX 設備驅動程序[M]. 魏永明,等譯.北京:中國電力出版社,2010.
[4] 劉剛,趙建川. LINUX系統移植[M]. 北京:清華大學出版社,2011.
吳麗萍(講師),主要研究方向為自動控制系統;戈志明(工程師),主要研究方向為嵌入式系統,軟件測試。