当前位置: 首页 > news >正文

GPIO 应用

  1. 应用层如何控制 GPIO, 譬如控制 GPIO 输出高电平、或输出低电平。

  1. 应用层如何操控 GPIO

与 LED 设备一样, GPIO 同样也是通过 sysfs 方式进行操控,进入到/sys/class/gpio 目录下。

可以看到该目录下包含两个文件 export、 unexport 以及 5 个 gpiochipX(X 等于 0、 32、 64、 96、 128)命名的文件夹。

2.1)gpiochipX: 当前 SoC 所包含的 GPIO 控制器,我们知道 I.MX6UL/I.MX6ULL 一共包含了 5 个 GPIO控制器,分别为 GPIO1、 GPIO2、 GPIO3、 GPIO4、 GPIO5,在这里分别对应 gpiochip0、gpiochip32、gpiochip64、 gpiochip96、 gpiochip128 这 5 个文件夹, 每一个 gpiochipX 文件夹用来管理一组 GPIO。

在这个目录我们主要关注的是 base、 label、 ngpio 这三个属性文件,这三个属性文件均是只读、不可写。

1)base: 与 gpiochipX 中的 X 相同,表示该控制器所管理的这组 GPIO 引脚中最小的编号。每一个 GPIO引脚都会有一个对应的编号, Linux 下通过这个编号来操控对应的 GPIO 引脚。

2)label: 该组 GPIO 对应的标签,也就是名字。

3)ngpio: 该控制器所管理的 GPIO 引脚的数量(所以引脚编号范围是: base ~ base+ngpio-1) 。

给定一个 GPIO引脚为 GPIO4_IO16,那它对应的编号是多少呢?

首先我们要确定 GPIO4 对应于 gpiochip96,该组 GPIO 引脚的最小编号是 96(对应于GPIO4_IO0),所以 GPIO4_IO16 对应的编号自然是 96 + 16 = 112;

同理GPIO3_IO20 对应的编号是 64 + 20 = 84。

2.2)export: 用于将指定编号的 GPIO 引脚导出。 在使用 GPIO 引脚之前,需要将其导出,导出成功之

后才能使用它。 注意 export 文件是只写文件,不能读取,将一个指定的编号写入到 export 文件中即可将对应的 GPIO 引脚导出。

echo 0 > export # 导出编号为 0 的 GPIO 引脚(对于 I.MX6UL/I.MX6ULL 来说,也就是GPIO1_IO0)

gpioX将指定的编号写入到 export 文件中,可以导出指定编号的 GPIO 引脚,导出成功之后会在/sys/class/gpio目录下生成对应的 gpioX(X 表示 GPIO 的编号)文件夹,以前面所生成的 gpio0 为例,进入到 gpio0 目录。

主要关心的文件是 active_low、 direction、 edge 以及 value 这四个属性文件。

1)direction: 配置 GPIO 引脚为输入或输出模式。该文件可读、可写,读表示查看 GPIO 当前是输入还是输出模式,写表示将 GPIO 配置为输入或输出模式;读取或写入操作可取的值为"out"(输出模式)和"in"(输入模式)

2)value在 GPIO 配置为输出模式下,向 value 文件写入"0"控制 GPIO 引脚输出低电平,写入"1"则

控制 GPIO 引脚输出高电平。在输入模式下,读取 value 文件获取 GPIO 引脚当前的输入电平状态。

# 获取 GPIO 引脚的输入电平状态
echo "in" > direction
cat value

# 控制 GPIO 引脚输出高电平
echo "out" > direction
echo "1" > value

3)active_low: 这个属性文件用于控制极性, 可读可写,默认情况下为 0。

# active_low 等于 0 时
echo "0" > active_low
echo "out" > direction

echo "1" > value #输出高
echo "0" > value #输出低

4)edge: 控制中断的触发模式,该文件可读可写。 在配置 GPIO 引脚的中断触发模式之前,需将其设置为输入模式:

非中断引脚: echo "none" > edge

上升沿触发: echo "rising" > edge

下降沿触发: echo "falling" > edge

边沿触发: echo "both" > edge

当引脚被配置为中断后可以使用 poll()函数监听引脚的电平状态变化。

2.3)unexport: 将导出的 GPIO 引脚删除。当使用完 GPIO 引脚之后,我们需要将导出的引脚删除,同

样该文件也是只写文件、不可读。

echo 0 > unexport # 删除导出的编号为 0 的 GPIO 引脚

  1. 点亮led灯

引脚计算:gpio5属于gpiochip128; 128+3=131。

echo 131 > export  //创建引脚控制文件

echo "1" > active_low   //默认为高电平
echo "out" > direction  //设置引脚为输出模式
echo "0" > value        //设置引脚为低电平

echo 131 > unexport  //销毁引脚控制文件

  1. 编写app文件

相关文章:

  • 世界500强企业名字/seo+网站排名
  • 网站的url是什么/上海seo外包
  • 网上怎么找承包小工程/潍坊百度快速排名优化
  • 网站流程示意/seo推广公司哪家好
  • 广东官网建设公司/排名优化是怎么做的
  • asp网站开发论文参考文献/如何网络推广自己的产品
  • 抖音商品机会潜力分析报告竞赛-3等奖作品分析
  • SpringCloud(10):Hystrix请求缓存
  • 2023年总结
  • 3.1 python高阶应用
  • 常用损失函数-交叉熵损失函数、MAE、MSE、smoothL1
  • ZYNQ FPGA嵌入式开发 - 小梅哥(二)
  • 自动生成webhook组件证书
  • JS中Math.random()方法的使用总结
  • 《Linux性能优化实战》学习笔记 Day03
  • 如何寻找sqli的思路(SQL注入,时间盲注,盲注字典)
  • 高校数据可视化(智慧校园)
  • [leetcode.29]两数相除,位运算虽好,不要满眼是她