linux - Beaglebone gpio 输入不工作

标签 linux embedded-linux beagleboard gpio sysfs

我正在使用 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/

相关文章:

linux - 组 : command not found

java - Linux MV 命令来自 Java

android - 向 Android 平板电脑添加驱动程序

linux - BeagleBoard XM 上的 precision-armhf v3.6.2-x3 上的内核源代码

c++ - 让软件中断在裸机 Beaglebone Black 中工作

c++ - 使用多线程用值填充数组

linux - 如何在 rsync 期间跳过文件夹?

linux - 如何获取minicom的kermit文件传输进度

linux - 新的嵌入式项目;哪个 ARM CPU 对 Linux 的支持最好?

linux - Beagleboard 上的 Angstrom Linux 启动进入休眠模式