加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專(zhuān)業(yè)用戶(hù)
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
    • 1、GPIO按鍵添加方法
    • 2、測(cè)試方法
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

只需5步,教你添加GPIO按鍵

2022/10/16
1773
閱讀需 6 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

本文將為大家介紹如何在飛凌OKT507-C開(kāi)發(fā)板上添加兩個(gè)GPIO按鍵,希望能夠?qū)Ω魑?a class="article-link" target="_blank" href="/tag/%E5%B7%A5%E7%A8%8B%E5%B8%88/">工程師有所幫助,本文章以PE5、PE6兩個(gè)引腳為例。話不多說(shuō),下面我們進(jìn)入主題。

1、GPIO按鍵添加方法

 

1. 添加內(nèi)核配置

Linux內(nèi)核源代碼中集成了很多功能,一般的用戶(hù)只會(huì)用到其中的部分功能。用戶(hù)從中挑選自己需要的功能,這就叫內(nèi)核配置。下面我們開(kāi)始進(jìn)行配置。

注意:

(1)在進(jìn)行配置前,需要對(duì)

OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/configs/sun50iw9p1smp_longan_dcfconfig文件提前做好備份;

(2)以下所有圖中的紅框?yàn)樾薷暮蟮膬?nèi)容。

vi OKT507-linux-sdk/kernel/linux-4.9/.config

2. 添加key節(jié)點(diǎn)

添加結(jié)點(diǎn)需要我們到設(shè)備樹(shù)中進(jìn)行添加,設(shè)備樹(shù)是一個(gè)描述硬件的數(shù)據(jù)結(jié)構(gòu),甚至你可以將其看成一個(gè)大結(jié)構(gòu)體(這個(gè)結(jié)構(gòu)體就是平臺(tái),成員就是具體的設(shè)備),將硬件的配置從linux內(nèi)核的源碼中提取出來(lái)。

下面打開(kāi)我們的T507設(shè)備樹(shù)文件,如下:

vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/OKT507-C-Common.dtsi

 

其中按鍵鍵值設(shè)置如下。

 

相關(guān)鍵值可通過(guò)查看input-event-codes.h文件確定。

vi OKT507-linux-sdk/kernel/linux-4.9/include/uapi/linux/input-event-codes.h

 

3. 添加引腳定義

添加引腳定義需要用到pinctrl,下面給大家簡(jiǎn)單介紹下pinctrl。pinctrl就是系統(tǒng)中pin引腳的控制。

假如在使用到GPIO、I2C等功能時(shí),若按引腳逐一地去找對(duì)應(yīng)的寄存器進(jìn)行配置非常浪費(fèi)時(shí)間和精力,所以?xún)?nèi)核引入了pinctrl子系統(tǒng),把引腳的復(fù)用和配置抽象出來(lái),只需要芯片廠商把自家芯片的支持進(jìn)去,就可以很方便的配置引腳。

下面打開(kāi)我們的pinctrl文件,如下:

vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/sun50iw9p1-pinctrl.dtsi

4. 關(guān)閉沖突功能

因?yàn)橛行┕δ芙Y(jié)點(diǎn)使用的引腳與我們這次復(fù)用的引腳發(fā)生沖突,會(huì)發(fā)生引腳不生效的錯(cuò)誤,所以我們一定要檢查好,然后將其關(guān)閉。  

如下打開(kāi)設(shè)備樹(shù)文件:

vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/OKT507-C-Common.dtsi

 

vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/sun50iw9p1-pinctrl.dtsi

注意:

攝像頭csi復(fù)用的引腳與我們這里的沖突,雖然前面將狀態(tài)disabled了,pinctrl這里也有可能會(huì)造成沖突,為了避免不必要的麻煩,我們也將這里注釋掉。

5. 驅(qū)動(dòng)修改

gpio-keys是基于input子系統(tǒng)實(shí)現(xiàn)的一個(gè)通用按鍵驅(qū)動(dòng),該驅(qū)動(dòng)基于platform_driver架構(gòu),實(shí)現(xiàn)了驅(qū)動(dòng)和設(shè)備分離,符合Linux設(shè)備驅(qū)動(dòng)模型的思想,也符合linux驅(qū)動(dòng)實(shí)現(xiàn)模型,即driver和device分離模型。

一般按鍵驅(qū)動(dòng),都是基于gpio-keys進(jìn)行開(kāi)發(fā)的。驅(qū)動(dòng)文件如下:

vi OKT507-linux-sdk/kernel/linux-4.9/drivers/input/keyboard/gpio_keys.c

2、測(cè)試方法

 

終端窗口輸入evtest,選擇 7。

從上圖紅框可以看出,通過(guò)evtest測(cè)試工具將內(nèi)核設(shè)備讀取并打印設(shè)備描述的事件,到這里,GPIO按鍵就做完了,可以用它來(lái)實(shí)現(xiàn)很多的功能,比如說(shuō)按一下切換燈的狀態(tài),蜂鳴器響等。

當(dāng)然不只是這些啦,我們還可以利用它去實(shí)現(xiàn)很多其他功能,歡迎各位聰明的工程師小伙伴自行發(fā)揮!

以上就是小編為大家?guī)?lái)的在飛凌OKT507-C開(kāi)發(fā)板上添加GPIO按鍵的全過(guò)程,想要了解有關(guān)OKT507-C開(kāi)發(fā)板更多的功能和詳情,可以進(jìn)入飛凌嵌入式官網(wǎng)查看。

作者:侯世成

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

秉承專(zhuān)業(yè)態(tài)度,專(zhuān)注智能設(shè)備核心平臺(tái)研發(fā)與制造,以技術(shù)研發(fā)創(chuàng)新為主導(dǎo),以客戶(hù)實(shí)用化,產(chǎn)品化為目標(biāo),把握嵌入式行業(yè)的前沿發(fā)展需求,利用核心技術(shù)為客戶(hù)提供穩(wěn)定、可靠、功能優(yōu)異的高品質(zhì)產(chǎn)品。合作聯(lián)系:17713286011