国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

查看: 5283|回復(fù): 0
打印 上一主題 下一主題

在i.MX9352上操作GPIO的方法

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2023-5-16 14:03:03 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

01硬件原理分析

以點燈和按鍵為例,打開飛凌嵌入式OK-MX9352-C開發(fā)板的原理圖,可以看到一顆LED燈,它由MX93_PAD_CCM_CLKO4控制。由于這一個GPIO屬于1.8V電平域,所以在OK-MX9352-C開發(fā)板的底板上并沒有直接將GPIO接到LED上,而是用GPIO控制了一個MOS管,再由MOS管去控制LED的亮滅——當GPIO電平為高時,MOS導(dǎo)通,LED點亮;當GPIO電平為低時,MOS關(guān)斷,LED熄滅。



02設(shè)備樹引腳復(fù)用

打開飛凌嵌入式OK-MX9352-C開發(fā)板的設(shè)備樹:

OKMX93-linux-kernel/arch/arm64/boot/dts/freescale/OK-MX93-C.dts

在iomuxc節(jié)點下新建一組引腳復(fù)用,復(fù)用的兩個GPIO分別是底板上的LED燈D6和按鍵K1。


接下來新建一個GPIO節(jié)點,內(nèi)容如下:



注釋掉LED和KEY部分,防止復(fù)用沖突:



保存退出后重新編譯設(shè)備樹。

執(zhí)行環(huán)境變量:

forlinx@ubuntu:~/ok-mx93/OKMX93-linux-sdk$ . environment-setup-aarch64-toolchain

單獨編譯設(shè)備樹:

forlinx@ubuntu:~/ok-mx93/OKMX93-linux-sdk/OKMX93-linux-kernel$ make ARCH=arm64 CROSS_COMPILE=aarch64-poky-linux- dtbs

編譯完成后,單獨更新設(shè)備樹。首先將U盤插到虛擬機上,將生成的設(shè)備樹文件拷貝到U盤:

forlinx@ubuntu:~/ok-mx93/OKMX93-linux-sdk/OKMX93-linux-kernel$ cp arch/arm64/boot/dts/freescale/OK-MX93-C.dtb /media/forlinx/2075-A0A7/


將生成的dtb文件使用U盤拷貝到OK-MX9352-C開發(fā)板上,替換掉:/run/media/Boot-mmcblk0p1/OK-MX93-C.dtb

root@ok-mx93:/run/media/Boot-mmcblk0p1# cp /run/media/sda/OK-MX93-C.dtb ./

重啟OK-MX9352-C開發(fā)板。

03通過命令測試

在OKMX6ULL-S開發(fā)板中,操作GPIO的方式是通過操作/sys/class/gpio下的文件來實現(xiàn)的。而在OK-MX9352-C上,引入了新的Lingpiod的方式,而原有的基于sysfs的操作方式已經(jīng)不再被支持。

Libgpiod是一種字符設(shè)備接口,GPIO訪問控制是通過操作字符設(shè)備文件(比如/dev/gpiodchip0)實現(xiàn)的。OK-MX9352-C共有4組GPIO,可以在/dev下查看GPIO設(shè)備文件。

Libgpiod可以通過shell終端和C庫兩種方式使用,本節(jié)介紹在shell終端控制GPIO的方法,下一節(jié)我們將會介紹使用C庫的方式控制GPIO。



3.1 gpiodetect

查看所有GPIO設(shè)備


這里的gpiochip0- gpiochip4分別對應(yīng)的是設(shè)備樹當中的GPIO1-GPIO4這四組GPIO,但是順序并不是一一對應(yīng)的,這是由于對應(yīng)的寄存器地址順序問題導(dǎo)致的。那么goiochip0如何跟設(shè)備樹對應(yīng)起來呢?我們可以打開設(shè)備樹當中的dtsi文件,文件路徑為:

OKMX93-linux-kernel/arch/arm64/boot/dts/freescale/imx93.dtsi

forlinx@ubuntu:~/ok-mx93/OKMX93-linux-sdk$ vi OKMX93-linux-kernel/arch/arm64/boot/dts/freescale/imx93.dtsi


查看GPIO3的寄存器基地址為:gpio3: gpio@43820080,對應(yīng)的是gpiochip1,而GPIO4對應(yīng)的是gpiochip2。



其余GPIO的對應(yīng)關(guān)系如下,可供大家參考:





3.2 gpioinfo

由3.1可知,LED燈對應(yīng)的是GPIO4,即gpiochip2;按鍵對應(yīng)的是GPIO3,即gpiochip1。列出gpiochip2控制器的引腳情況:


3.3 gpioset

該命令用于設(shè)置GPIO電平,2代表gpiochip2,即GPIO4,28是GPIO pin,當設(shè)置該GPIO為1時,底板上的D6點亮。



3.4 gpioget

該命令用于獲取GPIO引腳狀態(tài),以按鍵為例,按鍵對應(yīng)的是GPIO3-27,即gpiochip1 27。按鍵沒有按下時,讀取到按鍵狀態(tài)為1,當按鍵按下時,讀到按鍵狀態(tài)為0。



3.5 gpiomon

監(jiān)控GPIO的狀態(tài)是否發(fā)生變化,同樣以按鍵為例,當按鍵按下時:



04使用Libgpiod庫編程

Libgpiod是用于與Linux GPIO交互的C庫和工具,Linux官方于Linux 4.8 版本引入了Libgpiod的功能。而在OK-MX9352-C開發(fā)板搭載的Linux5.15內(nèi)核版本中,已經(jīng)不再支持sysfs的方式操作GPIO。與sysfs相比,Libgpiod更加可靠,具備更多功能,例如,可一次讀寫多個GPIO值。

4.1 源碼獲取

如果想要在PC上交叉編譯出能夠在開發(fā)板上運行的應(yīng)用,則交叉編譯時鏈接的庫文件應(yīng)該與開發(fā)板上的保持一致,可以直接把開發(fā)板上的庫拷貝到開發(fā)環(huán)境進行使用。該庫文件在開發(fā)板上的路徑為:


從上圖可以看出,Libgpiod庫的版本為libgpiod.so.2.2.2,軟鏈接到libgpiod.so.2。

在飛凌嵌入式提供的OK-MX9352-C開發(fā)板資料中,已經(jīng)將所需的庫文件、頭文件以及相關(guān)例程進行了打包,用戶可以直接使用。資料路徑為:用戶資料/應(yīng)用筆記/ OK-MX9352-C-GPIO接口_Linux應(yīng)用筆記/Libgpiod測試源碼。咨詢在線客服即可獲取資料。

4.2 編譯測試例程

將Libgpiod測試源碼目錄下的gpiotest.c、gpio-toggle.c、lib.tar.bz2拷貝到開發(fā)環(huán)境中:


將lib.tar.bz2解壓到本目錄下,編譯時會使用到里邊的gpiod.h文件和Libgpiod庫文件:


示例1循環(huán)控制LED亮和滅,時間間隔為1s

交叉編譯gpio-toggle.c

設(shè)置環(huán)境變量(注意 . 后邊有空格)



交叉編譯



將可執(zhí)行文件gpio-toggle拷貝到開發(fā)板中并執(zhí)行可看到LED(D6)燈1s亮,1s滅。其中輸入?yún)?shù)2、28為:gpiochip2 line28。


示例2按鍵控制LED亮滅,每按一次狀態(tài)翻轉(zhuǎn)

交叉編譯gpio-test.c

設(shè)置環(huán)境變量(注意點后邊有空格)



交叉編譯


將可執(zhí)行文件gpio-test拷貝到OK-MX9352-C開發(fā)板中并執(zhí)行,可看到每按一次按鍵,LED燈的狀態(tài)就翻轉(zhuǎn)一次,其中輸入?yún)?shù)1、27為:gpiochip1 line27 ;2、28為:gpiochip2 line28。


以上就是為OK-MX9352-C開發(fā)板配置GPIO的過程,希望能夠?qū)ζ聊磺暗母魑还こ處熜』锇橛兴鶐椭?/font>


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

本版積分規(guī)則

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲欧美日韩高清中文在线 | 国产日本一区二区三区 | 亚洲一区欧洲一区 | 九九热这里只有精品6 | 四虎影视网 | 在线观看国产免费高清不卡 | 一级片在线观看视频 | 又色又爽又黄的网站 | 国产欧美日韩在线播放 | 99精品福利| 无限资源第一页2018在线播放 | 成年大片免费视频播放手机不卡 | 国产噜噜噜 | 亚洲免费网址 | 国产精品高清一区二区三区 | 色视频在线观看视频 | 国产成人福利在线视频播放尤物 | 亚洲欧美一区二区视频 | 欧美成在线观看 | 尤物精品国产福利网站 | 国产精品第十页 | 国产一区二区在线免费观看 | 欧美日韩在线成人免费 | 欧美v日本 | 200款禁用软件免费下载安卓 | 激情五月婷婷久久 | 亚洲一区二区三区深夜天堂 | 国产特黄特色的大片观看免费视频 | 黄色毛片a | 亚洲国产一级毛片 | 丁香花五月婷婷 | 99精品久久秒播无毒不卡 | 国产日韩欧美亚洲综合在线 | 亚洲精品蜜桃久久久久久 | 亚洲日本视频在线观看 | 亚洲精品成人久久 | 九九九精品午夜在线观看 | 有毛片毛毛片毛片毛片 | 国产一区二区在线播放 | 香蕉视频成人在线观看 | 4hu四虎永久地址 |