OpenWRT中的GPIO

GPIO 通常用于路由器设备中的按钮或 LED。 它们只能安全地提供(supply)或吸收(sink, 拉到GND)大约 4mA 的最大电流,激活时电压通常为 3.3V。 只有两种状态是可能的:高或低。 根据 GPIO 激活设备的方式,定义低电平有效或高电平有效。

高电平有效:GPIO 为高电平时设备被激活
低电平有效:GPIO 为低电平时设备被激活

在Linux中, GPIO可以通过SysFS接口访问 ( /sys/class/gpio/)

首先,需要得到 gpio的base

cat /sys/class/gpio/gpiochip*/base | head -n1

我的设备上,这个值是0

如果你的设备上,这个值是100, 你设置 GPIO 时,要加上这个base
比如gpio 10 , 就应该设置 100+10=110


将GPIO 51设置为高电平输出

echo "51" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio51/direction
echo "1" > /sys/class/gpio/gpio51/value

用uci控制

uci show system | grep "system.led"

定义在 /etc/config/system

config led 'led_wlan5g'
	option name 'WLAN5G'
	option sysfs 'z6001:wlan5g'
	option trigger 'netdev'
	option mode 'link tx rx'
	option dev 'wlan0'

sysfs中的位置

/sys/class/leds/

查看某个led的触发情况

cat /sys/class/leds/z6001ax:nr_power/trigger
[none] nand-disk timer default-on netdev phy0rx phy0tx phy0assoc phy0radio phy1rx phy1tx phy1assoc phy1radio

发现 none是被选中的,也就是没有触发

临时触发它

echo "default-on" > /sys/class/leds/z6001ax:nr_power/trigger

https://openwrt.org/docs/guide-user/base-system/led_configuration

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注