用微處理器I/O口控制紅外接收設(shè)備
紅外遙控是一種無線、非接觸控制技術(shù),具有抗干擾,電路簡(jiǎn)單,容易編碼和解碼,功耗小,成本低等優(yōu)點(diǎn),幾乎適用于所有家電的控制,并越來越多地應(yīng)用到計(jì)算機(jī)系統(tǒng)中。出于項(xiàng)目需要,要對(duì)一個(gè)內(nèi)部程序未知的設(shè)備實(shí)現(xiàn)控制,我們把設(shè)備自帶的紅外接收頭作為切入點(diǎn)。
本文引用地址:http://2s4d.com/article/142182.htm項(xiàng)目使用的是GOSSAT(高斯賽特)的GSR—S80 S型數(shù)字衛(wèi)星接收機(jī),設(shè)備配套有一個(gè)遙控器,單憑外觀無法知道它所使用紅外協(xié)議的種類,如果有示波器的話,就可以捕捉信號(hào)波形并進(jìn)行分析。
紅外接收頭的種類很多,引腳定義也不相同,一般都有三個(gè)引腳,包括供電腳,接地和信號(hào)輸出腳。常見的接收頭型號(hào)有0038和1838。從外形上看,項(xiàng)目用的接收機(jī)使用的是0038接收頭。
項(xiàng)目使用的是ATTEN(安泰信)的ADS-1102C數(shù)字示波器。把接收頭的信號(hào)輸出腳和地腳引出來,接入示波器,捕捉波形時(shí)建議用25ms/div的時(shí)間間隔比較方便,之后再放大到2.5ms/div進(jìn)行查看和分析。鑒定遙控器有沒輸出信號(hào)的小技巧,打開手機(jī)的拍照功能,對(duì)著遙控器的紅外發(fā)射管,此時(shí)按下遙控器上任意一個(gè)鍵,如果手機(jī)屏幕上能看到發(fā)射管發(fā)出了紅紫光,說明遙控器是正常的。
經(jīng)過分析捕捉到的波形得知,項(xiàng)目所用接收機(jī)采用的是NEC紅外協(xié)議。查閱NEC協(xié)議的資料,其特征如下:
(1)8位地址和8位指令長(zhǎng)度;
(2)地址和命令2次傳輸(確??煽啃?;
(3)PWM脈沖位置調(diào)制,以發(fā)射紅外載波的占空比代表“0”和“1””;
(4)載波頻率為38kHz;
(5)位時(shí)間為1.125ms或2.25ms;
NEC碼的位定義:一個(gè)脈沖對(duì)應(yīng)560μs的連續(xù)載波,一個(gè)邏輯1傳輸需要560μs脈沖+1680μs低電平,一個(gè)邏輯0的傳輸需要560μs脈沖+560μs低電平。而遙控接收頭在收到脈沖的時(shí)候?yàn)榈碗娖剑跊]有脈沖的時(shí)候?yàn)楦唠娖?,這樣,我們?cè)诮邮疹^端收到的信號(hào)是反相的:邏輯1是560μs低+1680ms高,邏輯0是560μs低+560μs高。
NEC遙控指令的數(shù)據(jù)格式為:同步碼頭、地址碼、地址反碼、控制碼、控制反碼。同步碼由一個(gè)9ms的低電平和一個(gè)4.5ms的高電平組成,地址碼、地址反碼、控制碼、控制反碼均是8位數(shù)據(jù)格式。按照低位在前,高位在后的順序發(fā)送。采用反碼是為了增加傳輸?shù)目煽啃?可用于校驗(yàn))。
NEC碼規(guī)定的連發(fā)碼(由9ms低電平+2.5m高電平+0.56ms低電平+97.94ms高電平組成),發(fā)送完后40ms,遙控再發(fā)送一個(gè)9ms低,2ms高的脈沖,表示按鍵的次數(shù),出現(xiàn)一次則表示只按下了一次,如果出現(xiàn)多次,則可以認(rèn)為是持續(xù)按下該鍵。
知道協(xié)議之后,我們就可以進(jìn)一步分析出遙控器的地址碼和各個(gè)按鍵的控制碼。項(xiàng)目所用接收機(jī)有點(diǎn)特殊,通過示波器去看,得出地址正碼是0xA1,地址反碼是0xDE,其余位都取反了,唯獨(dú)最高位都是1,這個(gè)不同于常規(guī)。
之后的控制碼,由于按鍵數(shù)量多,可以編寫一個(gè)紅外解碼程序來解出這些鍵值,之后再用示波器來抽檢幾個(gè),用于保證解出來的控制碼的正確性,這是很關(guān)鍵的一步,不可小視。
之后就可以開始進(jìn)行I/O的虛擬NEC工作了,項(xiàng)目采用STM32作為主控芯片,這里的功能只需要用到一個(gè)普通I/O,我們使用的是PA14。硬件上只需把PA14連接到紅外接收頭的信號(hào)輸出腳,地腳和STM32共地就可以了。
關(guān)于STM32的I/O設(shè)置說明,每個(gè)I/O口可以自由編程,單I/O口寄存器必須要按32位字被訪問。STM32的每個(gè)I/O端口都由7個(gè)寄存器來控制。其中CRL和CRH控制著每個(gè)I/O口的模式及輸出速率,對(duì)ODR賦值可以改變對(duì)應(yīng)位I/O口的高低電平。
萬能遙控器相關(guān)文章:萬能遙控器代碼
評(píng)論