1. 程式人生 > >GPIO編程1:用文件IO的方式操作GPIO

GPIO編程1:用文件IO的方式操作GPIO

輸入 寫入 col read device 並不是 pen value 目錄

概述

通過 sysfs 方式控制 GPIO,先訪問 /sys/class/gpio 目錄,向 export 文件寫入 GPIO 編號,使得該 GPIO 的操作接口從內核空間暴露到用戶空間,GPIO 的操作接口包括 direction 和 value 等,direction 控制 GPIO 方向,而 value 可控制 GPIO 輸出或獲得 GPIO 輸入。文件 IO 方式操作 GPIO,使用到了4個函數 open、close、read、write。

首先,看看系統中有沒有“/sys/class/gpio”這個文件夾。如果沒有請在編譯內核的時候加入:

Device Drivers -> 
        GPIO Support 
-> /sys/class/gpio/… (sysfs interface)。

/sys/class/gpio 的使用說明

如果是在已經適配好的 Linux 內核上,那麽相信已經有了完成的 gpiochip,可以在用戶空間 /sys/class/gpio 目錄下看到如下文件:

export
gpiochip0/
gpiochip32/
gpiochip64/
gpiochip96/
unexport

其中引腳編號可能並不是這些。

說明:

1、gpio_operation 通過 /sys/ 文件接口操作 IO 端口 GPIO 到文件系統的映射。


2、控制 GPIO 的目錄位於 /sys/class/gpio。
3、/sys/class/gpio/export 文件用於通知系統需要導出控制的 GPIO 引腳編號。
4、/sys/class/gpio/unexport 用於通知系統取消導出。
5、/sys/class/gpio/gpiochipX 目錄保存系統中 GPIO 寄存器的信息,包括每個寄存器控制引腳的起始編號 base,寄存器名稱,引腳總數。

導出一個引腳的操作步驟

計算引腳編號

首先計算此引腳編號:

引腳編號 = 控制引腳的寄存器基數 + 控制引腳寄存器位數

導出引腳

向 /sys/class/gpio/export 寫入此編號,比如12號引腳,在 shell 中可以通過以下命令實現:

echo 12 > /sys/class/gpio/export

命令成功後生成 /sys/class/gpio/gpio12 目錄,如果沒有出現相應的目錄,說明此引腳不可導出。

設置方向

direction 文件,定義輸入輸入方向,可以通過下面命令定義為輸出:

echo out > /sys/class/gpio/gpio12/direction

direction 接受的參數可以是:in、out、high、low。其中參數 high / low 在設置方向為輸出的同時,將 value 設置為相應的 1 / 0。

查看方向

 cat /sys/class/gpio/gpio12/direction

設置輸出值

echo 1 > /sys/class/gpio/gpio12/value

查看輸出值

 cat /sys/class/gpio/gpio12/value

取消導出

echo 12 > /sys/class/gpio/unexport

GPIO編程1:用文件IO的方式操作GPIO