[OK210開發板體驗]功能篇(6)Linux字符驅動之紅外遙控驅動(待續)
[OK210開發板體驗]入門篇(1):開箱驗板
[OK210開發板體驗]入門篇(2):板載資源
[OK210開發板體驗]入門篇(3):開發環境(軟件安裝,開發環境,燒寫系統)
[OK210開發板體驗]入門篇(4):編程入門(NFS登錄,驅動入門)
[OK210開發板體驗]功能篇(1):Linux字符驅動之Led
[OK210開發板體驗]功能篇(2):Linux字符驅動之Key按鍵
[OK210開發板體驗]功能篇(3):Linux Input子系統之Key按鍵
[OK210開發板體驗]功能篇(4):Linux字符驅動之DS18B20
[OK210開發板體驗]功能篇(5):Linux字符驅動之PWM蜂鳴器
今天是功能篇的第六篇:Linux字符驅動之紅外遙控,本節主要分3部分:硬件分析,軟件基礎,驅動編程(待續)。
一、硬件分析
在[OK210開發板體驗]的第二篇:板載資源中,簡單分析了紅外遙控的功能和作用。其實對紅外遙控的操作,和對DS18B20的操作極其相似,主要區別是對協議時序的操作上。但是,對紅外遙控的操作,會更復雜,涉及到的知識點會更多,但作用也更大。
首先從OK210的底板原理圖中可知,OK210開發板上的使用的是HS0038B紅外接收芯片,該芯片支持大部分編碼協議。從電路上可知,紅外遙控的接收端DS18B20連接通過一個上拉電阻連接到了核心板的XM0ADDR1引腳上,如下圖所示:
而XM0ADDR1引腳由S5PV210用戶手冊,可知,該引腳位于MP0_4[1]引腳上,默認為EBI_ADDR[1],即當作外部總線接口使用,如下圖所示:
二、軟件基礎
1 紅外編解碼基礎
由于OK210板上的紅外接收器HS0038BNEC支持大部分通用的紅外遙控協議,而NEC協議是眾多紅外遙控協議中一種,除此之外,還有RC5、RC6等。市面上買到的非學習型萬能電視遙控器大多集成一種或多種編碼是NEC型的,在單片機學習過程中,也都是在講NEC協議的解碼,故以NEC為例。
從編碼的角度(遙控器的角度)來說,NEC協議規定:
(1)協議規定低位首先發送。即如下遙控器按下某一按鍵,NEC協議要求首先發送9ms的AGC(自動增益控制)的高脈沖,接著發送4.5ms的起始低電平,接下來是發送四個字節的地址碼和命令碼,這四個字節分別為:地址碼;地址碼反碼;命令碼;命令碼反碼,如下圖所示。即NEC編碼的一幀(通常按一下遙控器按鈕所發送的數據)由引導碼、地址碼及數據碼組成,把地址碼及數據碼取反的作用是加強數據的正確性。
(4)邏輯1為2.25ms,脈沖時間560us;邏輯0為1.12ms,脈沖時間560us。所以我們根據脈沖時間長短來解碼。推薦載波占空比為1/3至1/4。
2 紅外驅動基礎
(1)定時器的操作,
(2)Input子系統的操作
(3)NEC解碼的操作
三、驅動編寫(待續)