dus*_*abo 3 linux embedded-linux beagleboard sysfs gpio
我正在使用beaglebone使用sysfs接口从特定引脚访问数字输入.我可以改变输出状态而不是输入:(.我做的是,我有两个引脚pinA和pinB.pinA我做了输出而pinB我做了输入.将pinA连接到pinB.通过发送将pinA配置为输出引脚通过传入将sysf和pinB中的direction属性作为输入.然后我将PinA的值更改为1并将其作为输出给出1(我使用LED测试).但是当我读取PinB的值时,它仅给出0,即使我将0传递给pinA的值.可能是什么原因?
谢谢 :)
小智 9
据我了解,您遵循的步骤:
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
Run Code Online (Sandbox Code Playgroud)
我也犯了同样的错误,花了我几个小时,但答案很简单:以"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 /
Run Code Online (Sandbox Code Playgroud)
您输入的是echo 7,它是 - > 0 0 0111,这意味着:位0,1和2是1,因此模式已设置.没问题.但是你只是忘了设置它是输入还是输出.它应该是这样的:
echo 0x27 > /sys/kernel/debug/omap_mux/gpmc_ad6
Run Code Online (Sandbox Code Playgroud)
你的位现在是:1 0 0111二进制,它是0x27(十六进制).
当你在输入时写"cat/sys/class/gpio/gpio38/value"时,你可以看到一个很棒的1 :)我相信你会非常高兴,就像我一样:)
此外,还有一件事,您可以使用大约1.8V的模拟输入,但GPIO的工作频率为3.3V.