我正在使用 beaglebone 通过 sysfs 接口(interface)从特定引脚访问数字输入。而且我可以更改输出状态,但不能更改输入:(。我所做的是,我有两个引脚 pinA 和 pinB。pinA 我输出它,pinB 我输入。将 pinA 连接到 pinB。通过发送将 pinA 配置为输出引脚通过传入将 sysfs 和 pinB 中的方向属性作为输入。我将 PinA 的值更改为 1,它给出 1 作为输出(我使用 LED 测试)。但是当我读取 PinB 的值时,它只给出 0,即使我将 0 传递给 pinA 的值。可能是什么原因?
谢谢你:)
最佳答案
据我了解,您遵循的步骤:
echo 7 > /sys/kernel/debug/omap_mux/gpmc_ad6
echo 38 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio38/direction
cat /sys/class/gpio/gpio38/value
我也犯了同样的错误,花了我好几个小时,但答案很简单:以“echo 7”开头的第一行就是问题所在。查看复用位:
Bit 5: 1 - Input, 0 - Output
Bit 4: 1 - Pull up, 0 - Pull down
Bit 3: 1 - Pull disabled, 0 - Pull enabled
Bit 2 \
Bit 1 |- Mode
Bit 0 /
您正在输入 echo 7,即 --> 0 0 0111,这意味着:位 0,1 和 2 为 1,因此设置了模式。没问题。但是你只是忘了设置它是输入还是输出。它应该是这样的:
echo 0x27 > /sys/kernel/debug/omap_mux/gpmc_ad6
您的位现在是:1 0 0111 二进制,即 0x27(十六进制)。
当你输入 "cat/sys/class/gpio/gpio38/value"时,你会看到一个美妙的 1 :) 我相信你会和我一样开心 :)
此外,还有一件事,您对大约 1.8V 的模拟输入是正确的,但 GPIO 以 3.3v 运行。
关于linux - Beaglebone gpio 输入不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12025119/