C语言 使用linux/gpio. h从linux用户空间控制gpio

rggaifut  于 2023-05-28  发布在  Linux
关注(0)|答案(1)|浏览(221)

我想写GPIO 128。在linux/gpio.h内部有struct gpiohandle_request,它保存有关GPIO处理请求的信息。我看到了example
假设我们要将引脚17和27配置为OUTPUT,并且我们要在引脚17上写入HIGH(1),在引脚27上写入LOW(0)。

struct gpiohandle_request rq;
rq.lineoffsets[0] = 17;
rq.lineoffsets[1] = 27;
rq.lines = 2;
rq.flags = GPIOHANDLE_REQUEST_OUTPUT;

现在我对线偏移感到困惑。文件规定:

  • @ linefsets:阵列所需线路,由相关GPIO设备的偏移索引指定

line是什么意思?如果我想配置gpio0gpio127,我可以这样做一个循环:

for (int i = 0; i < 128; i++) {
    rq.lineoffsets[i] = i;
}
lx0bsm1f

lx0bsm1f1#

假设我们要将引脚17和27配置为OUTPUT,并且我们要在引脚17上写入HIGH(1),在引脚27上写入LOW(0)。
设置该结构不会设置任何GPIO级别。当您调用ioctl()时,它只会设置相应GPIO的模式。
顺便说一句,这种结构是贬值的。
线是什么意思
它依赖于硬件,您需要咨询您的实现。
如果我想配置gpio0到gpio127
检查您是否有足够的GPIO,以及lineoffsets字段是否足够大。即使你有足够的物理GPIO,控制结构也不必“一次性”处理它们。最大句柄数在GPIOHANDLES_MAX中定义。

相关问题