GPIO 使用¶
BM1684 芯片包含 3 组 GPIO 控制器,每个控制 32 根 GPIO,与 Linux 的设备节点对应如下:
| GPIO控制器 | Linux设备节点 | GPIO 物理编号 | GPIO 逻辑编号 |
|---|---|---|---|
| #0 | /sys/class/gpio/gpiochip480 | 0到31 | 480到511 |
| #1 | /sys/class/gpio/gpiochip448 | 32到63 | 448到479 |
| #2 | /sys/class/gpio/gpiochip416 | 64到95 | 416到447 |
比如要操作 GPIO6,则需要:
编号转换:物理编号是
6, 对应的逻辑编号是(480 + (6 - 0)) = 486,这里的0代表 GPIO 物理编号的开始导出该 GPIO, 以 root 用户运行:
echo 486 >/sys/class/gpio/export
操作 GPIO,设定读取输入或输出指定值:
cd /sys/class/gpio/gpio486 # 设置输入模式 echo in >direction cat value # 设置输出模式 echo out >direction # 输出低电平 echo 0 >value # 输出高电平 echo 1 >value
有以下注意事项:
如果 GPIO 已经被其他驱动申请了的话,是无法导出 (export) 成功的,也就无法进行后续的读写操作。