F133A(D1s)如何使用GPIO:PG4 PG5?
-
按照计算,PG4 = 6*32+4 = 196
root@TinaLinux:/sys/class/gpio# echo 196 > export ash: write error: Invalid argument
数字超过110+就不行了
是还有一些东西需要配置的吗,比如设备树什么的
小白萌新提问 -
# echo 196 > /sys/class/gpio/export [ 39.433632] sun8iw20-pinctrl 2000000.pinctrl: pin PG4 already requested by 4021000.sdmmc; cannot claim for 2000000.pinctrl:196 [ 39.446522] sun8iw20-pinctrl 2000000.pinctrl: pin-196 (2000000.pinctrl:196) status -22 sh: write error: Invalid argument # # echo 197 > /sys/class/gpio/export [ 43.298997] sun8iw20-pinctrl 2000000.pinctrl: pin PG5 already requested by 4021000.sdmmc; cannot claim for 2000000.pinctrl:197 [ 43.313706] sun8iw20-pinctrl 2000000.pinctrl: pin-197 (2000000.pinctrl:197) status -22 sh: write error: Invalid argument # # # echo 198 > /sys/class/gpio/export # # # echo $? 0 #
我这边测试正常
-
@whycan 是还需要设置什么东西吗,我这边显示无效参数
-
@casojie 直接用 sunxi_pinctrl 吧,不用去计算。
下面是简单的使用方法,平时调试特别方便,实现原理是直接操作寄存器,所以不受驱动影响。
查看引脚当前配置:
root@sun8i:/proc/sys/debug/sunxi_pinctrl# echo PE24 > sunxi_pin
echo PE24 > sunxi_pinroot@sun8i:/proc/sys/debug/sunxi_pinctrl# cat sunxi_pin_configure
cat sunxi_pin_configure
printf register value...
pin[PE24] function: 1; register addr: 0xf1c2089c
pin[PE24] data: 1(default value : 0); register addr: 0xf1c208a0
pin[PE24] dleve: 1(default value : 1); register addr: 0xf1c208a8
pin[PE24] pull: 0(default value : 0); register addr: 0xf1c208b0设置引脚为低电平输出:(注意要先设置 function )
root@sun8i:/proc/sys/debug/sunxi_pinctrl# echo PE24 0 > data
echo PE24 0 > dataroot@sun8i:/proc/sys/debug/sunxi_pinctrl# cat sunxi_pin_configure
cat sunxi_pin_configure
printf register value...
pin[PE24] function: 1; register addr: 0xf1c2089c
pin[PE24] data: 0(default value : 0); register addr: 0xf1c208a0
pin[PE24] dleve: 1(default value : 1); register addr: 0xf1c208a8
pin[PE24] pull: 0(default value : 0); register addr: 0xf1c208b0设置引脚为高电平输出:
root@sun8i:/proc/sys/debug/sunxi_pinctrl# echo PE24 1 > data
echo PE24 1 > dataroot@sun8i:/proc/sys/debug/sunxi_pinctrl# cat sunxi_pin_configure
cat sunxi_pin_configure
printf register value...
pin[PE24] function: 1; register addr: 0xf1c2089c
pin[PE24] data: 1(default value : 0); register addr: 0xf1c208a0
pin[PE24] dleve: 1(default value : 1); register addr: 0xf1c208a8
pin[PE24] pull: 0(default value : 0); register addr: 0xf1c208b0 -
@dream 我在这路径下没有这个文件
/proc/sys/debug/sunxi_pinctrl
没有sunxi_pinctrl -
ash: write error: Invalid argument 参数无效看一下是不是kernel配置gpio有问题,建议启用debug输出看看
-
configfs-gadget gadget: high-speed config #1: c
android_work: sent uevent USB_STATE=CONFIGURED
sun8iw20-pinctrl 2000000.pinctrl: pin PG4 already requested by 4021000.sdmmc; cannot claim for 2000000.pinctrl:196
sun8iw20-pinctrl 2000000.pinctrl: pin-196 (2000000.pinctrl:196) status -22 -
@casojie 我的不是 F133A 的平台,我没有 D1 平台,所以不知道具体路径, 你可以 find 下看看,如果没有的话,试试:mount -t debugfs debug /proc/sys/debug
-
解决了,引脚占用问题,谢谢各位
-
@casojie 请问是怎么知道是引脚占用问题的和怎么解决的?
-
重新编译内核
make kernel_menuconfig
勾上
Device Drivers -> Pin controllers -> Allwinner SOC PINCTRL DRIVER -> pinctrl sunxi debugfs driver
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号