我想控制嵌入式设备(BeagleBoard-xM)的扩展端口(GPIO)。但是,我发现它们在启动时会被设置为“高”。
启动时是否有任何编程方式将它们设置为“低”?我正在考虑编写一个在启动时运行的shell脚本,它将访问GPIO并将它们设置为“低”。我还试图找到,如果有一个脚本将GPIO设置为“高”,为了禁用它,但没有成功。
任何帮助都将受到高度赞赏。
BeagleBoard-xM Rev C,Angstrom Linux,内核:3.0.7
答案 0 :(得分:2)
如果你想在启动(尽可能早)将它们放低,那么它不是关于Linux,而是关于你的Bootloader。那里的GPIO设置很容易完成2-3行(我不确定你使用的是哪个Bootloader但是:)
我为BusyBox发行版编写了一个脚本,它将引脚设置为“低”(这里的10是实际引脚 - 你必须查找它,你需要哪个数字)。将此脚本放入/etc/init.d/
目录,以便在登录前执行。
#! /bin/sh
#Pin 10
Echo 10 > /sys/class/gpio/export
Echo out > /sys/class/gpio/gpio10/direction
Echo 1 > /sys/class/gpio/gpio10/value
我有一个Bootloader AT91Bootstrap的脚本,它将引脚置为高电压
Const struct pio_desc gpio_values[] =
{{„PC1“, AT91C_PIN_PC(1), 1, PIO_DEFAULT, PIO_OUTPUT}};
pio_setup(gpio_values);
我希望这可以帮到你
答案 1 :(得分:1)
通常,GPIO在启动时默认为高阻抗(Z)。你怎么知道这个价值很高?它可能会对它产生微弱的影响。
如果你想让它们从Z变为0,那么通常你首先写入值,然后是方向(out)。
还要确保禁用上拉。
答案 2 :(得分:0)
您是否可以在gpio_init.sh文件中使用此代码?
sudo sh -c "echo '10' > /sys/class/gpio/export"
sudo sh -c "echo 'out' > /sys/class/gpio/gpio10/direction"
sudo sh -c "echo '1' > /sys/class/gpio/gpio10/value"