raspi的GPIO控制

最近学习了下树莓派的GPIO的控制,通过如下命令可以查看所有pin的情况:

pinout

当前是raspi 4B,输出如下:

通过一根线将GPIO17与GPIO27相连,读取其状态值均为0:

gpioget gpiochip0 17
gpioget gpiochip0 27

至于为什么是chip0,而不是chip1或chip4,可以通过命令进行查询:

$ gpiofind GPIO17
gpiochip0 17

执行如下命令将GPIO17拉抬到高电压:

gpioset --mode=wait gpiochip0 17=1

默认命令执行结束就退出,电压就恢复了,所以这里使用--mode=wait来保持不退出。此时在另一个终端里读取GPIO27的值:

$ gpioget gpiochip0 27
1

输出就为0. 结束原终端的进程,查询GPIO17和GPIO27,输出为:

$ gpioget gpiochip0 17
0
$ gpioget gpiochip0 27
1

有个--drive参数,默认为push-pull,其各取值含义如下:

push-pull:	推挽模式,即指定电压高或低。可用来驱动单一器件,如LED
open-drain:	开漏模式,电压为低或悬空(表现为高阻抗),可以用于多器件的信号线与
open-source: 开源模式,电压为高或悬空(表现为高阻抗)

监控某个GPIO的电平变化,可执行:

$ gpiomon gpiochip0 17
event:  RISING EDGE offset: 17 timestamp: [   48929.128336981]
event: FALLING EDGE offset: 17 timestamp: [   48937.490543703]

然后另一终端反复执行如下两行命令,就可以看到监听进程有输出:

gpioset gpiochip0 27=1
gpioset gpiochip0 27=0

 

发表于 11月28日 23:19   评论:0   阅读:217  



回到顶部

首页 | 关于我 | 关于本站 | 站内留言 | rss
python logo   django logo   tornado logo