标签: gpio

Beaglebone gpio输入无法正常工作

我正在使用beaglebone使用sysfs接口从特定引脚访问数字输入.我可以改变输出状态而不是输入:(.我做的是,我有两个引脚pinA和pinB.pinA我做了输出而pinB我做了输入.将pinA连接到pinB.通过发送将pinA配置为输出引脚通过传入将sysf和pinB中的direction属性作为输入.然后我将PinA的值更改为1并将其作为输出给出1(我使用LED测试).但是当我读取PinB的值时,它仅给出0,即使我将0传递给pinA的值.可能是什么原因?

谢谢 :)

linux embedded-linux beagleboard sysfs gpio

3
推荐指数
1
解决办法
1万
查看次数

当GPIO更改状态时,sysfs如何更新?

假设gpio X可以作为输入引脚在sysfs中导出,在这之后,将在/ sys/class/gpio /中创建一个名为gpioX的目录.gpioX /包含少量文件,例如"value",表示gpio X的当前状态(高或低).

当施加到引脚X的信号改变其状态(例如从低到高)时会发生什么(在内核空间中)?

我的意思是,在转换之前,gpioX/value包含"low",但之后它将包含"high"值.操作系统如何更新此文件?

我认为需要一个中断机制.它是否使用中断机制来更新sysfs?

interrupt linux-kernel sysfs gpio

3
推荐指数
1
解决办法
2258
查看次数

Python Raspberry Pi GPIO 错误

我正在我的 Raspberry Pi 上运行以下 python 脚本:

\n\n

http://www.skpang.co.uk/dl/rfid.py

\n\n

我在最后修改了脚本以访问 GPIO 引脚 15 并打开和关闭它。这是我的代码在底部:

\n\n
def example():\n\nrfid = SL030()\nfw = rfid.get_firmware()\nprint("RFID reader firmware:" + fw)\nprint()\n\nGPIO.setmode(GPIO.BOARD)\nGPIO.setup(15, GPIO.OUT)\nGPIO.output(15,True)\n\n\nwhile True:\n    rfid.wait_tag()\n    print("card present")\n\n    if rfid.select_mifare():\n        type = rfid.get_type()\n        print("type:" + rfid.get_typename(type))\n\n        id = rfid.get_uidstr()\n        try:\n            user = cards[id]\n            print(user)\n            #os.system("aplay " + user)\n        except KeyError:\n            print("Unknown card:" + id)\n\n    rfid.wait_notag()\n    print("card removed")\n    print()\n
Run Code Online (Sandbox Code Playgroud)\n\n

我面临的问题是,虽然它操作引脚 15,但脚本会因以下错误而停止:

\n\n
Traceback (most recent call last):\n  File "./rfid.py", line 212, in <module>\n    example()\n  File "./rfid.py", line 182, …
Run Code Online (Sandbox Code Playgroud)

python gpio raspberry-pi

3
推荐指数
1
解决办法
1万
查看次数

检测内核模块中GPIO的中断

我使用Atmel uC将输入切换到BeagleBone上的GPIO线,每500 ms从高到低.我在我的Linux内核模块中为此注册了一个处理程序,但由于某种原因没有调用处理程序.

我的模块代码是 -

#define GPIO 54
#define GPIO_INT_NAME  "gpio_int"

#define GPIO_HIGH gpio_get_value(GPIO)
#define GPIO_LOW (gpio_get_value(GPIO) == 0)
short int irq_any_gpio    = 0;
int count =0;

enum { falling, rising } type; 
static irqreturn_t r_irq_handler(int irq, void *dev_id)
 {
      count++;
    printk(KERN_DEBUG "interrupt received (irq: %d)\n", irq);
        if (irq == gpio_to_irq(GPIO)) 
    {

        type = GPIO_LOW ? falling : rising;

        if(type == falling)
        {
            printk("gpio pin is low\n");    
        }
        else
            printk("gpio pin is high\n");

    }

    return IRQ_HANDLED;
}


void r_int_config(void) { …
Run Code Online (Sandbox Code Playgroud)

linux interrupt linux-device-driver interrupt-handling gpio

3
推荐指数
1
解决办法
2万
查看次数

python是否以恒定速度迭代?

我编写了一些代码来获取GPIO的传感器读数.为了确保测量结果与特定时间相对应,我想知道python是否以恒定速度迭代(以便迭代之间的间隙是恒定的) - 以及迭代之间的最小时间间隔是多少.

如果他们不是,有人可以告诉我如何使时间间隔保持不变.谢谢!

python iteration gpio

3
推荐指数
1
解决办法
107
查看次数

如何检测树莓派GPIO输入的变化

有没有一种方法可以在不使用无限循环的情况下检测树莓派 GPIO 的变化?

您可以使用以下方法检测上升或下降:

GPIO.add_event_detect(channel, GPIO.RISING, callback=my_callback)
Run Code Online (Sandbox Code Playgroud)

但您只能将事件检测器设置为一次下降或上升。有没有办法在不检查无限循环中的输入的情况下做到这一点?

python gpio raspberry-pi

3
推荐指数
1
解决办法
6184
查看次数

Beaglebone Black上的GPIO

我目前遇到了Beaglebone黑色的GPIO引脚问题。

我正在寻找一种从C中的GPIO引脚p8_4读取值的正确方法。如果我正确理解的话,我尝试使用一个库,该库从引入设备树之前一直使用一种不支持的旧方法。

我试图找到解决问题的其他方法,但似乎找不到。有没有人能让我在C的正确轨道上前进?

c tree device gpio beagleboneblack

3
推荐指数
1
解决办法
3954
查看次数

GPIO irq:下降沿和上升沿检测

我尝试为基于 TI am335x SoC 的电路板创建裸机应用程序。我需要做的一件事是callback1在上升沿和callback2下降沿调用。从我发现的数据表中,可以通过写入1 << pinRISINGDETECT 和 FALLINGDETECT GPIO 寄存器来启用对上升沿和下降沿的同时检测。但是,我不明白(在数据表中没有看到它的迹象),我如何确定当前出现的中断是由 GPIO 的上升沿还是下降沿引起的?

embedded arm irq omap gpio

3
推荐指数
1
解决办法
1181
查看次数

STM32f103c8 gpio限速

我有这个简单的内联汇编代码:

__asm__ volatile (

    ".equ GPIOA_ODR, 0x4001080C \n\t" //GPIOA base address is 0x40010800 and ODR offset is 0x0C


    //turns on PA8
    "ldr r1, =(1 << 8)     \n\t"        
    "ldr r2, =#GPIOA_ODR   \n\t"     
    "str r1, [r2]          \n\t"   

    //turn off PA8
    "ldr r1, =0            \n\t"        
    "ldr r2, =#GPIOA_ODR   \n\t"     
    "str r1, [r2]          \n\t"          

);
Run Code Online (Sandbox Code Playgroud)

PA8只振荡2.4MHz,我想要36MHz的速度。我之前尝试过使用计时器并达到 36MHz 的速度,但由于一些限制,我想避免使用它们。

我不明白为什么 TIMER1 通道 1 (PA8) 可以配置为 36MHz 开关速度,但是当我尝试在组装中执行相同操作时,我在同一引脚上只能达到 2.4MHz 的速度。

我也在使用 PinMode(PA8, OUTPUT);

我尝试了这个汇编代码的其他变体,但在 PA8 上只达到了 2.8MHz 的最大值。我的问题是:STM32f103C8 上的 GPIO 引脚上的开关速度是否不可能高于 2.4-2.8MHz?

(这是Need Help Manipulating …

assembly stm32 inline-assembly gpio

3
推荐指数
1
解决办法
2869
查看次数

树莓派 4 用 java 控制 GPIO

我想用 java 控制我的树莓派 pi4 上的 16*2 液晶显示器。问题是 Pi4J - 用 java 修改 gpios 的解决方案没有更新到 pi4。还有其他解决方案吗?启动程序时出现此错误:

pi@raspberrypi:~/desktop/gpio $ sudo ./start.sh
Run Code Online (Sandbox Code Playgroud)

<--Pi4J--> GPIO 控制示例...开始。Maista 无法确定硬件版本。我看到:硬件:BCM2711,

  • 期待 BCM2708 或 BCM2709。如果这是真正的 Raspberry Pi,请将其报告给 projects@drogon.net。如果这不是 Raspberry Pi,那么您只能靠自己,因为 WiringPi 旨在仅支持 Raspberry Pi。

java gpio raspberry-pi raspberry-pi4

3
推荐指数
1
解决办法
931
查看次数