Firefly开源社区

12
发表新贴
打印 上一主题 下一主题

[技术讨论] 如何操作GPIO

434

积分

0

威望

0

贡献

技术达人

Rank: 2

积分
434

如何操作GPIO

发表于 2018-9-30 14:46:50      浏览:18263 | 回复:12        打印      只看该作者   [复制链接] 楼主
购买了一块RK3288板子,想尝试一下用GPIO来控制power灯,查询原理图确认使用了GPIO8-A2
这样我就运行:
cd /sys/class/gpio
echo 258 > export
结果提示Permission denied,加上sudo也是毫无效果

这会是什么原因呢?
回复

使用道具 举报

296

积分

0

威望

0

贡献

技术达人

Rank: 2

积分
296
发表于 2018-10-9 09:54:51        只看该作者  沙发
不是258
回复

使用道具 举报

3750

积分

17

威望

18

贡献

官方团队

Rank: 9Rank: 9Rank: 9

积分
3750
发表于 2018-10-10 09:30:56        只看该作者  板凳
这GPIO已经被使用,所以你用通用GPIO的方式控制不了,要么在dts代码屏蔽power led,led的控制可以参考
http://wiki.t-firefly.com/zh_CN/Firefly-RK3288/dirver_led.html
回复

使用道具 举报

434

积分

0

威望

0

贡献

技术达人

Rank: 2

积分
434
发表于 2018-10-10 10:26:41        只看该作者  地板
jpchen 发表于 2018-10-10 09:30
这GPIO已经被使用,所以你用通用GPIO的方式控制不了,要么在dts代码屏蔽power led,led的控制可以参考
http ...

这就是说,如果想用GPIO来控制led,就要改动kernel了
回复

使用道具 举报

434

积分

0

威望

0

贡献

技术达人

Rank: 2

积分
434
发表于 2018-11-6 11:47:53        只看该作者  5#
jpchen 发表于 2018-10-10 09:30
这GPIO已经被使用,所以你用通用GPIO的方式控制不了,要么在dts代码屏蔽power led,led的控制可以参考
http ...

在dts里面关闭gpio-led这部分
然后切换成root,此时可以用echo 258 > /sys/class/gpio/export来创建节点,但是配置direction和value仍然无法控制灯的亮灭,还有其他地方需要配置么?
回复

使用道具 举报

3750

积分

17

威望

18

贡献

官方团队

Rank: 9Rank: 9Rank: 9

积分
3750
发表于 2018-11-6 16:32:50        只看该作者  6#
williamzhang 发表于 2018-11-6 11:47
在dts里面关闭gpio-led这部分
然后切换成root,此时可以用echo 258 > /sys/class/gpio/export来创建节点 ...

dts里面屏蔽掉led,就可以使用通用GPIO的方式控制led
--- a/kernel/arch/arm/boot/dts/firefly-rk3288.dts
+++ b/kernel/arch/arm/boot/dts/firefly-rk3288.dts
@@ -155,6 +155,7 @@
                status = "disabled";
        };
        
+       /*
        firefly-led{
                compatible = "firefly,led";
                led-work = <&gpio8 GPIO_A2 GPIO_ACTIVE_LOW>;
@@ -176,6 +177,7 @@
            gpios = <&gpio8 GPIO_A2 GPIO_ACTIVE_LOW>;
        };  
    };
+   */
回复

使用道具 举报

434

积分

0

威望

0

贡献

技术达人

Rank: 2

积分
434
发表于 2018-11-7 17:53:37        只看该作者  7#
本帖最后由 williamzhang 于 2018-11-8 09:56 编辑
jpchen 发表于 2018-11-6 16:32
dts里面屏蔽掉led,就可以使用通用GPIO的方式控制led
--- a/kernel/arch/arm/boot/dts/firefly-rk3288.d ...

确认dts里面已经注释掉了,另外,可以建立gpio的节点,用echo 258 > /sys/class/gpio/export时,可以生成节点,不会报错

能够访问生成的节点的direction/value文件,但是,输入内容没有反应
我的做法:
echo "out" > /sys/class/gpio/gpio258/direction
echo 0 > /sys/class/gpio/gpio258/value
echo 1 > /sys/class/gpio/gpio258/value
按说应该能够控制灯的亮灭,但是,一点实际上没有任何反应

感觉没法操控GPIO一样
大神能详细指点一下么,感觉自己很可能遗漏了一个小枝节
回复

使用道具 举报

434

积分

0

威望

0

贡献

技术达人

Rank: 2

积分
434
发表于 2018-11-8 09:58:24        只看该作者  8#
jpchen 发表于 2018-11-6 16:32
dts里面屏蔽掉led,就可以使用通用GPIO的方式控制led
--- a/kernel/arch/arm/boot/dts/firefly-rk3288.d ...

继续下去,发现有个PCLK_GPIO8需要设置,设置之后情况还是一样
用cat /sys/class/gpio/gpio258/value读取value的值,发现始终不能变化

所以GPIO始终没有能够设置拉高拉低,这会是什么原因呢?
回复

使用道具 举报

3750

积分

17

威望

18

贡献

官方团队

Rank: 9Rank: 9Rank: 9

积分
3750
发表于 2018-11-8 11:24:34        只看该作者  9#
williamzhang 发表于 2018-11-8 09:58
继续下去,发现有个PCLK_GPIO8需要设置,设置之后情况还是一样
用cat /sys/class/gpio/gpio258/value读 ...

是不是硬件led灯坏了
回复

使用道具 举报

434

积分

0

威望

0

贡献

技术达人

Rank: 2

积分
434
发表于 2018-11-8 12:00:57        只看该作者  10#
jpchen 发表于 2018-11-8 11:24
是不是硬件led灯坏了

没有,默认GPIO都是value是0,两颗灯都很正常的亮着
另外,恢复dts设置,灯又可以控制的
回复

使用道具 举报

返回列表
12
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表