当Raspberry Pi启动时,为什么某些GPIO引脚为高电平?


18

我连接了一个简单的电路,一个LED连接到BOARD参考上的引脚18。我运行了一个简单的程序,将引脚18设置为HIGH,这将打开LED,然后几秒钟后,将引脚18设置为LOW,最后我用GPIO.cleanup()结束了程序。

此时,LED熄灭,这意味着引脚18熄灭(低电平)。现在,我重新启动或重新启动Raspberry Pi,当它重新启动时,插针18上的LED再次点亮,即使在重新启动Raspberry Pi之前该插针已熄灭。

为什么会这样呢?当Raspberry Pi启动时,如何配置特定的引脚(例如引脚18)为关闭?而且我不希望Raspberry Pi启动时任何GPIO引脚都处于高电平。

我担心这个问题,因为假设引脚18连接到机器人上的DC电动机,并且当Raspberry Pi启动时,电动机将打开,这不是我想要的,因为这会干扰机器人的整体结构,有些电动机可能启动而另一些电动机则无法启动,这取决于它们连接的引脚。我想以同步方式手动打开所有电机。

另一件事是,并非所有的引脚都有此问题。当Raspberry Pi启动时,有些会停下来,而有些则不会。


该LED是否像您将其设置为高时那样明亮地点亮,还是只是发出暗淡的光?
goldilocks

施加了3.3伏电压。
Viktor Raspberry

因此,如果您进入/sys/class/gpio并输出引脚18,如果您什么都没改变,那么系统将处于什么状态呢?
goldilocks

当我写“ / sys / class / gpio”时,它说“ -bash:/ sys / class / gpio:是目录”。我不确定如何导出特定的引脚。
Viktor Raspberry

对此有很多解释,所以我不会反省。该示例在上echo写得很繁重,即设置了一些东西。导出后,您要避免使用cat它,而仅使用读取,以检查方向和值。
goldilocks

Answers:


25

上电时,GPIO通过内部电阻拉高或拉低。BCM2835 ARM外设的第102页详细介绍了特定GPIO的上拉是高还是低。

在启动Linux内核并启用设备树后(可能),它将根据设备树设置重新配置GPIO。从中加载的模块/etc/modules还可以更新GPIO状态。

在启动时运行的任何其他软件都可能在设备树设置和模块加载之后重新配置GPIO。

如果您的硬件可能在系统启动时被错误触发,那么找到硬件解决方案是最安全的。



2

我知道已经很晚了。回答。您可以编写python脚本或bash脚本,以手动将引脚设置为低电平并计划cron作业在每次引导时运行。您无需修改​​任何系统/关键文件。除了cron

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.