[OK210开发板体验]功能篇(6)Linux字符驱动之红外遥控驱动(待续)

前面进行了OK210试用体验的入门篇介绍,算是初步入门,分别包含:


[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],即当作外部总线接口使用,如下图所示:
 

所以,我们要对红外遥控进行操作,就是通过对MP0_4[1]引脚配置,来实现对红外遥控的接收。
二、软件基础
1 红外编解码基础

由于OK210板上的红外接收器HS0038BNEC支持大部分通用的红外遥控协议,而NEC协议是众多红外遥控协议中一种,除此之外,还有RC5、RC6等。市面上买到的非学习型万能电视遥控器大多集成一种或多种编码是NEC型的,在单片机学习过程中,也都是在讲NEC协议的解码,故以NEC为例。
从编码的角度(遥控器的角度)来说,NEC协议规定:
(1)协议规定低位首先发送。即如下遥控器按下某一按键,NEC协议要求首先发送9ms的AGC(自动增益控制)的高脉冲,接着发送4.5ms的起始低电平,接下来是发送四个字节的地址码和命令码,这四个字节分别为:地址码;地址码反码;命令码;命令码反码,
如下图所示。即NEC编码的一帧(通常按一下遥控器按钮所发送的数据)由引导码、地址码及数据码组成,把地址码及数据码取反的作用是加强数据的正确性。
 
(2)如果一直按着摇控器上的某一按键,NEC协议规定,发送的则是以110ms为周期的重复码,并不带任何数据,如下图所示。
 
(3)NEC协议规定,摇控器上发送的重复由9ms高电平和2.25ms的低电平以及560us的高电平组成,如下图所示。
 

(4)逻辑1为2.25ms,脉冲时间560us;逻辑0为1.12ms,脉冲时间560us。所以我们根据脉冲时间长短来解码。推荐载波占空比为1/3至1/4。
 
从解码的角度(OK210开发板)来说,由于接收到的信号是跟发送信号正好反向的,所以NEC协议解码的时序图,可参见下图
 

2 红外驱动基础
(1)定时器的操作,
(2)Input子系统的操作
(3)NEC解码的操作

三、驱动编写(待续)