日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

LinuxGPIO操作和MTK平台GPIO

發布時間:2023/12/20 linux 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LinuxGPIO操作和MTK平台GPIO 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

GPIO口配置是一個歷史性的問題,不管我們使用什么MCU,單片機也好,ARM也好,都離不開驅動GPIO口。Linux下有一個宏,GPIO_GPIO_SYSFS,打開這個宏后,編譯燒錄到設備端,去看看sys/class/gpio/這個目錄。你會發現很多驚喜。

雖然是一個小知識點,但是我覺得對做Linux和安卓驅動開發的同學非常有用,當別人問你怎么操作一個GPIO口的時候,你不妨直接把這個鏈接發給他。

#GPIO_GPIO_SYSFS打開后,GPIO基本操作

  • 導出 ? /sys/class/gpio# echo 12> export

  • 設置方向 ? ? ?/sys/class/gpio/gpio12# echo out > direction

  • 查看方向 ? ? ?/sys/class/gpio/gpio12# cat direction

  • 設置輸出 ? ? ?/sys/class/gpio/gpio12# echo 1 > value

  • 查看輸出值 ?/sys/class/gpio/gpio12# cat value

  • 取消導出 ? ? /sys/class/gpio# echo 12> unexport

#MTK平臺提供節點給我們在命令行下對GPIO口進行配置,節點如下

MTK的GPIO口有點奇怪,他需要一個excel表格來對比后才能知道GPIO口是哪個。

比如:

AB2對應的是UART1的RX,對應的GPIO口編號是64。這個EXCEL表格我就不給出來了,因為不同的CPU的GPIO口標號也是有所不同。

mtk8167_bsp:/sys/devices/platform/soc/1000b000.pinctrl # cat mt_gpioPIN: [MODE] [DIR] [DOUT] [DIN] [PULL_EN] [PULL_SEL] [IES] [SMT] [DRIVE] ( [R1] [R0] ) 0: 210010100 1: 210010100 2: 010010100 3: 000111100 4: 210010100 5: 210010100 6: 210010100 7: 011110100 8: 000000100 9: 011110100 10: 010010100 ....................... 119: 100111112 01 120: 100111112 01 121: 00001010ffffffff 122: 10001010ffffffff 123: 10001010ffffffff 124: 10001010ffffffff

#所有的GPIO口配置信息都能看到,其中每一位的含義如下

  • [MODE]:每個GPIO可以配置的模式可以參考這個頭文件kernel-4.4/arch/arm64/boot/dts/mediatek/mt8167-pinfunc.h

  • [DIR]:0=輸入;1=輸出

  • [DOUT]:作為輸出引腳的高低電平,0=低;1=高

  • [DIN]:輸入引腳的電平

  • [PULL_EN]:是指GPIO是否使能上拉或下拉,只有當GPIO作為輸入模式時才生效

  • [PULL_SEL]:上面只設置了是否使能上拉或下拉,但并沒有指出到底是上拉還是下拉。0=下拉;1=上拉

  • [IES]:輸入使能,控制輸入是否有效。

  • [SMT]:是否使能斯密特觸發器

  • [DRIVE]:驅動能力,一般可取值0~7

  • ( [R1] [R0] ):

當前GPIO pin的(上下拉)并聯電阻的使能狀態

1 0表示enable R1,disable R0 0 1表示disable R1,enable R0 1 1表示enable R1, enable R0

不打印出來,表示當前的GPIO pin不支持PUPD狀況,即只有一個上拉電阻、一個下拉電阻。

#示例

一般作為GPIO模式的時候,可以這么調試:

echo mode 66 0 > mt_gpio /*設置66號位IO模式*/ echo dir 66 1 > mt_gpio /*設置66號 io為輸出方向*/ echo out 66 1 > mt_gpio /*拉高66號io*/

? 回復「?籃球的大肚子」進入技術群聊

回復「1024」獲取1000G學習資料

總結

以上是生活随笔為你收集整理的LinuxGPIO操作和MTK平台GPIO的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。