999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Linux的旋轉編碼器的驅動程序和應用的開發

2021-07-09 13:49:41高永相
電子樂園·中旬刊 2021年8期

高永相

摘要:在產品設計和開發中,需要在arm平臺下進行驅動開發,根據旋轉編碼器的基本工作原理,利用Linux 設備驅動的輸入子系統進行了驅動和應用程序的設計。實驗結果表明,方案切實可行。

關鍵詞: Linux; 旋轉編碼器; Input子系統

中圖分類號: TP273 文獻標志碼: A

選擇EC11旋轉編碼器作為輸入按鈕,向右旋轉,按步長增加參數,向左旋轉,按步長遞減參數。為實現設計目標,研究旋轉編碼器的輸出特性以及linux平臺的輸入子系統特性,并成功移植到當前設備并設計應用程序[1]。

1硬件結構及基本原理

硬件平臺以NXP的I.MX6ULL 為核心的。EC11是AB 相旋轉編碼器。在正向旋轉時A相超前B相 90°; 在編碼器反轉時,B相超前A相 90°。通過判斷A、B兩相邊沿處的電平高低就可判斷方向。

2 輸入子系統的組成

輸入設備有共同的特點,輸入子系統自下而上分為驅動層、核心層和事件處理層。驅動層是與硬件相關的實現。核心層承上啟下,為驅動層提供輸入設備注冊和操作接口。事件處理層主要和用戶空間進行交互,負責創建設備文件并將報告的事件傳遞給用戶空間[2]。最底層就是具體設備,比如按鍵,旋轉編碼器等。

3 驅動的設計與實現

設備驅動程序是 Linux 內核的一部分,它提供內核接口,運行在內核態。驅動程序主要完成如下功能:

1) 完成rotary encoder設備初始化、資源申請和釋放等操作;

2) 完成數據在內核和硬件設備間的讀取和寫入;

3) 接收應用程序傳給硬件設備的數據并返回應用程序請求的數據;

input 核心層會向 Linux 內核注冊一個字符設備,input.c 就是 input 輸入子系統的核心層。class_registe注冊一個input 類,系統啟動以后就會在/sys/class 目錄下生成 input 子 目錄。register_chrdev_region注冊一個字符設備[3]。設備驅動流程圖見圖1的左邊。

3.1引腳的配置和初始化

EC_A連接到IMX6ULL 的GPIO5_1引腳,EC_B連接到IMX6ULL的GPIO1_1引腳。

引腳的配置和初始化,是外界硬件設備和內核溝通的橋梁。使用設備樹來描述板級設備信息。

compatible = "rotary-encoder";用來和設備驅動匹配

gpios = <&gpio5 1 GPIO_ACTIVE_LOW>,<&gpio1 1 GPIO_ACTIVE_LOW>;配置rotary encoder 驅動的兩個輸入引腳,低電平有效。

3.2 驅動加載函數

輸入對象的初始化是在驅動加載入口函數內完成的。輸入對象描述了一個輸入設備,包括它可能報告的事件,使用input 子系統的時候需注冊一個input設備,input_dev結構體表示input設備。調用devm_input_allocate_device(struct input_dev*)實現input 設備的內存分配。使用input_set_capability(input, EV_REL, encoder->axis)注冊此驅動,事件為EV_REL,使旋轉編碼器支持相對坐標。之后調用input_register_device(struct input_dev*)函數實現將輸入設備注冊到輸入子系統中,并配置中斷函數。使用devm_request_threaded_irq注冊中斷,handler = &rotary_encoder_irq設定中斷函數。

3.3中斷函數的實現

中斷函數根據引腳當前的狀態和之前狀態,判斷方向并上報方向數據。用state變量來保存兩個輸入引腳的電平狀態。state=2之后state=1,判斷為順時針。state=2之后state=3,判斷為逆時針,input_report_rel(encoder->input, encoder->axis, encoder->dir)報告事件。調用函數input_sync(encoder->input)來通知輸入子系統同步到用戶層。

4用戶層應用實現

根據 Linux 下內核調用機制,實現應用程序讀取旋轉編碼器的值,有兩個值,1表示順時針旋轉,-1表示逆時針旋轉,由上層應用程序對數據進一步處理后輸出。流程如圖1的右圖。將應用程序交叉編譯后在ARM平臺上執行。此時轉動旋轉編碼器運行結果正向旋轉value=1 反向旋轉value=-1。

5結束語

本文設計并實現了Linux 下的旋轉編碼器驅動程序,實現了旋轉編碼器相對值旋轉方向檢測功能,在實際應用中運行良好,達到了預期目的。

參考文獻

[1] 屈克文,石奮蘇基于 ARM- Linux 的旋轉編碼器接口與驅動程序的設計[J] 計算機應用,2011,12:31

[2] 宋寶華.Linux設備驅動開發詳解[M].機械工業出版社,2015.7

主站蜘蛛池模板: 国产成人精彩在线视频50| 亚洲第一成年人网站| 911亚洲精品| 综合色区亚洲熟妇在线| 另类重口100页在线播放| 国产精彩视频在线观看| 中国国产A一级毛片| 中文字幕自拍偷拍| 亚洲精品日产精品乱码不卡| 免费国产高清视频| 四虎国产永久在线观看| 亚洲成AV人手机在线观看网站| 老司机精品久久| 99热这里只有精品在线观看| 国产香蕉一区二区在线网站| 国产91小视频| 国产精品主播| 日本不卡在线播放| 国产精品香蕉在线| 成人午夜视频在线| 国产69精品久久久久孕妇大杂乱| 熟妇丰满人妻| 久久国产精品影院| 国产91透明丝袜美腿在线| 国产喷水视频| 国产哺乳奶水91在线播放| 日韩高清欧美| 欧美日韩综合网| 67194成是人免费无码| 99er这里只有精品| 亚洲日本韩在线观看| 在线网站18禁| 亚洲三级电影在线播放| 亚洲视频一区| 99偷拍视频精品一区二区| 国产美女免费| 午夜成人在线视频| 成人在线欧美| 精品国产污污免费网站| 朝桐光一区二区| 久久综合色播五月男人的天堂| 美女无遮挡被啪啪到高潮免费| 国产人成网线在线播放va| 免费无码在线观看| 亚洲第一成网站| 中文字幕日韩欧美| 伊人久久久久久久久久| 国产国产人成免费视频77777| 蜜芽一区二区国产精品| 免费在线a视频| 久热re国产手机在线观看| 精品自拍视频在线观看| 亚洲天堂网在线视频| 午夜天堂视频| 色吊丝av中文字幕| 男女性午夜福利网站| 国产女人爽到高潮的免费视频| 国产成人精品一区二区免费看京| 国产麻豆aⅴ精品无码| 强奷白丝美女在线观看| 麻豆AV网站免费进入| 久久人体视频| 亚洲综合天堂网| 免费A级毛片无码无遮挡| 国产午夜无码专区喷水| 国产不卡网| 亚洲第一精品福利| 精品自窥自偷在线看| 国产在线98福利播放视频免费| 性欧美久久| 国产黄视频网站| 国产老女人精品免费视频| 欧美三级视频网站| 在线观看无码a∨| 亚洲一区二区日韩欧美gif| 国产在线八区| 91毛片网| 中文字幕亚洲精品2页| 欧美国产精品不卡在线观看| 国产精品理论片| 成人午夜免费视频| 毛片免费在线视频|