1. 程式人生 > >linux通用GPIO驅動

linux通用GPIO驅動

決定 輸入輸出 gpio 發現 文件導出 寫入 echo direction linux開發

Linux開發平臺實現了通用GPIO的驅動,用戶通過,SHell或者系統調用能控制GPIO的輸出和讀取其輸入值。其屬性文件均在/sys/class/gpio/目錄下,該目錄下有export和unexport兩個屬性文件,其余都是連接文件,如gpiochipN等。

export文件導出某個GPIO,unexport將導出的GPIO從/sysfs中刪除。向export文件寫入要操作的GPIO序號N可以導出對應的GPIO設備目錄,例如:

#echo 68>/sys/class/gpio/export

通過以上操作,在/sys/class/gpio/目錄下生成gpio68/目錄。通過讀寫該目錄下的屬性文件就可以操作該GPIO引腳。該目錄具有一下屬性文件:

1、active_low:具有讀寫屬性,決定value中的值是否翻轉,0不翻轉,1翻轉。

2、edge:具有讀寫屬性,設置GPIO中斷或檢測中斷是否發生。

3、subsystem:符號鏈接,指向父目錄。

4、value:具有讀寫屬性,GPIO引腳電平屬性讀取或者設置

5、direction:具有讀寫屬性,用於設置或查看GPIO引腳輸入輸出方向

6、power:設備與供電方面相關的信息

7、uevent:內核與(udev,自動設備發現程序)之間的通信接口。

輸入輸出設置:

#echo out>/sys/class/gpio/gpioN/direction #設置輸出

#echo in>/sys/class/gpio/gpioN/direction #設置輸入

輸入讀取:

#echo in>/sys/class/gpio/gpioN/direction #設置輸入

#cat /sys/class/gpio/gpioN/value #查看電平

輸出控制:

#echo out>/sys/class/gpio/gpioN/direction

#echo 0>/sys/class/gpio/gpioN/value #輸出低電平

#echo 1>/sys/class/gpio/gpioN/value #輸出高電平

在C中操作GPIO

int fd_export=open("/sys/class/gpio/export",0_RDWR);//打開GPIO導出設備

write(fd_export,"N",,strlen("N"));

close(fd_export);

int fd_direcction = open("/sys/class/gpio/gpioN/direction",o_RDWR);

write(fd_direction,"out",strlen("out"));//設置為輸出

close(fd_direction);

int fd_value=open("/sys/‘class/gpio/gpioN/value",O_RDWR);

write(fd_value,"1",strlen("1"));

close(fd_value);

linux通用GPIO驅動