内核GPIO编程说明
参考资料:https://www.kernel.org/doc/Documentation/gpio/
从官方资料来看,linux内核中的gpio接口目前有新旧两个版本,新的版本的接口是descriptor-based的,而旧的是integer-based的。旧的接口已出于兼容性的考虑仍被支持,但已不再建议使用。网上目前大多GPIO编程说明都是旧的版本,所以这篇说明就以介绍新的接口版本为主。
1.驱动首先需要包含头文件:
#include <linux/gpio/consumer.h>
2.调用gpio设备所需函数,函数返回描述符或错误码
struct gpio_desc *gpiod_get(struct device *dev, const char *con_id,
enum gpiod_flags flags)
如果设备需要使用多个gpio,则需在函数中添加index参数:
struct gpio_desc *gpiod_get_index(struct device *dev,
const char *con_id, unsigned int idx,
enum gpiod_flags flags)
其中gpiod_flag控制初始化模式,有以下几种:
* GPIOD_ASIS or 0 不进行初始化
* GPIOD_IN 将gpio初始化为input模式
* GPIOD_OUT_LOW 将gpio初始化为低电平output
* GPIOD_OUT_HIGH 将gpio初始化为高电平output
也可以用以下两个函数调用可用gpio。当没有gpio调用成功时,返回null
参考资料:https://www.kernel.org/doc/Documentation/gpio/
从官方资料来看,linux内核中的gpio接口目前有新旧两个版本,新的版本的接口是descriptor-based的,而旧的是integer-based的。旧的接口已出于兼容性的考虑仍被支持,但已不再建议使用。网上目前大多GPIO编程说明都是旧的版本,所以这篇说明就以介绍新的接口版本为主。
1.驱动首先需要包含头文件:
#include <linux/gpio/consumer.h>
2.调用gpio设备所需函数,函数返回描述符或错误码
struct gpio_desc *gpiod_get(struct device *dev, const char *con_id,
enum gpiod_flags flags)
如果设备需要使用多个gpio,则需在函数中添加index参数:
struct gpio_desc *gpiod_get_index(struct device *dev,
const char *con_id, unsigned int idx,
enum gpiod_flags flags)
其中gpiod_flag控制初始化模式,有以下几种:
* GPIOD_ASIS or 0 不进行初始化
* GPIOD_IN 将gpio初始化为input模式
* GPIOD_OUT_LOW 将gpio初始化为低电平output
* GPIOD_OUT_HIGH 将gpio初始化为高电平output
也可以用以下两个函数调用可用gpio。当没有gpio调用成功时,返回null