libgpiod库的使用
libgpiod库的使用
1.libgpiod库简介
官方的对libgpiod库介绍如下:
libgpiod - C library and tools for interacting with the linux GPIO
character device (gpiod stands for GPIO device)
Since linux 4.8 the GPIO sysfs interface is deprecated. User space should use
the character device instead. This library encapsulates the ioctl calls and
data structures behind a straightforward API.
以上的意思表明:libgpiod是用于与linux GPIO交互的C库和工具
字符设备(gpiod代表GPIO设备)
由于linux 4.8,GPIO sysfs接口已被弃用。用户空间应该使用取而代之的是字符设备。
这个库封装了ioctl调用和简单API背后的数据结构。
GPIO(General Purpose Input/Output Port)通用输入输出接口
2.libgpiod相关结构体
(1)struct gpiod_chip
这个结构体代表支持的gpio芯片的相关信息
struct gpiod_chip {
struct gpiod_line **lines; //每个 gpio 口 gpiod_line 数组 lines,每一个gpio口对应一个line
unsigned int num_lines; //数组的个数
int fd; //设备句柄
char name[32]; //芯片的名称
char label[32]; //芯片的标签
};
(2)struct gpiod_line
struct gpiod_line {
unsigned int offset; //gpio口的偏移量
int direction; //gpio的方向
int active_state; //活动状态配置
int output_value; //最后写入 GPIO 的逻辑值
u32 info_flags;
u32 req_flags;
int state;
struct gpiod_chip *chip;
struct line_fd_handle *fd_handle;
char name[32];
char consumer[32];
};
3.libgpiod常见的函数解析
struct gpiod_chip* gpiod_chip_open_by_name(const