Xilinx系FPGA学习笔记(八)FPGA与红外遥控

系列文章目录


文章目录


红外通信

简单介绍

利用红外线来传送,不干扰其他电器设备工作,也不会影响周边环境,若对发射信号进行编码,可实现多路红外遥控功能。

红外遥控系统分为发射和接收两部分。发射部分的发射元件为红外发光二极管,它发出的是红外线而不是可见光。接收电路的红外接收管是一种光敏二极管,使用时要给红外接收二极管加反向偏压,它才能正常工作而获得高的灵敏度。

目前的产品,大都采用成品的一体化接收头。红外线一体化接收头是集红外接收、放大、滤波和比较器输出等的模块,性能稳定、可靠。

HT6221型红外模块,三脚的红外接收器,内部集成了芯片,会把数据解析出来,把脉冲解析为高低电平

红外接收头的电路:

红外遥控有很多协议,最广泛的是NEC协议

红外协议分析

HT6221 为 Holtek 公司生产的一款基于 NEC 红外通信协议的遥控编码芯片,其采用PPM(Pulse Position Modulation)进行编码。

一帧数据由帧头、地址码、 数据码、 数据反码以及 1bit 结束位(可忽略) 组成。

引导码(Leader Code):引导码是NEC协议信号的开头部分,主要用于标识一个新的数据帧的开始,并帮助接收设备同步信号。9ms的高电平(载波信号) + 4.5ms的低电平(无载波信号)

地址码(Address Code):地址码用于标识被控制的设备。例如,不同的家电(如电视、空调)会有不同的地址码,接收设备通过识别该码来确认这是发送给它的命令。8位

地址反码(Address Inverted Code):地址反码是地址码的每一位取反后的结果,用来校验地址码的正确性。

8位,与地址码一一对应。判断是否出现了传输错误。如果两者不匹配,接收器会忽略该信号。

控制码(Data Code 或 Control Code):控制码指定了要执行的具体命令,比如开/关、音量增加、频道切换等操作。8位,最多可表示256种命令。每个控制码对应一个特定的操作命令,如音量加、音量减等。

控制反码(Data Inverted Code 或 Control Inverted Code):控制反码是控制码的每一位取反后的结果,用于校验控制码的正确性。。如果两者不匹配,接收器会忽略该信号。

发送顺序是按照从低位到高位,反码是为了增加传输的可靠性。

这是一帧红外通信,红外二极管发送的都是38KHz的脉冲信号

地址是8位的,地址和数据都是按照LSB在前,MSB在后,理论上该协议支持高达 256 个用户指令。

该协议采用脉冲之间不同时长的时间间隔来区分"1"和"0"

按键一直按着,会发送重复码,在红外遥控通信中,连发码(Repeat Code)是用于处理长按按键时的特殊信号。通常情况下,当用户按下遥控器上的某个按键,遥控器会发送一个完整的指令数据帧。然而,如果用户长时间按住按键,比如长按"音量加"按钮以连续增加音量,此时重复发送完整的数据帧不仅会浪费电量,还可能造成信号冲突。因此,连发码被设计用于这种场景,以更高效的方式传达用户的意图。

连发码的结构:

引导码

高电平脉冲:560μs,表示这个信号是连发码。

低电平结束:低电平持续时间会保持到下一个连发码或者新的按键被释放。

FPGA实现红外通信

实际的接收器接收到信号后,输出的是发送波形的反码,并且会将脉冲转换为高低电平的方式:

所以在FPGA的设计中,主要是识别起始码中的 9ms 的低电平、4.5ms 的高电平,高低电平中的560us 的低电平、1690us 的高电平和 560us 的高电平,可以用时钟累计的方法来识别各个时间。

对外部信号进行打两拍寄存,之后判断上升沿和下降沿,之后就需要设计状态机

IDLE:空闲状态,IR 接收信号出现下降沿的时候,跳转到LEADER_T9 状态去识别引导码。

LEADER_T9:识别 9ms 的低电平引导码,识别成功则跳转到 LEADER_T4_5 状态去识别 4.5ms 的高电平引导码,否则返回空闲态。

LEADER_T4_5:识别 4.5ms 的高电平引导码,识别成功则进入读码状态 DATE_GET,否则返回空闲态。

DATE_GET:读码状态,若 32 个码字已经读完或者读取过程中发生了错误,则返回空闲态 。(地址+地址反码+数据+数据反码)

相关推荐
HIZYUAN11 分钟前
AGM FPGA如何配置上拉或者下拉电阻
fpga开发
∑狸猫不是猫14 分钟前
(13)CT137A- 简易音乐盒设计
fpga开发
南宫生4 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
sanguine__4 小时前
Web APIs学习 (操作DOM BOM)
学习
冷眼看人间恩怨4 小时前
【Qt笔记】QDockWidget控件详解
c++·笔记·qt·qdockwidget
ThreeYear_s6 小时前
基于FPGA 的4位密码锁 矩阵键盘 数码管显示 报警仿真
fpga开发·矩阵·计算机外设
数据的世界016 小时前
.NET开发人员学习书籍推荐
学习·.net
四口鲸鱼爱吃盐7 小时前
CVPR2024 | 通过集成渐近正态分布学习实现强可迁移对抗攻击
学习
OopspoO9 小时前
qcow2镜像大小压缩
学习·性能优化
A懿轩A9 小时前
C/C++ 数据结构与算法【栈和队列】 栈+队列详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·栈和队列