色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux驅動開發-編寫NEC紅外線協議解碼驅動

DS小龍哥-嵌入式技術 ? 2022-09-17 15:20 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

【摘要】 NEC協議是眾多紅外線協議中的一種,以前廣泛用在電視機,投影儀設備里,很早之前經常說的萬能電視遙控器就是NEC協議的;當前文章就介紹如何在Linux下通過紅外線接收模塊,編寫一個NEC協議的紅外線解碼驅動,解析遙控器傳輸過來的各種控制指令,完成對應的動作響應;驅動里用到了外部中斷接收數據,通過定時器計算間隔時間完成解碼。

1. 紅外線知識點介紹

在光譜中波長自760nm至400um的電磁波稱為紅外線,它是一種不可見光。目前幾乎所有的視頻音頻設備都可以通過紅外遙控的方式進行遙控,比如電視機、空調、影碟機等,都可以見到紅外遙控的影子。這種技術應用廣泛,相應的應用器件都十分廉價,因此紅外遙控是我們日常設備控制的理想方式。

紅外線遙控是目前使用最廣泛的一種通信和遙控手段。由于紅外線遙控裝置具有體積小、功耗低、功能強、
成本低等特點,因而,繼彩電、錄像機之后,在錄音機、音響設備、空凋機以及玩具等其它小型電器裝置上也紛
紛采用紅外線遙控。工業設備中,在高壓、輻射、有毒氣體、粉塵等環境下,采用紅外線遙控不僅完全可靠而且
能有效地隔離電氣干擾。

NEC協議是眾多紅外線協議中的一種,以前廣泛用在電視機,投影儀設備里,很早之前經常說的萬能電視遙控器就是NEC協議的。

當前文章就介紹如何在Linux下通過紅外線接收模塊,編寫一個NEC協議的紅外線解碼驅動,解析遙控器傳輸過來的各種控制指令,完成對應的動作響應;驅動里用到了外部中斷接收數據,通過定時器計算間隔時間完成解碼。

NEC協議的特點如下:

單個碼一共分為5各部分(沒有算重復碼): 引導碼+用戶碼+用戶反碼+按鍵碼+按鍵反碼

對于接收方_引導碼: 9ms的低電平+4.5ms的高電平。

接收的數據是0: 560us低電平+560us高電平

接收的數據是1: 560us低電平+1680us高電平

image-20220106112451549image-20220106111805216

2. 硬件環境

當前開發板采用友善之臂的Tiny4412,CPU三星的EXYNOS4412,最高主頻為1.5GHZ,Linux內核版本是3.5。

下面是紅外線接收模塊原理圖:

image-20220106111542287

通過杜邦線接在開發板的中斷輸入腳上:(GPX1_0接口上,第9個排針。)

image-20220106112325813

驅動安裝后,解碼的效果:

image-20220106112527780

3. 案例代碼

驅動代碼思路: 采用外部中斷接收NEC的數據,在工作隊列里完成協議解析,最終通過printk打印出來。

#include 
#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); //轉 us
	while(gpio_get_value(NEC_INFRARED_GPIO)){}
	my_time2=ktime_get(); //獲取當前時間
	j=ktime_to_us(my_time2); //轉 us
	return 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); //轉 us
	while(gpio_get_value(NEC_INFRARED_GPIO)==0){}
	my_time2=ktime_get(); //獲取當前時間
	j=ktime_to_us(my_time2); //轉 us
	return 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_us <7000)return;  //標準9000
	time_us=GetTimeH();
	if(time_us>6000 || time_us <3000)return;  //標準4500
	/*2. 接收32位數據*/
	int i,j;
	for(i=0;i<4;i++)
	{
		for(j=0;j<8;j++)
		{
			time_us=GetTimeL();
			if(time_us>700 || time_us <400)return;  //標準560
			time_us=GetTimeH();
			if(time_us<700 && time_us>400)  // 0 :標準560
			{
				data<<=1;
			}
			else if(time_us<1800 && time_us>1500)  // 1 :標準1680
			{
				data<<=1;
				data|=0x01;
			}
			else
			{
				return;
			}
		}
		buf[i]=data;
	}
	printk("用戶碼:%d,按鍵碼:%d\n",buf[0],buf[2]);
}

/*中斷服務函數*/
irqreturn_t nec_irq_handler_func(int irq, void *dev)
{
	/*添加工作到工作隊列*/
	schedule_work(&work);
	return IRQ_HANDLED;
}

static int __init tiny4412_hello_module_init(void)
{
	/*初始化工作函數*/
	INIT_WORK(&work,new_work_func);
	/*1. 獲取中斷號*/
	irq=gpio_to_irq(NEC_INFRARED_GPIO);
	/*2. 注冊中斷*/
	request_irq(irq,nec_irq_handler_func,IRQF_TRIGGER_FALLING,"tinyy412_nec",NULL);

    printk("驅動測試: 驅動安裝成功\n");
    return 0;
}

static void __exit tiny4412_hello_module_cleanup(void)
{
	free_irq(irq,NULL);
    printk("驅動測試: 驅動卸載成功\n");
}

module_init(tiny4412_hello_module_init);    /*驅動入口--安裝驅動的時候執行*/
module_exit(tiny4412_hello_module_cleanup); /*驅動出口--卸載驅動的時候執行*/

MODULE_LICENSE("GPL");  /*設置模塊的許可證--GPL*/
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 紅外線
    +關注

    關注

    14

    文章

    628

    瀏覽量

    57291
  • NEC
    NEC
    +關注

    關注

    0

    文章

    238

    瀏覽量

    99864
  • 解碼
    +關注

    關注

    0

    文章

    186

    瀏覽量

    27915
收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    cyw20829能不能使用紅外線解碼嗎?

    cyw20829能不能使用紅外線解碼
    發表于 07-03 06:49

    單片機實例項目:NEC紅外線協議編碼與解碼

    單片機實例項目:NEC紅外線協議編碼與解碼,推薦下載!
    發表于 06-03 22:03

    精密空調—精密空調紅外線加濕器維護周期

    為確保精密空調紅外線加濕器的持續穩定運行和高效加濕效果,制定合理的維護周期至關重要。下面聊一下精密空調紅外線加濕器的維護周期。 一、日常維護(每日/每周) 1、外觀檢查:每日檢查精密空調紅外線
    的頭像 發表于 02-06 09:29 ?480次閱讀
    精密空調—精密空調<b class='flag-5'>紅外線</b>加濕器維護周期

    紅外線測溫儀如何校準

    紅外線測溫儀通過檢測物體表面發射的紅外輻射來測量溫度。由于環境因素、設備老化和使用過程中的磨損,測溫儀的準確性可能會受到影響。 校準前的準備工作 了解設備規格 :查閱紅外線測溫儀的用戶手冊,了解其
    的頭像 發表于 01-03 15:29 ?2217次閱讀

    紅外線測溫儀測溫原理

    在工業生產、科學研究和日常生活中,溫度測量是一項基本而重要的工作。傳統的接觸式溫度測量方法存在諸多局限性,如測量速度慢、可能損壞被測物體、無法測量運動物體的溫度等。 紅外線測溫儀的工作原理 紅外線
    的頭像 發表于 01-03 15:22 ?1208次閱讀

    如何選擇紅外線測溫儀

    紅外線測溫儀是一種非接觸式的溫度測量工具,廣泛應用于工業、醫療、科研等領域。它們能夠快速、準確地測量物體表面的溫度,而無需直接接觸。選擇合適的紅外線測溫儀對于確保測量結果的準確性和可靠性至關重要
    的頭像 發表于 01-03 15:20 ?838次閱讀

    紅外線測溫儀精度怎么樣

    在現代工業和科學研究中,溫度測量是一項基礎而重要的工作。傳統的接觸式測溫方法雖然準確,但在某些場合下存在局限性,如無法測量運動物體或高溫物體的溫度。 紅外線測溫儀的工作原理 紅外線測溫儀的工作原理
    的頭像 發表于 01-03 15:12 ?832次閱讀

    紅外線測溫儀使用方法

    在工業、醫療、科研等領域,準確測量溫度是至關重要的。紅外線測溫儀因其非接觸、快速、安全的特點,被廣泛應用于各種場合。 紅外線測溫儀的工作原理 紅外線測溫儀基于黑體輻射定律,即物體的溫度與其發射的
    的頭像 發表于 01-03 15:07 ?1205次閱讀

    溫度越高輻射的紅外線越怎么樣

    引言 紅外線是一種電磁波,波長介于可見光和微波之間,具有熱效應。紅外線輻射是物體因溫度而產生的電磁波輻射,其輻射強度和波長與物體的溫度密切相關。 紅外線的基本概念和特性 2.1 紅外線
    的頭像 發表于 08-20 09:47 ?3473次閱讀

    紅外線的溫度高還是紫外線的溫度高

    引言 紅外線和紫外線是電磁波譜中的兩種重要類型,它們在自然界和人類社會中都有著廣泛的應用。 紅外線與紫外線的基本概念 2.1 紅外線
    的頭像 發表于 08-20 09:46 ?6810次閱讀

    紅外線與紫外線有什么區別與功能

    引言 紅外線和紫外線都是電磁波的一種,它們在自然界中廣泛存在,對人類的生活和科學研究都有著重要的影響。然而,由于它們的特性和應用領域不同,人們對它們的了解程度也不盡相同。 紅外線與紫外線
    的頭像 發表于 08-20 09:44 ?7858次閱讀

    紅外線外線的特點及應用有哪些

    紅外線的特點: a. 波長范圍:紅外線的波長范圍在0.75微米至1000微米之間。 b. 熱效應:紅外線具有較強的熱效應,能夠使物體加熱。 c. 穿透能力:紅外線的穿透能力較弱,容易被
    的頭像 發表于 08-20 09:42 ?3705次閱讀

    紅外線和紫外線哪個熱效應更顯著

    一、引言 紅外線和紫外線是電磁波譜中的兩個重要波段,它們在自然界和人類社會中都有著廣泛的應用。紅外線和紫外線的熱效應是人們關注的焦點之一,因為它們對人體的健康和生活都有著直接或間接的影
    的頭像 發表于 08-20 09:41 ?4300次閱讀

    紅外線最顯著的特點是它的什么效應

    紅外線最顯著的特點是它的 熱效應 。這種效應體現在紅外線能夠輻射熱量,使物體發熱。具體來說,紅外線的熱效應包括以下幾個方面: 輻射熱量 :紅外線是光譜中光熱效應最大的區域,任何高于絕對
    的頭像 發表于 08-20 09:39 ?3106次閱讀

    紅外線有哪些特點和作用

    引言 紅外線是一種電磁波,波長介于可見光和微波之間。它在自然界和人類社會中有著廣泛的應用,如熱成像、遙感、醫療、工業、軍事和通信等領域。本文將介紹紅外線的特點和作用。 紅外線的定義和分類 紅外
    的頭像 發表于 08-20 09:33 ?6898次閱讀
    主站蜘蛛池模板: 神马影院午夜理论二 | 呻吟翘臀后进爆白浆 | 国产精品一区二区欧美视频 | 91涩涩视频 | 亚洲精品久久久午夜麻豆 | 亚洲色爽视频在线观看 | 高H纯肉NP 弄潮NP男男 | 蜜芽国产在线精品欧美 | 俄罗斯爱爱 | 中文字幕爆乳JULIA女教师 | 日本美女搞基视频 | AV国产乱码一区二区三视频 | a级毛片高清免费视频 | 在线中文字幕 | 扒开美女的内衣亲吻漫画 | 蜜桃人妻无码AV天堂三区 | 日日夜夜狠狠干 | 贵妃高h荡肉呻吟np杨玉环 | 日本工口生肉全彩大全 | 被黑人掹躁10次高潮 | 欧美片内射欧美美美妇 | 人C交ZZZ0OOZZZ000 热综合一本伊人久久精品 热中文热国产热综合 | 久久天堂视频 | 国产自拍视频在线一区 | 九九热免费在线观看 | 国产成人a视频在线观看 | 动漫美女性侵 | 免费看www视频 | 亚洲成人日韩 | 校花在公车上被内射好舒服 | 十七岁日本免费完整版BD | 朝鲜美女bbwbbw撒尿 | 天堂视频在线观看免费完整版 | 娇小萝被两个黑人用半米长 | 亚洲伊人情人综合网站 | 曰曰夜夜在线影院视 | 2020最新无码国产在线视频 | 亚洲三区视频 | 国产免费网站看v片在线 | www.狠狠色| 精品国产免费第一区二区 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品