<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

  • x
    x
    查看: 23726|回復: 0
    打印 上一主題 下一主題

    教你在全志T507開發板上添加兩個GPIO按鍵

    [復制鏈接]
    跳轉到指定樓層
    樓主
    發表于 2022-10-14 13:57:22 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
    關鍵詞: GPIO
    本文將為大家介紹如何在飛凌OKT507-C開發板上添加兩個GPIO按鍵,希望能夠對各位工程師有所幫助,本文章以PE5、PE6兩個引腳為例。話不多說,下面我們進入主題。

    一、GPIO按鍵添加方法

    1. 添加內核配置
    Linux內核源代碼中集成了很多功能,一般的用戶只會用到其中的部分功能。用戶從中挑選自己需要的功能,這就叫內核配置。下面我們開始進行配置。

    注意:

    (1)在進行配置前,需要對

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

    (2)以下所有圖中的紅框為修改后的內容。

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






    [backcolor=rgba(18, 18, 18, 0.5)]​




    編輯






    2. 添加key節點

    添加結點需要我們到設備樹中進行添加,設備樹是一個描述硬件的數據結構,甚至你可以將其看成一個大結構體(這個結構體就是平臺,成員就是具體的設備),將硬件的配置從linux內核的源碼中提取出來。




    下面打開我們的T507設備樹文件,如下:

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






    [backcolor=rgba(18, 18, 18, 0.5)]​




    編輯






    其中按鍵鍵值設置如下。



    [backcolor=rgba(18, 18, 18, 0.5)]​




    編輯






    相關鍵值可通過查看input-event-codes.h文件確定。

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






    [backcolor=rgba(18, 18, 18, 0.5)]​




    編輯








    [backcolor=rgba(18, 18, 18, 0.5)]​




    編輯









    3. 添加引腳定義
    添加引腳定義需要用到pinctrl,下面給大家簡單介紹下pinctrl。pinctrl就是系統中pin引腳的控制。




    假如在使用到GPIO、I2C等功能時,若按引腳逐一地去找對應的寄存器進行配置非常浪費時間和精力,所以內核引入了pinctrl子系統,把引腳的復用和配置抽象出來,只需要芯片廠商把自家芯片的支持進去,就可以很方便的配置引腳。




    下面打開我們的pinctrl文件,如下:

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






    [backcolor=rgba(18, 18, 18, 0.5)]​




    編輯









    4. 關閉沖突功能

    因為有些功能結點使用的引腳與我們這次復用的引腳發生沖突,會發生引腳不生效的錯誤,所以我們一定要檢查好,然后將其關閉。  

    如下打開設備樹文件:

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






    [backcolor=rgba(18, 18, 18, 0.5)]​




    編輯切換為居中














    [backcolor=rgba(18, 18, 18, 0.5)]​




    編輯









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




    注意:

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






    [backcolor=rgba(18, 18, 18, 0.5)]​




    編輯切換為居中






    5. 驅動修改

    gpio-keys是基于input子系統實現的一個通用按鍵驅動,該驅動基于platform_driver架構,實現了驅動和設備分離,符合Linux設備驅動模型的思想,也符合linux驅動實現模型,即driver和device分離模型。




    一般按鍵驅動,都是基于gpio-keys進行開發的。驅動文件如下:

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






    [backcolor=rgba(18, 18, 18, 0.5)]​




    編輯














    [backcolor=rgba(18, 18, 18, 0.5)]​




    編輯














    [backcolor=rgba(18, 18, 18, 0.5)]​




    編輯切換為居中














    [backcolor=rgba(18, 18, 18, 0.5)]​




    編輯切換為居中




    添加圖片注釋,不超過 140 字(可選)









    [backcolor=rgba(18, 18, 18, 0.5)]​




    編輯切換為居中









    二、測試方法

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






    [backcolor=rgba(18, 18, 18, 0.5)]​




    編輯切換為居中






    從上圖紅框可以看出,通過evtest測試工具將內核設備讀取并打印設備描述的事件,到這里,GPIO按鍵就做完了,可以用它來實現很多的功能,比如說按一下切換燈的狀態,蜂鳴器響等。




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


    您需要登錄后才可以回帖 登錄 | 立即注冊

    本版積分規則

    關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
    電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
    快速回復 返回頂部 返回列表
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷