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口標號也是有所不同。
#所有的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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 〖Python APP 自动化测试实战篇
- 下一篇: 调试LCD反被调戏了