這篇文章將為大家詳細講解有關什么是GPIO操作原理,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
Linux 系統定義了一切皆文件的原則,甚至于硬件:磁盤,軟盤,等……,這樣的好處是,在不同的平臺和硬件上都能形成統一的調用方式。
這里,我們從樹莓派,探討下GPIO的操作原理(非內核原理):通過 sysfs 方式控制 GPIO。

接觸過 Linux 的,應該都了解
echo "0" > test.txt是將一個字符串0輸入到當前目錄的test.txt文件中,那么下面所有的操作,均基于這個操作形式。
自 Linux 2.6.21 起,GPIO 作為一個基礎組件包含到Linux 內,我們可以根據 GPIO 規范直接使用。
首先,進入 /sys/class/gpio 向目錄下, 我們可以看到以下文件:
# cd /sys/class/gpio && ls -l 總用量 0 -rwxrwx--- 1 root gpio 4096 9月 8 01:37 export lrwxrwxrwx 1 root gpio 0 8月 9 01:16 gpiochip0 -> ../../devices/platform/soc/3f200000.gpio/gpio/gpiochip0 -rwxrwx--- 1 root gpio 4096 9月 8 01:47 unexport
目錄功能具體如下:
gpio_operation 通過 /sys/ 文件接口操作 IO 端口 GPIO 到文件系統的映射。
控制 GPIO 的目錄位于 /sys/class/gpio。
/sys/class/gpio/export 文件用于通知系統需要導出控制的 GPIO 引腳編號。
/sys/class/gpio/unexport 用于通知系統取消導出。
/sys/class/gpio/gpiochipX 目錄保存系統中 GPIO 寄存器的信息,包括每個寄存器控制引腳的起始編號 base,寄存器名稱,引腳總數
引腳編號 = 控制引腳的寄存器基數 + 控制引腳寄存器位數
舉個栗子(具體 GPIO 需要參考數據手冊),如果使想用 GPIO1_20,那么引腳編號就可能等于 1 x 32 + 20 = 54
我們操作在
樹莓派2B下,其中 寄存器基數為 0 ,所以引腳編號=引腳寄存器位數;記操作幾號,引腳號即為幾。

向文件 /sys/class/gpio/export 寫入引腳編號,即可激活引腳。
echo 18 > /sys/class/gpio/export
命令執行成功后,目錄下,便會出現 gpio18 文件夾,如果沒有出現,則表示引腳不可導出。
引腳導出成功后,即可通過寫入 /sys/class/gpio/gpio18/direction 控制引腳 [輸入] 或 [輸出]。
# cd gpio18 # echo "out" > direction
命令無報錯,即為操作成功;可輸入值有以下幾種:
in 引腳輸入信號 out 輸出控制到引腳 high 輸出一個高電平(`value`:`1`) low 輸出一個低電平(`value`:`0`)
輸入輸出的值,通過 gpioX 下的 value 文件控制
當為輸入時,請 echo /sys/class/gpio/gpio18/value 讀出值;
當為輸出時,請 echo 1 > /sys/class/gpio/gpio18/value 輸入值;
這里 value 的值對應著,上面的 high 和 low 時的 1 / 0
當控制完成時,需要釋放掉端口的控制,此時如導出引腳時一樣,將引腳編號輸出到 /sys/class/gpio/unexport 即可。
echo 18 > /sys/class/gpio/unexport

上面的講解中,即時通過 shell 的方式控制 GPIO,這里將所有的命令集合下:
# 進入GPIO目錄 cd /sys/class/gpio # 使用ls查看gpio目錄中的內容 ls # export gpiochip0 unexport # GPIO操作接口從內核空間暴露到用戶空間 # 執行該操作之后,該目錄下會增加一個gpio18文件目錄 echo 18 > export # 進入GPIO18目錄,該目錄由上一步操作產生 cd gpio18 # 查看gpio18目錄 ls # active_low direction edge power subsystem uevent value # 設置GPIO18為輸出方向 echo out > direction # 輸出邏輯高電平,LED點亮 echo 1 > value # 輸出邏輯低電平,LED熄滅 echo 0 > value # 返回上級目錄 cd ../ # 釋放GPIO4接口 echo 18 > unexport
關于什么是GPIO操作原理就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。