gpio 介绍
观看视频了解更多
gpio 指通用输入/输出Pin,包括SOC 外围pin 或 外接扩展pin(比如I2C 转GPIO,电源管理芯片扩展gpio)。
- 输入/输出,对应高低电平
- 中断pin,通常边沿触发,可用于快速处理事件
gpio 接口
- 新版本内核GPIO重新设计后,采用基于描述符的接口 了解更多
用户空间接口: /dev/gpiochipn - 基于整数的老版本接口同样可以使用(Legacy GPIO Interfaces),以下文档介绍。
用户空间接口: /sys/class/gpioN
虽然gpio 可以在用户空间(应用程序)中使用,但不建议在产品中直接使用,可以用于快速建立原型。
sysfs
用户程序可以通过sysfs 接口直接操作gpio。
1 | cd /sys/class/gpio/ |
驱动接口
旧接口采用整数描述PIN,0~MAX_INT, 不同模块上的pin 线性映射到系统中,比如soc pin、 iic转gpio-pin、FPGA pin。
1 | #include <linux/gpio.h> |
gpiolib设计
待更新
gpio irq
GPIO 可以发生中断事件,以下常用接口,拿到irq num 后即可采用irq接口注册中断函数处理中断事件。
1 | // gpio 编号转irq 中断号 |
gpio 子系统
采用gpio 模拟设计
- i2c-gpio: gpio 模拟iic 协议时序
- gpio-keys: gpio 按键设计
- leds-gpio: led灯控制
- spi_gpio : gpio 模拟spi 协议时序
…
gpio pinctrl
pin 脚除了用作输入输出使用,还可以复用为spi,iic,adc 功能,内核设计为pinctrl 子系统(这里省略细节)。