本帖最后由 FFD8 于 2024-2-29 10:14 编辑
# 【Luckfox幸狐 RV1103】二、基础外设测试-gpio(python)
参考教程:https://wiki.luckfox.com/zh/Luckfox-Pico/Luckfox-Pico-GPIO
Luckfox幸狐 RV1103引脚图:
## 1、设备目录:
在 /sys/class/gpio 目录中,每个 GPIO 设备都有其自己的文件夹。这些文件夹的名称是 gpio 加上引脚编号,例如 /sys/class/gpio/gpio55 表示引脚编号为 55 的引脚,即 GPIO1_C7_d。
使用如下命令查看:ls /sys/class/gpio/
## 2、设备属性:
在这些设备目录中,您还可以找到与 GPIO 引脚相关的控制文件,包括方向、值和中断等。每个GPIO设备目录中都包含一组属性文件,这些属性文件用于配置和管理GPIO引脚。您可以在GPIO设备目录中使用如下命令查看:
### 1. 查看gpio55设备的属性文件
```xml
# echo 55 > /sys/class/gpio/export
# cd gpio55
# ls
value power subsystem active_low
uevent edge device direction
```
### 2. 属性文件
通过使用这些属性文件,您可以轻松地配置和控制GPIO引脚,使其适应不同的应用场景和需求。其中一些关键的属性包括:
- 方向(direction):
- 配置为输入:in
- 配置为输出:out
- 值(value):
- 输出低电平:0
- 输出高电平:1
- 中断边沿(edge):
- 上升沿触发:rising
- 下降沿触发:falling
- 双边沿触发:both
- 禁用中断:none
### 3. 控制GPIO引脚电平
设备的属性文件就相当于一个函数的参数接口。对于 /sys/class/gpio/gpio55/value ,每次对文件执行写入操作时,会触发驱动代码,使用这次写入的内容作为参数来修改 gpio55 的引脚电平;而每次读取操作时,则触发驱动代码将当前 gpio55 的引脚电平更新到 /sys/class/gpio/gpio55/value 文件。
## 3、python代码
程序通过控制55,54两个引脚实现输入,输出控制。根据引脚图找到这两个引脚。
```python
from periphery import GPIO
import time
Write_Pin = 55
Read_Pin = 54
Write_GPIO = GPIO(Write_Pin, "out")
Read_GPIO = GPIO(Read_Pin, "in")
try:
while True:
try:
Write_GPIO.write(True)
pin_state = Read_GPIO.read()
print(f"Pin state: {pin_state}")
Write_GPIO.write(False)
pin_state = Read_GPIO.read()
print(f"Pin state: {pin_state}")
time.sleep(1)
except KeyboardInterrupt:
Write_GPIO.write(False)
break
except IOError:
print("Error")
finally:
Write_GPIO.close()
Read_GPIO.close()
```
初始化设置55引脚为输出口,54引脚为输入口;
程序循环设置55引脚先拉高,再拉低,同时54引脚不断读电平数据。
## 4、运行程序
创建py程序:nano gpio.py
将代码拷贝到py中并保存
运行程序:python3 gpio.py
结果展示:可以看到程序打印出了54引脚的电平值,刚开始一直是false,中途将55和54短接,电平值发生了变化,一高一低;后面断开后又恢复到false,再短接后重复一高一低状态。
运行结果看程序符合预期表现。
gpio_test