3.0 rk平台如何操作GPIO

文章目录

写在前面

想操作一下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="{&quot;mod&quot;:&quot;1585297308_001&quot;,&quot;spm&quot;:&quot;1001.2101.3001.6548&quot;,&quot;dest&quot;:&quot;https://blog.youkuaiyun.com/weixin_34799243/article/details/124508353&quot;,&quot;extend1&quot;:&quot;pc&quot;,&quot;ab&quot;:&quot;new&quot;}"><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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值