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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

LinuxGPIO操作和MTK平台GPIO

發(fā)布時(shí)間:2023/12/20 linux 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LinuxGPIO操作和MTK平台GPIO 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

GPIO口配置是一個(gè)歷史性的問(wèn)題,不管我們使用什么MCU,單片機(jī)也好,ARM也好,都離不開(kāi)驅(qū)動(dòng)GPIO口。Linux下有一個(gè)宏,GPIO_GPIO_SYSFS,打開(kāi)這個(gè)宏后,編譯燒錄到設(shè)備端,去看看sys/class/gpio/這個(gè)目錄。你會(huì)發(fā)現(xiàn)很多驚喜。

雖然是一個(gè)小知識(shí)點(diǎn),但是我覺(jué)得對(duì)做Linux和安卓驅(qū)動(dòng)開(kāi)發(fā)的同學(xué)非常有用,當(dāng)別人問(wèn)你怎么操作一個(gè)GPIO口的時(shí)候,你不妨直接把這個(gè)鏈接發(fā)給他。

#GPIO_GPIO_SYSFS打開(kāi)后,GPIO基本操作

  • 導(dǎo)出 ? /sys/class/gpio# echo 12> export

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

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

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

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

  • 取消導(dǎo)出 ? ? /sys/class/gpio# echo 12> unexport

#MTK平臺(tái)提供節(jié)點(diǎn)給我們?cè)诿钚邢聦?duì)GPIO口進(jìn)行配置,節(jié)點(diǎn)如下

MTK的GPIO口有點(diǎn)奇怪,他需要一個(gè)excel表格來(lái)對(duì)比后才能知道GPIO口是哪個(gè)。

比如:

AB2對(duì)應(yīng)的是UART1的RX,對(duì)應(yīng)的GPIO口編號(hào)是64。這個(gè)EXCEL表格我就不給出來(lái)了,因?yàn)椴煌腃PU的GPIO口標(biāo)號(hào)也是有所不同。

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]:每個(gè)GPIO可以配置的模式可以參考這個(gè)頭文件kernel-4.4/arch/arm64/boot/dts/mediatek/mt8167-pinfunc.h

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

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

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

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

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

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

  • [SMT]:是否使能斯密特觸發(fā)器

  • [DRIVE]:驅(qū)動(dòng)能力,一般可取值0~7

  • ( [R1] [R0] ):

當(dāng)前GPIO pin的(上下拉)并聯(lián)電阻的使能狀態(tài)

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

不打印出來(lái),表示當(dāng)前的GPIO pin不支持PUPD狀況,即只有一個(gè)上拉電阻、一個(gè)下拉電阻。

#示例

一般作為GPIO模式的時(shí)候,可以這么調(diào)試:

echo mode 66 0 > mt_gpio /*設(shè)置66號(hào)位IO模式*/ echo dir 66 1 > mt_gpio /*設(shè)置66號(hào) io為輸出方向*/ echo out 66 1 > mt_gpio /*拉高66號(hào)io*/

? 回復(fù)「?籃球的大肚子」進(jìn)入技術(shù)群聊

回復(fù)「1024」獲取1000G學(xué)習(xí)資料

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。