问题标签 [gpio]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2250 浏览

arm - 在以非 root 用户身份运行的程序上通过 sysfs、mmap 或设备驱动程序控制 GPIO?

我正在尝试制作 ac 程序来访问嵌入式 linux 系统上的 GPIO,该系统将由非 root 用户运行。我已经可以通过 sysfs (/sys/class/gpio) 访问 GPIO,并制作了一个使用 mmap(通过 /dev/mem/)来控制 GPIO 的简单程序。但是,要写入 /sys/class/gpio/ 和 /dev/mem/,您必须具有 root 权限。在以非 root 用户身份运行的程序中访问 GPIO 的最“正确”或标准方法是什么?
编写设备驱动程序?
授予用户对 /sys/class/gpio/ 的读/写访问权限,以便程序可以使用 sysfs?
或者授予用户对 /dev/mem/ 的读/写访问权限,以便程序可以使用 mmap()?

谢谢

0 投票
7 回答
31664 浏览

embedded - 通过 /dev/mem 驱动 Beaglebone GPIO

我正在尝试编写一个 C 程序来闪烁 Beaglebone 上的 LED。我知道我可以使用 sysfs 方式……但我想看看是否可以通过 /dev/mem 映射物理地址空间获得相同的结果。

我有一个头文件 beaglebone_gpio.h ,内容如下:

然后我有我的 C 程序 gpiotest.c

输出是:

但我看不到 LED 闪烁。

从程序的输出中可以看出,配置是正确的,FE1FFFFF 是一致的,因为 GPIO1_21、GPIO1_22、GPIO1_23 和 GPIO1_24 被配置为输出,每个都驱动一个 LED。

关于原因的任何想法?

0 投票
1 回答
1413 浏览

vb.net - VB.net 和 GPIO

我需要打开一个连接到计算机 RJ-11 端口的钱箱。手册上说的是 RJ11 连接器case open: GPIO 63 ADD A25H(bit3)

如何从 VB.Net 访问该 GPIO?有人有例子吗?

0 投票
1 回答
590 浏览

c - void osSleep(tU32 ticks) - 它是如何工作的(微控制器中的计时器)?

我有一个用 C 语言编写的微控制器代码。根据我的例子,我使用函数“ void osSleep(tU32 ticks)”来停止程序一段时间。不幸的是,我不知道它是如何工作的以及它对我的微控制器有什么作用(哪些引脚、状态等设置为什么值)。

我已经找到了 setBuzzer() 函数,因为我有它的来源:

所以 GPIO 端口设置为 1 或 0 用于与蜂鸣器相关的 PIN(BUZZER_PIN = 0x00002000)。蜂鸣器有一个引脚,所以我可以启用和禁用它(高电压和低电压)。

我想对 osSleep() 进行类似的分析,但奇怪的是,我在整个代码中找不到它的实现,只有声明:

也许该功能在某个库中。无论如何,我想知道它在较低级别上是如何工作的(例如,当我调用它时,定时器会发生什么,执行什么指令 - 就像在蜂鸣器示例中一样)。

此外, Embedded Artists的文档中只有一个名为“Pre-emptive Operating System v 1.4.0”的代码的高级简短定义。

0 投票
0 回答
1730 浏览

android - WiFi模块与Android手机通信

我正在做一个项目,它是一个 android 控制的 LED 灯。该 LED 连接到 LED 控制器,该控制器连接到 WiFi 模块 ( WizFi220 )。WiFi 模块使用 GPIO 接口向 LED 控制器发送数据。Android 手机通过 TCPSocket 发送数据。

到目前为止,我已经实现了编写一个简单的服务器-客户端通信,并且服务器是在普通 PC 上用 Java 实现的。它运作良好。(例如,如果我按下 android 设备上的按钮,PC 上的服务器程序会向控制台打印一些内容)

问题是我应该向 WizFi 模块发送什么才能理解......如果它来自 GPIO 接口,“命令”会到达 LED 控制器,例如它打开/关闭、改变颜色或任何东西。(因为 LED 是 RGB LED)

感谢您的回答和帮助。

0 投票
1 回答
949 浏览

interrupt - request_irq 成功。处理程序未调用

我正在为 BeagleBoard-xM Rev C 上的用户按钮编写一个模块。现在,我只是想在调用中断处理程序时(即按下用户按钮时)打印一条消息。

用户按钮对应于 GPIO 引脚 4。我正在执行 gpio_to_irq(4) 以获取我通过处理程序传递给 request_irq() 的 IRQ 编号,这是成功的。事实上,这是我的 request_irq 调用。

我的中断处理程序看起来像这样。

但是当按钮被按下时,中断处理程序永远不会被调用。关于如何调试的任何指示?

谢谢!

0 投票
1 回答
471 浏览

c - 解码二进制信号

我正在从我的 Raspberry Pi 上的 gpio 引脚读取以下二进制信号(它是气象站的输出)。

第一列是二进制高或二进制低。第二列是它在状态中花费的时间(秒)。

如何将此信号转换为十六进制?!

如您所见,它为零约 48 秒,然后触发 1 和 0 的负载并再次回到零。

我需要弄清楚协议。我说不出那是什么。我唯一掌握的信息是当前温度为 21 摄氏度,风速为零,风向为零。非常感谢任何见解,

二进制数据图

上面是两个不同传输的一些二进制数据图。

0 投票
0 回答
764 浏览

linux - ARM9 内核 2.6.10 GPIO 引脚中断返回 IRQ_HANDLED

我试图更好地理解在基于 GPIO 引脚的中断处理程序(上半部分)和 GPIO 引脚硬件中使用的“return IRQ_HANDLED”语句之间的交互。特别是,考虑设备已将 GPIO 引脚拉低以指示它需要注意的假设情况。这会导致调用相关的(上半部分)中断处理程序。现在假设上半部分处理程序排队了一些工作,然后返回“return IRQ_HANDLED”,但是无论出于何种原因,生成它的设备上的中断都没有被清除(即设备将 GPIO 引脚保持在低状态)。调用“return IRQ_HANDLED”是否会导致重新生成中断?我在以下文章的背景下问这个问题:

http://www.makelinux.net/books/lkd2/ch06lev1sec4

“可重入和中断处理程序 Linux 中的中断处理程序不需要是可重入的。当给定的中断处理程序正在执行时,相应的中断线在所有处理器上被屏蔽,防止接收到同一条线上的另一个中断。通常所有其他中断都被启用,所以其他中断被服务,但当前行总是被禁用。因此,同一个中断处理程序永远不会同时调用来服务嵌套中断。这大大简化了中断处理程序的编写。

上面的注释表明,在调用中断处理程序时,该中断的中断线被屏蔽。我试图弄清楚“return IRQ_HANDLED”的调用是否是取消屏蔽中断线的原因。并且,关于上述假设情况,如果我“返回 IRQ_HANDLED”但设备尚未真正清除其中断,因此仍将 GPIO 引脚保持在低(触发)状态,会发生什么情况。更具体地说,这是否会导致再次生成中断,从而使处理器永远没有机会完成第一次发生中断时排队的工作。即,这是否会导致中断风暴,其中处理器可能被无休止地中断,从而不允许任何有用的处理发生。

提前致谢,

吉姆

PS:我不清楚启用/禁用中断(特别是与特定 GPIO 引脚关联的中断)和屏蔽/取消屏蔽相同的 GPIO 中断之间的区别。

0 投票
1 回答
778 浏览

linux - 在 Linux 中打开 GPIO 有线 LED

我希望在 Linux 中找到一种通用机制来切换连接到嵌入式应用程序中 GPIO 控制器的 LED。

我可以使用 JTAG 或我的引导加载程序(直接设置寄存器)。但是,从用户模式切换一些灯会很棒

我在 Linux 上对此并不精通,是否有可以从我的用户模式应用程序调用的标准内核驱动程序?还是我需要为我的应用程序编写驱动程序?

我进行了一次网络搜索,发现了从编写自己的驱动程序到感觉即席的库的各种想法。我希望找到最“标准”的方式,认为 stackoverflow 人群会有很好的意见

任何提示都会很棒

0 投票
1 回答
1374 浏览

python - 按键时跳转到功能

我为我想要测试的 Raspberry Pi 的 GPIO 制作了一些硬件。我发现了一些简洁的 python 代码,它为 8 个输出创建了 8 个按钮,并让您切换它们的状态。我对 python 几乎一无所知,但我希望能够通过键盘切换 8 个输出(例如数字 1-8)。我不知道如何在不暂停程序流程的情况下要求键盘输入,然后在响应后继续。

如何让数字 1-8 “中断”我的程序并跳转到 8 个相应函数中的 1 个?

我的代码: