linux通用GPIO驅動
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驅動