首页 >> 关于GPIO你不知道的那些事儿
关于GPIO你不知道的那些事儿
来源:  时间:2014-12-08
分享到:

在上篇文章中《#玩转Galileo系列#如何在Linux系统中直接操作GPIO》讲述了找到Intel Galileo与Arduino IO之间如下的对应关系。

GPIO    Digital I/O
    gpio11  pin0
    gpio12  pin1
    gpio13  pin2
    gpio14  pin3
    gpio6   pin4
    gpio0   pin5
    gpio1   pin6
    gpio38  pin7
    gpio40  pin8
    gpio4   pin9
    gpio10  pin10
    gpio5   pin11
    gpio15  pin12
    gpio7   pin13

之前文章只是通过在Linux下写一个Python程序驱动了gpio,但是未详细说明其中细节,这里将对Galileo gpio的操作进行细分讲解。

Arduino在写程序时需对pinMode进行设置,然后再将其value设为high或者low,在这里,也是如此。

首先定义GPIO的方向(输入还是输出):

echo -n "out" > /sys/class/gpio/gpio7/direction

上面的命令将gpio7的方向定义为“out”,也就是输出,如果需要将其设为输入,则需要改成如下:

echo -n "in" > /sys/class/gpio/gpio7/direction

需注意的是,我采用的Galileo为Gen2,上图中“drive”模式不需要进行设置,在Gen1中则需要。

定义GPIO数值:

echo -n "1" > /sys/class/gpio/gpio7/value

如果上一步中的“direction”设置为“output”时,这里则将gpio7的值设为高,也就是说,此时,gpio7输出高电平,与其连接的LED此时将点亮。

>echo -n "0" > /sys/class/gpio/gpio7/value

同理,此时将gpio7电平设为低,与其连接的LED此时将熄灭。

如图所示通过“cat /sys/class/gpio/gpio15/direction”和"cat /sys/class/gpio/gpio15/value"命令查看gpio15的“direction”和“value”状态。

>cat /sys/class/gpio/gpio7/value

当然,除次之外,若将“direction”设为“in”则可通过查看“value”的值读取当前gpio的状态,电平为高还是低,可以作“Button”按钮使用。

最后,如果其他Uart、spi等复用gpio的情况发生,则需通过下述命令将上面的gpio7移除以便其他程序使用。

 echo -n "7" > /sys/class/gpio/unexport

到这里,关于gpio的操作,主要集中在数字io的应用讲解完毕,之后的文档会讲解pwm和analogin的应用,不过鉴于Intel官方这类的文档较少,恐怕会耗费不少时间。

最后,大家有问题均可回复微信号与我交流,我将在下期统一解答。