话说红外接口很常见,各种单片机开发板上都有,可惜以前没玩,好吧,那就零基础开始吧。
于是便开始了:
按照光盘中实验4
所说:
建立一个signaltap
,来观察IRDA
接收后的数据。
下面就来分析一下:按下了5
(遥控器上),接收到的数据如下:
这个时候看看红外手册了,由于想快速上手,偷了个懒,网上下载了中文版。共享出来哈。
首先改红外接口采用的是NEC
协议,我们先从发送端看起:
根据NEC
协议,
发送端发出引导码,用户码(00
,FF
),数据码(1C
,e3
)
也就是说按下了5
(遥控器上)这个键的话
那么在接收端:
也就是说:
引导码: 9ms
低电平+4.5ms
高电平
重复码: 周期110ms
,9ms
低电平+2.25ms
高电平+0.56ms
低电平+
剩余全部高电平
数据1
: 0.56ms
低电平+1.69ms
高电平 (比较宽)
数据0
: 0.56ms
低电平+0.56ms
高电平 (比较窄)
那么来看signaltap
传回的数据:
说明白些就是窄的就是0
,宽的就是1
,因此:
1
和2
组成的是引导码,3
是用户码的0
,4
就是反码FF
,5
就是数据码1C
,6
是反码e3
(注意NEC
协议是先发送LSB
)
然后就可以判断出来了是5
(遥控器上)这个按键按下去的。
还有注意的地方:如果没有键按下去的话就是一直高电平。
一直按下去的话就是
那么FPGA
设计中就只要考虑几个问题就可以了:
(1) 引导码+数据,这是第一次按下的时候的数据格式,那么我们就是要识别出引导码,然后读出后面的数据了,(NEC是发送LSB在前)
(2) 重复码,如上图110ms,9ms低电平+2.25ms高电平+0.56ms低电平+剩余全部高电平。
(3) 无键按下的时候就是高电平了。
IRDA
中来的信号就是上面几种形式,那么接下来就是编写verilog
了。
全面了解红外遥控(中文版).pdf