Linux驱动开发-编写NEC红外线协议解码驱动

红外线知识点介绍

红外线是指光谱中波长从760nm到400um的电磁波,属于不可见光范畴。目前,绝大多数的视频和音频设备都支持通过红外遥控进行操作,例如电视机、空调和影碟机等,红外遥控技术因其广泛应用和低成本,成为日常设备控制的首选方式。

红外线遥控是目前最常见的通信和遥控手段之一。由于红外线遥控装置具有体积小、功耗低、功能强大且成本低廉的特点,因此在彩电、录像机之后,录音机、音响设备、空调以及玩具等小型电器中也广泛采用了红外线遥控技术。在工业环境中,如高压、辐射、有毒气体和粉尘等场合,红外线遥控不仅可靠,还能有效隔离电气干扰。

NEC协议是众多红外线协议中的一种,曾经广泛应用于电视机和投影仪设备中,早期的万能电视遥控器通常采用的是NEC协议。

本文将介绍如何在Linux系统下,通过红外线接收模块编写一个NEC协议的红外线解码驱动,解析遥控器传输的各种控制指令,并完成相应的动作响应。驱动中使用外部中断接收数据,并通过定时器计算间隔时间来完成解码。

NEC协议的特点如下:

单个码分为五个部分(不包括重复码):引导码+用户码+用户反码+按键码+按键反码。

对于接收方,引导码为9ms的低电平和4.5ms的高电平。

接收的数据为0时,表现为560us的低电平和560us的高电平。

接收的数据为1时,表现为560us的低电平和1680us的高电平。

Linux驱动开发-编写NEC红外线协议解码驱动Linux驱动开发-编写NEC红外线协议解码驱动

硬件环境

当前开发板采用的是友善之臂的Tiny4412,搭载三星的EXYNOS4412处理器,最高主频为1.5GHz,运行的Linux内核版本为3.5。

以下是红外线接收模块的原理图:

快写红薯通AI 快写红薯通AI

快写红薯通AI,专为小红书而生的AI写作工具

快写红薯通AI 57 查看详情 快写红薯通AI

Linux驱动开发-编写NEC红外线协议解码驱动

通过杜邦线连接到开发板的中断输入脚上(GPX1_0接口,第9个排针)。

Linux驱动开发-编写NEC红外线协议解码驱动

驱动安装后的解码效果如下:

Linux驱动开发-编写NEC红外线协议解码驱动

案例代码

驱动代码的思路是通过外部中断接收NEC协议的数据,在工作队列中完成协议解析,并最终通过printk函数打印出来。

代码语言:javascript代码运行次数:0

运行复制“`javascript#include linux>#include #include #include #include #include #include #include

static int irq;

define NEC_INFRARED_GPIO EXYNOS4_GPX1(0)

static struct work_struct work;

/获取高电平持续时间–us单位/static u32 GetTimeH(void){ktime_t my_time,my_time2;unsigned int i,j;my_time=ktime_get(); //获取当前时间i=ktime_to_us(my_time); //转 uswhile(gpio_get_value(NEC_INFRARED_GPIO)){}my_time2=ktime_get(); //获取当前时间j=ktime_to_us(my_time2); //转 usreturn j-i;}

/获取低电平持续时间–us单位/static u32 GetTimeL(void){ktime_t my_time,my_time2;unsigned int i,j;my_time=ktime_get(); //获取当前时间i=ktime_to_us(my_time); //转 uswhile(gpio_get_value(NEC_INFRARED_GPIO)==0){}my_time2=ktime_get(); //获取当前时间j=ktime_to_us(my_time2); //转 usreturn j-i;}

/工作函数/static u8 buf[4];//[0]用户码 [1]用户反码 [2]按键码 [3]按键反码static void new_work_func(struct work_struct *work){u8 data=0;u32 time_us;

/*1. 判断引导码*/time_us=GetTimeL();if(time_us>12000 || time_us700 || time_us<400)  // 0 :标准560    return;/*2. 接收数据*/for(int i=0;i1500)  // 1 :标准1680        data |= (1<<i);    else        data &= ~(1<1500)  // 1 :标准1680        data |= (1<<i);    else        data &= ~(1<> 8) & 0xFF;  // 用户反码buf[2] = (data >> 16) & 0xFF;  // 按键码buf[3] = (data >> 24) & 0xFF;  // 按键反码/*4. 打印数据*/printk("用户码:0x%02x, 用户反码:0x%02x, 按键码:0x%02x, 按键反码:0x%02xn", buf[0], buf[1], buf[2], buf[3]);

}

以上就是Linux驱动开发-编写NEC红外线协议解码驱动的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/470579.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月8日 07:21:36
VSCode如何实现无障碍编程 VSCode辅助功能的人性化设置
下一篇 2025年11月8日 07:21:50

相关推荐

  • linux怎么查看磁盘驱动器列表

    linux怎么查看磁盘驱动器列表linux怎么查看磁盘驱动器列表linux怎么查看磁盘驱动器列表linux怎么查看磁盘驱动器列表

    linux查看磁盘驱动器列表的方法:1、使用findmnt命令,可查看安装的驱动器列表,会输出树状布局的信息;2、使用cat命令读取“/proc/mounts”文件中的内容,可查看安装的驱动器列表,语法“cat /proc/mounts”;3、使用mount命令,可列出已装载的驱动器,语法“moun…

    2026年10月8日 • 用户投稿
    100
  • 如何用Java生成验证码?图形验证码生成方案

    如何用Java生成验证码?图形验证码生成方案如何用Java生成验证码?图形验证码生成方案如何用Java生成验证码?图形验证码生成方案如何用Java生成验证码?图形验证码生成方案

    验证码生成的核心步骤包括:1.使用随机数生成4到6位由字母和数字组成的字符;2.通过bufferedimage创建画布并用graphics2d绘制内容;3.增加干扰线、噪点或背景渐变提高安全性;4.选择png格式输出图片。具体实现中,先定义字符集并随机选取字符组成验证码,接着设置画布大小和绘制背景及…

    2026年10月8日 • 用户投稿
    100
  • win10怎么禁用驱动程序强制签名_win10禁用驱动强制签名操作步骤

    win10怎么禁用驱动程序强制签名_win10禁用驱动强制签名操作步骤win10怎么禁用驱动程序强制签名_win10禁用驱动强制签名操作步骤win10怎么禁用驱动程序强制签名_win10禁用驱动强制签名操作步骤win10怎么禁用驱动程序强制签名_win10禁用驱动强制签名操作步骤

    01.通过高级启动选项可临时禁用驱动程序强制签名,适合一次性安装;02.使用命令提示符启用测试签名模式,可长期安装未签名驱动,重启后生效并显示水印;03.通过组策略编辑器修改代码签名策略,仅限专业版及以上系统,可永久忽略签名验证。 如果您在安装某些旧硬件或第三方驱动程序时遇到“驱动程序未经过数字签名…

    2026年10月8日 • 用户投稿
    100
  • oracle字段精度修改,oracle number类型增加精度

    大家好,又见面了,我是你们的朋友全%ignore_a_1%君。 在将Oracle数据库迁移到SQL Server时,遇到了如下图所示的错误: 经过调查,发现问题出在某些表的NUMBER类型没有设置精度上。解决方案是修改表结构,增加精度。具体操作如下: 考虑到有些表可能有多个字段未设置精度,因此我们采…

    2026年10月8日
    100
  • linux man命令是干啥的

    linux man命令是干啥的linux man命令是干啥的linux man命令是干啥的linux man命令是干啥的

    linux man命令是Linux下的帮助指令,通过man指令可以查看Linux中的指令帮助、配置文件帮助和编程帮助等信息;该命令使用语法如“man sleep”,表示man是按照手册的章节号的顺序进行搜索的,并且只会显示sleep命令的手册。 本教程操作环境:linux5.9.8系统、Dell G…

    2026年10月8日 • 用户投稿
    100
  • linux 0.0.0.0是什么地址

    linux 0.0.0.0是什么地址linux 0.0.0.0是什么地址linux 0.0.0.0是什么地址linux 0.0.0.0是什么地址

    linux 0.0.0.0是表示网路中的本地;0.0.0.0是对外开放,是通过服务域名、ip可以访问的端口;可以通过0.0.0.0匹配所有服务器IP,如果进程监听0.0.0.0,那么客户端访问服务器任何一个可达IP都可以使用此进程,而个人电脑未配置IP时表示本机地址。 本教程操作环境:linux5.…

    2026年10月8日 • 用户投稿
    000
  • 处理海量数据不再是难题:loophp/collection助你打造高效、低内存的PHP应用

    处理海量数据不再是难题:loophp/collection助你打造高效、低内存的PHP应用处理海量数据不再是难题:loophp/collection助你打造高效、低内存的PHP应用处理海量数据不再是难题:loophp/collection助你打造高效、低内存的PHP应用处理海量数据不再是难题:loophp/collection助你打造高效、低内存的PHP应用

    Composer在线学习地址:学习地址 我最近在开发一个数据分析工具,需要处理一个包含数百万行记录的日志文件。我的任务是从这个文件中筛选出特定类型的错误日志,并进行一些格式化处理。起初,我像往常一样使用PHP的原生数组函数来处理:先用file()将整个文件读入内存,然后用array_filter()…

    2026年10月8日 • 用户投稿
    600
  • linux用来做什么用的

    linux用来做什么用的linux用来做什么用的linux用来做什么用的linux用来做什么用的

    linux是一种免费使用和自由传播的类UNIX操作系统;Linux操作系统嵌入了TCP/IP协议栈,协议软件具有路由转发功能;路由转发依赖作为路由器的主机中安装多块网卡,当某一块网卡接收到数据包后,系统内核会根据数据包的目的IP地址,查询路由表,然后根据查询结果将数据包发送到另外一块网卡,最后通过此…

    2026年10月8日 • 用户投稿
    300
  • java环境变量的配置与使用步骤详解(全网最详细教程)

    java环境变量的配置与使用步骤详解(全网最详细教程)java环境变量的配置与使用步骤详解(全网最详细教程)java环境变量的配置与使用步骤详解(全网最详细教程)java环境变量的配置与使用步骤详解(全网最详细教程)

    配置java环境变量的核心步骤为:1.下载并安装jdk,建议选择lts版本;2.设置java_home变量指向jdk安装目录;3.将%java_home%bin或$java_home/bin添加到path变量;4.验证配置是否成功。配置java环境变量是为了让操作系统识别jdk位置,确保在任意目录下…

    2026年10月8日 • 用户投稿
    000
  • linux中路径是指什么

    linux中路径是指什么linux中路径是指什么linux中路径是指什么linux中路径是指什么

    linux中路径是指包含整个文件名称及文件的位置,这样的定位称之为路径;指明一个文件存放的位置,有2种方法,分别是使用绝对路径和相对路径;绝对路径是相对于根路径的,只要文件不移动位置,那么它的绝对路径是恒定不变的;而相对路径是相对于当前所在目录而言的,随着程序的执行,当前所在目录可能会改变,因此文件…

    2026年10月8日 • 用户投稿
    100
  • linux可以访问隐藏文件夹吗

    linux可以访问隐藏文件夹吗linux可以访问隐藏文件夹吗linux可以访问隐藏文件夹吗linux可以访问隐藏文件夹吗

    linux可以访问隐藏文件夹,其访问方法:1、连接相应linux主机,进入到linux命令行状态下,等待输入shell指令;2、在linux命令行下输入shell指令“cd .1.test/”;3、按“回车键”运行shell指令即可用cd命令进入隐藏文件夹。 本教程操作环境:linux5.9.8系统…

    2026年10月8日 • 用户投稿
    100
  • 直指2nm 要领先中国!印度:我们正在研制一些世界上最先进的芯片

    直指2nm 要领先中国!印度:我们正在研制一些世界上最先进的芯片直指2nm 要领先中国!印度:我们正在研制一些世界上最先进的芯片直指2nm 要领先中国!印度:我们正在研制一些世界上最先进的芯片直指2nm 要领先中国!印度:我们正在研制一些世界上最先进的芯片

    9月2日消息,今天印度公开表示,正在研制一些世界上最先进的芯片。 上述消息出自印度总理莫迪,而他们本人并没有透露太多具体信息,只是强调是世界上最先进的芯片。 目前全球最先进芯片,莫过于基于台积电工艺制造的2nm芯片,而印度这次的表态也很有意思。 此前印度媒体曾披露,印度政府已委托班加罗尔先进计算发展…

    2026年10月8日 • 用户投稿
    100
  • 如何在Windows上编辑MD文件?使用Markdown编辑器的完整指南

    如何在Windows上编辑MD文件?使用Markdown编辑器的完整指南如何在Windows上编辑MD文件?使用Markdown编辑器的完整指南如何在Windows上编辑MD文件?使用Markdown编辑器的完整指南如何在Windows上编辑MD文件?使用Markdown编辑器的完整指南

    使用Markdown编辑器可高效编辑MD文件。推荐工具包括Typora(所见即所得)、VS Code(开发者首选)、Obsidian(知识管理)、Joplin(跨平台同步)和Mark Text(开源免费)。编辑时用#、*、[]()等语法编写标题、列表、链接、图片和代码块,借助实时预览功能可即时查看排…

    2026年10月8日 • 用户投稿
    200
  • win11升级助手使用指南_官方升级工具使用方法详解

    win11升级助手使用指南_官方升级工具使用方法详解win11升级助手使用指南_官方升级工具使用方法详解win11升级助手使用指南_官方升级工具使用方法详解win11升级助手使用指南_官方升级工具使用方法详解

    首先使用Windows 11安装助手下载工具并检查设备兼容性,确认符合要求后接受许可条款开始下载系统文件,下载完成后重启电脑完成升级,或通过创建ISO镜像实现离线安装。 如果您希望将当前系统升级至Windows 11,但不确定操作流程或担心兼容性问题,官方提供的Windows 11安装助手能够帮助您…

    2026年10月8日 • 用户投稿
    200
  • linux底层是什么语言

    linux底层是什么语言linux底层是什么语言linux底层是什么语言linux底层是什么语言

    linux底层是C语言和汇编语言;linux全称GNU/Linux,是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。 本教程操作环境:linux5.9.8系统、Dell G3电脑。 linux底层是什么语言? Linux操作系统是用…

    2026年10月8日 • 用户投稿
    000
  • vivo X300系列外观曝光:大R角直屏+大圆镜头模组

    vivo X300系列外观曝光:大R角直屏+大圆镜头模组vivo X300系列外观曝光:大R角直屏+大圆镜头模组vivo X300系列外观曝光:大R角直屏+大圆镜头模组vivo X300系列外观曝光:大R角直屏+大圆镜头模组

    9月2日,cnmo注意到,有数码博主曝光了vivo x300系列的外观设计信息。据他透露,新机将采用后置大圆镜头模组,deco装饰环相比上一代明显缩小,整体设计语言更加简约时尚。同时,新机的大小屏均将采用大r角直屏,目测边框比iphone 16 pro max更窄。另外,新机将搭载”果味…

    2026年10月8日 • 用户投稿
    800
  • linux 用户目录在哪里

    linux 用户目录在哪里linux 用户目录在哪里linux 用户目录在哪里linux 用户目录在哪里

    linux用户目录在“/home”中,home目录下面存放的是非管理员用户的文件,每一个文件代表每一个用户的区域,而linux管理员目录则是存放在“/root”中。 本教程操作环境:linux5.9.8系统、Dell G3电脑。 linux 用户目录在哪里? Linux基础操作:用户目录 一、管理员…

    2026年10月8日 • 用户投稿
    900
  • vivo教育优惠来了 多款热门手机和IoT设备可享超级权益

    vivo教育优惠来了 多款热门手机和IoT设备可享超级权益vivo教育优惠来了 多款热门手机和IoT设备可享超级权益vivo教育优惠来了 多款热门手机和IoT设备可享超级权益vivo教育优惠来了 多款热门手机和IoT设备可享超级权益

    2025年9月1日,在这开学之季,vivo 推出“教育优惠”,旗下多款热门手机和iot产品皆参加此次活动,助莘莘学子在生活和学习中能够轻松体验vivo生态的独特魅力。 首先要为大家介绍的是最受学生党喜欢的三款高颜值且好用的 IoT 产品 — vivo Pad5、vivo TWS Air3 Pro 和…

    2026年10月8日 • 用户投稿
    800
  • Mac运行速度变慢了怎么优化_Mac性能优化与提速技巧

    Mac运行速度变慢了怎么优化_Mac性能优化与提速技巧Mac运行速度变慢了怎么优化_Mac性能优化与提速技巧Mac运行速度变慢了怎么优化_Mac性能优化与提速技巧Mac运行速度变慢了怎么优化_Mac性能优化与提速技巧

    首先清理存储空间并确保至少15%可用,接着通过活动监视器关闭高资源占用进程,然后在系统设置中禁用不必要的开机启动项,再于辅助功能中开启“减少动态效果”以降低动画负载,最后使用终端命令优化窗口动画和Dock响应速度。 如果您的Mac在运行应用程序或多任务处理时出现响应迟缓、程序无响应或启动时间延长的情…

    2026年10月8日 • 用户投稿
    100
  • Spring Boot Security:为特定URL模式定制JWT认证过滤器

    Spring Boot Security:为特定URL模式定制JWT认证过滤器Spring Boot Security:为特定URL模式定制JWT认证过滤器Spring Boot Security:为特定URL模式定制JWT认证过滤器Spring Boot Security:为特定URL模式定制JWT认证过滤器

    针对Spring Boot Security中JWT过滤器默认应用于所有URL的问题,本文详细阐述如何通过扩展AbstractAuthenticationProcessingFilter并结合RequestMatcher,实现JWT过滤器仅对 /api/** 等指定URL模式生效,从而提供更精细化的…

    2026年10月8日 • 用户投稿
    300

发表回复

登录后才能评论
关注微信