1:簡(jiǎn)介
在嵌入式系統(tǒng)中對(duì)GPIO的操作是最基本的操作。在Linux中有一個(gè)通用的GPIO操作方式,下面維芯科就介紹一下 “/sys/class/gpio” 方式。
在/sys/class/gpio/下有個(gè)export文件,向export文件寫(xiě)入要操作的GPIO號(hào),使得該GPIO的操作接口從內(nèi)核空間暴露到用戶(hù)空間,GPIO的操作接口包括direction和value等,direction控制GPIO輸入或者輸出模式,而value可控制GPIO的狀態(tài)或者讀取狀態(tài)。
/sys/class/gpio/目錄下各個(gè)文件說(shuō)明: /sys/class/gpio/export文件用于通知系統(tǒng)需要導(dǎo)出控制的GPIO引腳編號(hào); /sys/class/gpio/unexport 用于通知系統(tǒng)取消導(dǎo)出; /sys/class/gpio/gpioX/direction文件,可以寫(xiě)入in(設(shè)置輸入方向)或out(設(shè)置輸出方向); /sys/class/gpio/gpioX/value文件是可以讀寫(xiě)GPIO狀態(tài); /sys/class/gpio/gpiochipX目錄保存系統(tǒng)中GPIO寄存器的信息,包括每個(gè)寄存器控制引腳的起始編號(hào),寄存器名稱(chēng),引腳總數(shù);其中X表示具體的引腳編號(hào)。 |
1:操作GPIO
1.1: 首先計(jì)算此引腳編號(hào)
引腳編號(hào) = 控制引腳的寄存器基數(shù) + 控制引腳寄存器位數(shù)
舉個(gè)例子: 以瑞薩G2L芯片為例子,雙核A55處理器,高達(dá)1.2GHZ,工業(yè)級(jí)芯片,穩(wěn)定性高,性?xún)r(jià)比好。
如果使想用 P43_2,那么引腳編號(hào)就可能等于 43 x 8 + 2 + 120 = 466。
GPIO_ID = GPIO_port * 8 + GPIO_pin + 120 |
1.2:Export該引腳
向 /sys/class/gpio/export 寫(xiě)入此編號(hào),比如P43_2引腳,在 shell 中可以通過(guò)以下命令實(shí)現(xiàn):
root@weathink:~# echo 466 > /sys/class/gpio/export |
命令成功后生成 /sys/class/gpio/ P43_2 目錄,如果沒(méi)有出現(xiàn)相應(yīng)的目錄,說(shuō)明此引腳不可導(dǎo)出。
1.3:設(shè)定方向
direction 文件,定義輸入輸入方向,可以通過(guò)下面命令定義為輸出。
root@weathink:~# echo out > /sys/class/gpio/P43_2/direction |
direction 接受的參數(shù)可以是:in、out、high、low。其中參數(shù) high / low 在設(shè)置方向?yàn)檩敵龅耐瑫r(shí),將 value 設(shè)置為相應(yīng)的 1 / 0。
1.4:GPIO輸出
value 文件是端口的數(shù)值,為1或0,通過(guò)下面命令將P43_2 設(shè)置為高電平。
使用echo命令來(lái)設(shè)置GPIO
root@weathink:~# echo 1 > /sys/class/gpio/P43_2/value root@weathink:~# echo 0 > /sys/class/gpio/P43_2/value |
1.5:讀取GPIO值
root@weathink:~# cat /sys/class/gpio/P43_2/value |
如果返回1表示高電平,返回0表示低電平。
本文來(lái)自維芯科,轉(zhuǎn)載請(qǐng)注明出處。