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

news2024/9/22 18:27:48

系列文章目录


文章目录

  • 系列文章目录
  • 红外通信
    • 简单介绍
    • 红外协议分析
  • 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 个码字已经读完或者读取过程中发生了错误,则返回空闲态 。(地址+地址反码+数据+数据反码)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2155638.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

全面介绍 CSS 属性值计算 —— 掌握它就了解大部分 CSS

CSS 的核心之一就在此,直接影响我们开发中的调试和布局!!! 举个 🌰:页面上存在一个 h1 元素,不设置任何样式,但是当我们点开 computed 查看,几乎 MDN 上的 CSS 属性都存…

C++高精度计时方法总结(测试函数运行时间)

文章目录 一、clock()函数——毫妙级二、GetTickCount()函数(精度16ms左右)——毫妙级三、高精度时控函数QueryPerformanceCounter()——微妙级四、高精度计时chrono函数——纳妙级五、几种计时比较六、linux下的计时函数gettimeofday()-未测试参考文献 …

C语言6大常用标准库 -- 4.<math.h>

目录 引言 4. C标准库--math.h 4.1 简介 4.2 库变量 4.3 库宏 4.4 库函数 4.5 常用的数学常量 🌈你好呀!我是 程序猿 🌌 2024感谢你的陪伴与支持 ~ 🚀 欢迎一起踏上探险之旅,挖掘无限可能,共同成长&…

《他们的奇妙时光》圆满收官,葛秋谷新型霸总获好评

9月21日,由王枫、张开法执导,周洁琼、葛秋谷领衔主演的奇幻爱情题材都市喜剧《他们的奇妙时光》圆满收官。该剧讲述了意外被游戏角色刑天附体的设计师宋灵灵,为修复游戏漏洞,被迫与能压制刑天的甲方总裁萧然同居,两人在…

LDR6020在索尼PS5 VR2适配器中的应用技术方案探讨

随着虚拟现实(VR)技术的日益成熟,索尼PlayStation VR2(简称PS VR2)作为新一代VR设备,凭借其出色的性能和沉浸式体验,成为了游戏界的焦点。为了进一步扩大PS VR2的应用范围,索尼推出了…

深度学习02-pytorch-01-张量的创建

深度学习 pytorch 框架 是目前最热门的。 深度学习 pytorch 框架相当于 机器学习阶段的 numpy sklearn 它将数据封装成张量(Tensor)来进行处理,其实就是数组。也就是numpy 里面的 ndarray . pip install torch1.10.0 -i https://pypi.tuna.tsinghua.edu.cn/simp…

LLMs之LCM:《MemLong: Memory-Augmented Retrieval for Long Text Modeling》翻译与解读

LLMs之LCM:《MemLong: Memory-Augmented Retrieval for Long Text Modeling》翻译与解读 导读:MemLong 是一种新颖高效的解决 LLM 长文本处理难题的方法,它通过外部检索器获取历史信息,并将其与模型的内部检索过程相结合&#xff…

分布式网络存储技术是什么?分布式存储技术有哪些

分布式储存是指将数据分散存储在多个节点上的一种技术。但是你们知道分布式网络存储技术是什么?相比传统的集中式存储,分布式储存具有更高的可靠性和可用性。分布式网络存储是一种将数据分散存储在多个节点或服务器上的架构。 分布式网络存储技术是什么&…

开源 AI 智能名片 S2B2C 商城小程序与营销工具的快速迭代

摘要:本文以开源 AI 智能名片 S2B2C 商城小程序为研究对象,探讨在营销工具快速迭代的背景下,该小程序如何借鉴以拼多多为代表的“小程序拼团”、以蘑菇街为代表的“小程序直播”、以花点时间为代表的“小程序按月订花”等经典案例&#xff0c…

springboot注册和注入组件方式概览

IoC:Inversion of Control(控制反转) 控制:资源的控制权(资源的创建、获取、销毁等) 反转:和传统的方式不一样了 DI :Dependency Injection(依赖注入) 依赖&…

【HTTPS】对称加密和非对称加密

HTTPS 是什么 HTTPS 是在 HTTP 的基础上,引入了一个加密层(SSL)。HTTP 是明文传输的(不安全) 当下所见到的大部分网站都是 HTTPS 的,这都是拜“运营商劫持”所赐 运营商劫持 下载⼀个“天天动听“&…

剖析枚举类型的使用与优点

枚举类型顾名思义——就是把所有的值一一列举出来 列如星期 把每一项都列举出来就是枚举 这些可能取值都是有值的,默认从0开始,依次递增1,当然在声明枚举类型的时候也可以赋初值, 要是在某一项赋初值之后,后面的就会…

客户转化预测以及关键因素识别_支持向量机与相关性分析

数据入口:数字营销转化数据集 - Heywhale.com 数据集记录了客户与数字营销活动的互动情况。它涵盖了人口统计数据、营销特定指标、客户参与度指标以及历史购买数据,为数字营销领域的预测建模和分析提供了丰富的信息。 数据说明: 字段说明Cu…

JavaEE: 创造无限连接——网络编程中的套接字

文章目录 Socket套接字TCP和UDP的区别有连接/无连接可靠传输/不可靠传输面向字节流/面向数据报全双工/半双工 UDP/TCP api的使用UDPDatagramSocketDatagramPacketInetSocketAddress练习 TCPServerSocketSocket练习 Socket套接字 Socket是计算机网络中的一种通信机制&#xff0…

Clion使用vcpkg管理C/C++包

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、Clion安装vcpkg二、使用步骤1.切换到清单模式2.开始安装包 三、测试代码总结 前言 Linux上的库基本都可以通过apt或yum等包管理工具来在线安装包&#xff…

cgroup基本原理与使用

Linux cgroups是Linux内核中的一项强大功能,允许用户对进程进行**资源限制、优先级控制、监控和隔离。它主要用于管理和控制计算资源的分配,特别是在容器技术(如 Docker 和 LXC)中得到了广泛应用。 1. Cgroups的基本概念和原理 …

Qwen-2.5 + ClaudeDev + Aider:这套免费的AI编程工具链,简直太棒了!

Qwen-2.5 ClaudeDev Aider:这套免费的AI编程工具链,简直太棒了! 原创 Aitrainee AI进修生 🍹 Insight Daily 🪺 Aitrainee | 公众号:AI进修生 Hi,这里是Aitrainee,欢迎阅读本…

AI字幕翻译器行业分析:前五大厂商占有大约29.5%的市场份额

AI 字幕翻译器正在彻底改变我们使用不同语言消费媒体的方式,使内容可以普遍访问。这些先进的技术利用机器学习和自然语言处理,将口语对话实时翻译成字幕。这一功能不仅打破了语言障碍,提升了观众的体验,而且还使内容创作者能够毫不…

比 Kimi 更强!用 Claude 仿写头条文章,轻松过原创(附完整指令)

最近,我有个做头条号的朋友跟我吐槽,说每天都要更新内容,经常写文章写到半夜,他已经快撑不住了。我听完实在有点不忍心,就告诉他,其实可以用 AI 来帮忙写头条文章。 朋友一脸怀疑,说“怎么可能&…

消灭病毒gamedemo

DestoryVirus 一、AudioSourceManager using System.Collections; using System.Collections.Generic; using UnityEngine;public class AudioSourceManager : MonoBehaviour {public static AudioSourceManager Instance { get; private set; }public SoundPlayer soundPla…