Định cấu hình và điều khiển GPIO
Để điều khiển một chân GPIO cụ thể, bạn cần xuất nó vào không gian người dùng, đặt hướng và sau đó đặt giá trị trạng thái.
# Xuất chân GPIO ra không gian người dùng
echo [số_gpio] > /sys/class/gpio/export
# Thiết lập chế độ đầu ra
echo out > /sys/class/gpio/gpio[số_gpio]/direction
# Thiết lập trạng thái mức cao
echo 1 > /sys/class/gpio/gpio[số_gpio]/value
# Thiết lập trạng thái mức thấp
echo 0 > /sys/class/gpio/gpio[số_gpio]/value
Lưu ý: Các thao tác trên yêu cầu quyền thực thi của người dùng root.
Kiểm tra trạng thái hiện tại của các GPIO
Để xem trạng thái của tất cả các chân GPIO trên hệ thống, bạn có thể đọc từ tệp debug trong hệ thống tệp ảo:
cat /sys/kernel/debug/gpio
Kết quả trả về sẽ có định dạng tương tự như sau:
gpiochip0: GPIOs 0-31, parent: platform/fd8a0000.gpio, gpio0:
gpio-0 ( |bt_default_wake_host) in lo
gpio-3 ( |vsel ) out lo
gpio-17 ( |vsel ) out lo
gpio-20 ( |reset ) out hi ACTIVE LOW
gpio-21 ( |bt_default_wake ) out hi
gpio-22 ( |bt_default_reset ) out hi
gpio-30 ( |vsel ) out lo
gpiochip1: GPIOs 32-63, parent: platform/fec20000.gpio, gpio1:
gpio-44 ( |reset ) out hi
gpio-52 ( |hp-det ) in hi ACTIVE LOW
gpio-54 ( |work1 ) out hi ACTIVE LOW
gpio-58 ( |vcc5v0_host_pwren ) out hi
gpio-61 ( |hdmirx-det ) in hi ACTIVE LOW
gpio-62 ( |enable ) in lo
gpio-63 ( |reset ) in lo
gpiochip2: GPIOs 64-95, parent: platform/fec30000.gpio, gpio2:
gpio-81 ( |enable ) out hi
gpiochip3: GPIOs 96-127, parent: platform/fec40000.gpio, gpio3:
gpio-102 ( |irq_gpio ) in hi
gpio-111 ( |snps,reset ) out hi ACTIVE LOW
gpio-115 ( |vcc3v3-pcie30 ) out hi
gpio-121 ( |work2 ) out hi ACTIVE LOW
gpio-125 ( |hpd ) in lo
gpiochip4: GPIOs 128-159, parent: platform/fec50000.gpio, gpio4:
gpio-128 ( |spk-con ) out hi ACTIVE LOW
gpio-129 ( |vbus5v0-typec ) out lo
gpio-133 ( |vcc-3v3-sd-s0 ) out hi ACTIVE LOW
gpio-134 ( |sbu1-dc ) out lo
gpio-135 ( |sbu2-dc ) out lo
gpio-136 ( |vcc5v0-host ) out hi
gpio-137 ( |enable ) out hi
gpio-138 ( |enable ) out hi
gpio-148 ( |bt_default_rts ) out lo
gpiochip6: GPIOs 493-508, parent: platform/aw9523-gpio, aw9523, can sleep:
gpio-502 ( |sysfs ) out lo
gpiochip5: GPIOs 509-511, parent: platform/rk806-pinctrl.2.auto, rk806-gpio, can sleep: