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的操作接口包括directionvalue等,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、outhigh、low。其中參數(shù) high / low 在設(shè)置方向?yàn)檩敵龅耐瑫r(shí),將 value 設(shè)置為相應(yīng)的 1 / 0。

 

1.4:GPIO輸出

value 文件是端口的數(shù)值,為10,通過(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)注明出處。


Tags: Array