我想写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是什么意思?如果我想配置gpio0
到gpio127
,我可以这样做一个循环:
for (int i = 0; i < 128; i++) {
rq.lineoffsets[i] = i;
}
1条答案
按热度按时间lx0bsm1f1#
假设我们要将引脚17和27配置为OUTPUT,并且我们要在引脚17上写入HIGH(1),在引脚27上写入LOW(0)。
设置该结构不会设置任何GPIO级别。当您调用
ioctl()
时,它只会设置相应GPIO的模式。顺便说一句,这种结构是贬值的。
线是什么意思
它依赖于硬件,您需要咨询您的实现。
如果我想配置gpio0到gpio127
检查您是否有足够的GPIO,以及
lineoffsets
字段是否足够大。即使你有足够的物理GPIO,控制结构也不必“一次性”处理它们。最大句柄数在GPIOHANDLES_MAX
中定义。