资源描述:
《龙芯1B开发板一体化红外接收头20键迷你红外遥控器驱动.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、个人收集整理勿做商业用途1.红外知识简介31.1. 怎么判断遥控板是否发射了红外命令(是否有电)31.2. 红外遥控器是怎样解决干扰问题的32.硬件简介ﻩ32.1. 一体化红外接收头42.1.1. 一体化红外接收头在开发板上的位置42.1.2. 一体化红外接收头原理图52.1.3.一体化红外接收头原理72.2. 迷你20键38K红外遥控板72.2.1.遥控器按键编码表ﻩ72.2.2.NEC编码分析ﻩ83.源码分析93.1.主要思路ﻩ93.2.阻塞IOﻩ103.3.中断的上下半部ﻩ103.4.内核定时器ﻩ114.运行
2、效果ﻩ124.1.打开调试开关的效果ﻩ124.2.不打开调试开关的效果175.源码清单ﻩ185.1.驱动程序ﻩ185.1.1. ls1b_ir.h185.1.2.ls1b_ir.cﻩ185.1.3.Platform.c295.2.应用程序ﻩ305.2.1.ls1b_ir_test_app.cﻩ306.参考文档31ﻬ版本更新日期更新内容V1.02014.4.5创建个人收集整理勿做商业用途1.ﻬ红外知识简介个人认为百度文库中的文档《全面了解红外遥控(中文版).pdf》讲得很好。我这里只是把要点提一下。1.1.怎么判断遥
3、控板是否发射了红外命令(是否有电)我们时常会碰到一个问题——到底遥控器还有电没有。对于电视遥控器可以取下电池看看,但是对于这里使用的迷你遥控器怎么办?使用的是锂电池。办法是通过手机的摄像头看遥控器的红外发射管。当按下遥控器按键时,如果有电会发射红外命令,遥控器上的红外发射管会发出红外光,手机的摄像头能看到这种光。下图《全面了解红外遥控(中文版).pdf》为通过手机摄像头看遥控器的图片1.2.红外遥控器是怎样解决干扰问题的只要有发热的物体都有红外光,问题是这么多红外光源,遥控器是怎样进行准确的传递信息的呢?采取了两种
4、措施:一、采用指定波长(940nm)的红外光;二、对940nm的红外光进行调制,调制到38Khz上。虽然发出红外光的光源有很多,但是每个发出红外光的波长不一定一样,就算是都发出940nm的红外光,通常也没有什么规律,为了排除干扰能够进行准确的通信,遥控器还将940nm的红外光调制到38Khz上。2.硬件简介说了这么久,还不知道开发板和遥控器到底是哪一款,来个合影吧。个人收集整理勿做商业用途注意:本驱动是针对图中所示的遥控器的驱动。1.1.一体化红外接收头1.1.1.一体化红外接收头在开发板上的位置先来看一下开发板上
5、一体化红外接收头在哪里个人收集整理勿做商业用途位于电源和网口之间。1.1.1.一体化红外接收头原理图再来看看原理图中的一体化红外接收头的电路个人收集整理勿做商业用途由图可知,一体化红外接收头有3个引脚,分别为5v电源,地和信号输出引脚。注意:原理图中信号输出引脚为GPIO60,这是原理图中的标注,实际上是龙芯1B处理器的GPIO61,这点很重要。原理图中也有说明,如下图所示个人收集整理勿做商业用途1.1.1.一体化红外接收头原理左边为遥控器发射的38khz的红外信号,右边为一体化红外接收头收到信号后,解调得到的信号
6、。即没有38khz红外信号时,一体化红外接收头输出高电平;有38khz红外信号时,输出低电平。1.2.迷你20键38K红外遥控板1.2.1.遥控器按键编码表为了在linux驱动中能够正确解析遥控器的红外命令,并判断出具体是哪个按键被按下,必须知道遥控器按键编码。这里选择的这款遥控器的按键编码是已知的,如下图所示个人收集整理勿做商业用途注意:第一行中间那个(编码为46的)按键本遥控器没有。其它的编码都正确,详细请看后面的测试结果。如果不幸没有这个编码表,只有通过示波器来找出每个按键的编码值了。1.1.1.NEC编码分
7、析参考文档《全面了解红外遥控(中文版).pdf》中给出了NEC编码格式,如下图所示针对这里使用的遥控器,对应的编码如下个人收集整理勿做商业用途其中address就是用户码0x00,按键编码为按键编码表中的值,比如“开关”按键的编码值为0x45,“menu”按键的编码值为0x47,“Test”按键的编码值为0x44,“倒退”按键的编码值为0x43等等。驱动中要得到的就是按键编码。上图中的逻辑‘1’和逻辑‘0’对应红外接收头信号引脚的高低电平,NEC编码规定:560us高电平+1690us低电平表示逻辑‘1’,560高
8、电平+560低电平表示逻辑‘0’。如下图所示。1.源码分析1.1.主要思路简单来说,应用程序执行read()函数,然后阻塞,直到有红外命令并解析后,驱动才将获取的“按键编码”返回给应用程序,应用程序的read()才返回。获取按键编码的方法是:一体化红外接收头在收到遥控器信号后,在信号输出引脚输出高低电平,并产生中断,中断程序中计算两次中断间隔的时间如果为2.