Linux下用文件IO的方式操作GPIO
- 第一步:需要在内核下支持,具体操作如下图,选择 /sys/class/gpio。
- 第二步:编译好内核,然后烧写到开发板。
- 第三步:进入目录 /sys/clas/gpio/ 下,使用命令:cd /sys/clas/gpio/
- 第四步:使用命令指定编号得引脚导出,作为GPIO使用,具体管脚定义根据自己的开发板和使用的内核代码决定。以下是全志的芯片管脚定义。
- 第五步:输入命令指定管脚,比如指定PE0管脚,对应的编号为128+0:echo 128 > export 可以发现,目录下出现了gpio128,如果执行命令后没有反应,表示当前的GPIO已经用作其他的功能,例如作为IIC的引脚等。
- 第六步:进入gpio128: cd gpio128, 设置输出还是输入模式 , 比如要输出模式,使用命令:echo “in” > direction 输入模式:echo “out” > direction
- 第七步:设置gpio口的电平或者获取管脚的高低电平,比如输出高电平,那么就是使用命令:echo 1 > value 输出低电平,则使用命令:echo 0 > value 如果要获取高电平,那么使用命令:cat value (注意:需要先设置输出模式才可以)。
第一步:需要在内核下支持,具体操作如下图,选择 /sys/class/gpio。
第二步:编译好内核,然后烧写到开发板。
第三步:进入目录 /sys/clas/gpio/ 下,使用命令:cd /sys/clas/gpio/
第四步:使用命令指定编号得引脚导出,作为GPIO使用,具体管脚定义根据自己的开发板和使用的内核代码决定。以下是全志的芯片管脚定义。
//------------------------------------GPIO的定义--------------------------------------
#define SUNXI_BANK_SIZE 32
#define SUNXI_PA_BASE 0
#define SUNXI_PB_BASE 32
#define SUNXI_PC_BASE 64
#define SUNXI_PD_BASE 96
#define SUNXI_PE_BASE 128
#define SUNXI_PF_BASE 160
#define SUNXI_PG_BASE 192
#define SUNXI_PH_BASE 224
#define SUNXI_PI_BASE 256
#define SUNXI_PJ_BASE 288
#define SUNXI_PK_BASE 320
#define SUNXI_PL_BASE 352
#define SUNXI_PM_BASE 384
#define SUNXI_PN_BASE 416
#define SUNXI_PO_BASE 448
#define AXP_PIN_BASE 1024
//------------------------------------GPIO管脚具体编号--------------------------------------
#define GPIOA(n) (SUNXI_PA_BASE + (n))
#define GPIOB(n) (SUNXI_PB_BASE + (n))
#define GPIOC(n) (SUNXI_PC_BASE + (n))
#define GPIOD(n) (SUNXI_PD_BASE + (n))
#define GPIOE(n) (SUNXI_PE_BASE + (n))
#define GPIOF(n) (SUNXI_PF_BASE + (n))
#define GPIOG(n) (SUNXI_PG_BASE + (n))
#define GPIOH(n) (SUNXI_PH_BASE + (n))
#define GPIOI(n) (SUNXI_PI_BASE + (n))
#define GPIOJ(n) (SUNXI_PJ_BASE + (n))
#define GPIOK(n) (SUNXI_PK_BASE + (n))
#define GPIOL(n) (SUNXI_PL_BASE + (n))
#define GPIOM(n) (SUNXI_PM_BASE + (n))
#define GPION(n) (SUNXI_PN_BASE + (n))
#define GPIOO(n) (SUNXI_PO_BASE + (n))
#define GPIO_AXP(n) (AXP_PIN_BASE + (n))