文章目录
写在前面
想操作一下GPIO的原因是wifi软重启的时候起不来,但是断电重启就可以,所以怀疑可能不是驱动的问题,有可能是电源引脚需要拉低拉高刺激他一下,将这段经历记录一下
以GPIO1_C0为例 说明RK平台如何使用GPIO系统
1 使用系统默认的方式
[root@px30_64:/]# cat /sys/kernel/debug/gpio
GPIOs 0-31, platform/pinctrl, gpio0:
gpio-2 ( |enable ) out hi
gpio-5 ( |GTP_INT_IRQ ) in hi
gpio-12 ( |GTP_RST_PORT ) in hi
gpio-15 ( |hs_hp_switch ) out lo
GPIOs 32-63, platform/pinctrl, gpio1:
gpio-48 ( |wlan_default_wlan_po) out hi
GPIOs 64-95, platform/pinctrl, gpio2:
gpio-72 ( |vcc_lcd ) out hi
gpio-77 ( |mdio-reset ) out hi
GPIOs 96-127, platform/pinctrl, gpio3:
GPIOs 511-511, platform/rk805-pinctrl, rk817-gpio, can sleep:
计算公式
GPIO引脚计算公式
以GPIO1_C0为例 n = 1 ; x = 0 ;
(gpion * 32) + (C - A ) * 8 + x = 1 * 32 + 2 * 8 + 0 = 48
[root@px30_64:/]# cd /sys/class/gpio
[root@px30_64:/]# echo 48 > export
[root@px30_64:/]# sh: write error: Device or resource busy
这样表示被占用 无法这样使用
2 使用IO命令控制
先看TRM手册 看一下Address Mapping

可以看到基地址是0xFF250000
正常操作流程
正常的操作流程是先操作复用寄存器然后方向寄存器 然后数据寄存器,rk平台多了时钟,时钟关闭则无法操作
1 操作复用寄存器

[root@px30_64:/]# io -4 -l 4 0xFF250010ff250010: 00000000
2 操作方向寄存器

偏移4即是方向寄存器
#0 输入 1 输出
[root@px30_64:/]# io -4 -l 4 0xFF250004
#bit[16] = 1 : 0001 0000 0000 0000 0000
ff250004: 00010000
3 操作数据寄存器
# 如果出现如下情况,读取到的是00000000 或者 0xffffffff 等,请确认该 GPIO 的 CLK 是不是被关了
[root@px30_64:/]# io -4 -l 4 0xFF250000
ff250000: 00000000
#看一下时钟
[root@px30_64:/]# cat /sys/kernel/debug/clk/clk_summary |grep gpio
pclk_gpio0_pmu 2 1 100000000 0 0
pclk_gpio3 0 1 100000000 0 0
pclk_gpio2 0 1 100000000 0 0
pclk_gpio1 0 1 100000000 0 0
可以看到GPIO1时钟被关了,打开
#使能时钟
echo 1 > /sys/kernel/debug/clk/pclk_gpio1/clk_enable_count
操作寄存器地址即可
#bit[16] = 1 : 0001 0000 0000 0000 0000
io -4 -w 0xFF250000 0x00010000
io -4 -w 0xFF250000 0x00000000
io -4 -w 0xFF250000 0x00010000
</div><div data-report-view="{"mod":"1585297308_001","spm":"1001.2101.3001.6548","dest":"https://blog.youkuaiyun.com/weixin_34799243/article/details/124508353","extend1":"pc","ab":"new"}"><div></div></div>
<link href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/markdown_views-22a2fefd3b.css" rel="stylesheet">
<link href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/style-4f8fbf9108.css" rel="stylesheet">
</div>
220

被折叠的 条评论
为什么被折叠?



