Thao tác với trạng thái GPIO trên hệ thống Linux

Đị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:

Thẻ: GPIO linux sysfs embedded shell

Đăng vào ngày 30 tháng 8 lúc 12:31