Linux系統(tǒng)C應(yīng)用編程之GPIO操作
在Linux系統(tǒng)中,一切皆是文件。Linux把一切事物都抽象成文件,如果要操作一個(gè)事物,那么只需要操作它對(duì)應(yīng)的文件即可。本章節(jié)我們操作的對(duì)象是GPIO,那么我們就要首先了解GPIO相關(guān)的文件。
打開SecureCRT,在根文件下有一個(gè)名為/sys的文件夾,這里面存放著我們?cè)S多外設(shè)相關(guān)的文件。

本章我們討論GPIO,所以我們找到GPIO相關(guān)的文件。
進(jìn)入到GPIO相關(guān)的文件夾后,我們看到了如下文件:

export:用于將指定編號(hào)的 GPIO 引腳導(dǎo)出。在使用 GPIO 引腳之前,需要將其導(dǎo)出,導(dǎo)出成功之 后才能使用它。
unexport:將導(dǎo)出的 GPIO 引腳刪除。當(dāng)使用完 GPIO 引腳之后,我們需要將導(dǎo)出的引腳刪除。
gpiochipX: (X:1,2,3,4,5),對(duì)應(yīng)著IMX6ULL芯片上的IO組,GPIO1~GPIO5,每一個(gè)gpiochipX管理這一個(gè)GPIO組,我們隨便進(jìn)入一個(gè)gpiochipX來看看里面。

base:里面的值與gpiochipX的X相同,表示基地址。

label:標(biāo)簽,對(duì)應(yīng)GPIO的名稱,

我們也可以從數(shù)據(jù)手冊(cè)里面找到GPIO1的地址,這里似乎有著什么聯(lián)系.....

ngpio:表示這組GPIO的數(shù)量,一般都為32。

我們可以通過一張表來直觀地看到GPIO的組成形式:

比如我們要操作GPIO4_IO12,表示GPIO4組下的第12個(gè)IO口,第四組的基地址是96,偏移地址是12,那么GPIO4_IO12就是96+12 = 108,即gpiochip108。
如果要使用它,就要先導(dǎo)出它的文件,gpioX, X是其GPIO的編號(hào),使用如下命令:
要?jiǎng)h除也很簡(jiǎn)單:
導(dǎo)出來后可以看到:

可以看到GPIOW目錄下多了一個(gè)gpio108的文件夾。我們看看里面有什么。

根據(jù)字面的意思我們也能理解:
active_low 正反邏輯,正邏輯:高1低0,反邏輯:高0低1;
direction:方向,輸入還是輸出;
edge:觸發(fā)模式,通常用于中斷,上升/下降/both;
vaule:0表示低電平,1表示高電平,正邏輯下。
可想而知,我們只需要修改這些文件的值,就可以達(dá)到控制IO口的目的了。
同樣地,我們也可以編寫C語言來操控這些文件,就能達(dá)到控制io的目的。
參考文獻(xiàn):
1、【正點(diǎn)原子】I.MX6U嵌入式Linux C應(yīng)用編程指南V1.4
2、IMX6UL參考手冊(cè)