GPIO控制和命名规则

Linux提供了GPIO子系统驱动框架,使用该驱动框架即可灵活地控制板子上的GPIO。

GPIO命名

泰山派开发板板载了一个40PIN 2.54间距的贴片排针,排针的引脚定义兼容经典40PIN接口。

在后续对GPIO进行操作前,我们需要先了解k3566的GPIO命名规则, 此处以 GPIO0_B7 举例:

GPIO

0

B7

控制器(bank)

端口(port)

索引序号(pin)

  • 控制器(bank):rk3566有5个GPIO控制器分别是GPIO0-GPIO4,一个控制器下面包含ABCD个端口,每个端口下有包含0-7个索引序号,所以一个控制器可控制32个IO引脚。
  • 端口(port): A、B、C、D。对应着数字:0-3所以A=0、B=1、C=2、D=3
  • 索引序号(pin):固定为0-7共计8个数

代入 GPIO0_B7 ,该引脚的 ID 可以按照以下规则组成:

控制器 (bank) 为 0,表示第 0 组控制器。

端口(port)为 B,表示端口号为1。

索引序号(pin)为7。

根据计算公式:32 x 0 + 1 x 8 + 7 = 15,可以得到引脚ID为15。

sysfs操控GPIO

在Linux中,最常见的读写GPIO方式就是用GPIO sysfs interface, 是通过操作 /sys/class/gpio 目录下的 exportunexportgpio{N}/direction, gpio{N} /value (用实际引脚号替代{N})等文件实现的,经常出现shell脚本里面。 在kernel 4.8开始,加入了libgpiod的支持;而原有基于sysfs的访问方式,将被逐渐放弃。

GPIO输出测试

使用杜邦线连接GPIO0_B7 引脚 和 核心板的P53引脚,看看能否使用下面的代码控制核心板的LED,实现亮灭效果。当然也可以接入逻辑分析仪,通过查看高低电平的变化。

#以下所有操作均需要打开管理者权限使用# 将引脚号 15 导出为 GPIO 引脚,使其可以被访问和控制。
echo 15 > /sys/class/gpio/export# 将引脚号 15 的方向设置为输出模式,即设置为输出引脚。
echo out > /sys/class/gpio/gpio15/direction# 将引脚号 15 的值设置为 1,即将引脚设置为高电平。
echo 1 > /sys/class/gpio/gpio15/value# 将引脚号 15 的值设置为 0,即将引脚置设置为低电平。
echo 0 > /sys/class/gpio/gpio15/value # 将引脚号 15 解除导出,即取消对引脚号 15 的 GPIO 控制权。
echo 15> /sys/class/gpio/unexport

GPIO输入测试

使用杜邦线连接GPIO0_B7 引脚 和 核心板的P32引脚(核心板上面的按钮外接了P32) ,然后对按键进行按下和弹起操作,并且通过下面的代码打印出来的值。

#以下所有操作均需要打开管理者权限使用# 将引脚号 15 导出为 GPIO 引脚,使其可以被访问和控制。
echo 15 > /sys/class/gpio/export# 将引脚号 15 的方向设置为输入模式,即设置为输入引脚。
echo in > /sys/class/gpio/gpio15/direction# 读引脚的值,结果为1或0,更具引脚实际电平决定。
cat /sys/class/gpio/gpio15/value # 将引脚号 15 解除导出,即取消对引脚号 15 的 GPIO 控制权。
echo 15> /sys/class/gpio/unexport

libgpiod操控GPIO

libgpiod是一种字符设备接口,GPIO访问控制是通过操作字符设备文件(比如 /dev/gpiodchip0 gpio控制器)实现的, 并通过libgpiod提供一些命令工具、c库以及python封装。想要使用libgpiod,需要在板卡上安装libgpiod库。

#安装libgpiod库及头文件
sudo apt install  libgpiod-dev #安装gpiod 命令行工具
sudo apt install gpiod

常用的命令行如下,可使用 -h 查看命令相对应的使用说明(以GPIO0_B7为例)

命令

作用

使用举例

说明

gpiodetect

列出所有的GPIO控制器

gpiodetect(无参数)

列出所有的GPIO控制器

gpioinfo

列出gpio控制器的引脚情况

gpioinfo 0

列出第0组控制器引脚组情况

gpioset

设置gpio

gpioset 0 15=0

设置第0组控制器编号7引脚为低电平

gpioget

获取gpio引脚状态

gpioget 0 15

获取第0组控制器编号7的引脚状态

gpiomon

监控gpio的状态

gpiomon 0 15

监控第0组控制器编号7的引脚状态

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/479052.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

城市级智慧排水管网监测,综合预警管理系统

通过城市智慧排水管网监测系统的建设,实现对管网上窨井井盖状态、管网液位、管网流量、管网有害气体、管网水质等数据采集,实时掌握排水管网运行状况,为排水管网的运行调度、养护管理、快速响应提供有效的数据支持,以便于管理者掌…

2024年护眼大路灯横评推荐:书客、霍尼韦尔、松下落地灯哪款才是性能之王?

大路灯逐渐成为学生党、上班族的必备家电,但很多朋友对大路灯了解较少,对大路灯怎么选还有很多疑问,市场大路灯品牌、型号琳琅满目,不知道大路灯哪个品牌好? 本文通过对市面上热门品牌型号测评对比,系统性介…

代码随想录算法训练营DAY20 | 二叉树 (8)

一、LeetCode 701 二叉搜索树中的插入操作 题目链接: 701.二叉搜索树中的插入操作https://leetcode.cn/problems/insert-into-a-binary-search-tree/description/ 思路:见缝插针罢辽。 class Solution {public TreeNode insertIntoBST(TreeNode root, i…

搭建SVN服务端和客户端

参考博客: https://zhuanlan.zhihu.com/p/428552058 先下载这两个文件: 链接: 链接:https://pan.baidu.com/s/1_1v_jKm3h7ZDSYEsgYyovA?pwd11ku 提取码:11ku –来自百度网盘超级会员V5的分享 第一个压缩包里有客户端…

微信小程序-表单提交和校验

一、使用vant组件生成如下页面 二、前端代码如下 <form bindsubmit"submitForm"><view class"cell-group"><van-cell-group><van-field value"{{ title }}" label"商品名称" placeholder"请输入商品名称&qu…

C++ 浮点数二分 数的三次方根

给定一个浮点数 n &#xff0c;求它的三次方根。 输入格式 共一行&#xff0c;包含一个浮点数 n 。 输出格式 共一行&#xff0c;包含一个浮点数&#xff0c;表示问题的解。 注意&#xff0c;结果保留 6 位小数。 数据范围 −10000≤n≤10000 输入样例&#xff1a; 1000.00…

Golang - 使用CentOS 7 安装Golang环境

文章目录 操作步骤 操作步骤 为在CentOS 7上安装Go语言环境&#xff0c;可以按照以下步骤进行操作&#xff1a; 下载Go语言包&#xff1a; 从官方网站 https://golang.org/dl/ 下载适用于Linux的Go语言包。 解压缩Go语言包&#xff1a; 使用以下命令解压缩下载的Go语言包 […

基于Springboot+Vue的在线考试系统源码

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 随着现代教育和职业培…

学习Vue3的第二天

目录 Vue3核心语法1 OptionsAPI 与 CompositionAPI setup函数 setup 概述 setup 语法糖 ref 创建&#xff1a;基本类型的响应式数据 reactive 创建&#xff1a;对象类型的响应式数据 ref 创建&#xff1a;对象类型的响应式数据 ref 对比 reactive toRefs 与 toRef c…

Linux【动静态库】

目录 1.软硬链接 1.1软硬链接的语法 1.2理解软硬链接 1.3目录文件的硬链接 1.4应用场景 1.5ACM时间 2.动静态库 2.1认识库 3.制作静态库 3.1静态库打包 3.2静态库的使用 4.制作动态库 4.1动态库打包 4.2动态库的链接使用 4.3动态库的链接原理 总结&#xff1…

J-Flash J-Link解锁GD32单片机

目录 前言一、使用J-Flash工具解锁单片机1.打开J-Flash软件2.创建工程3.连接 J-Link4.解锁Flash 二、使用J-Link STM32 Unlock解锁GD321.打开J-Link STM32 Unlock工具2.命令行输入3.解锁成功4.验证 三、附录总结&#x1f600;*授人鱼,更要授人以渔&#xff0c;希望猿一的本篇博…

【C#】使用代码实现龙年春晚扑克牌魔术(守岁共此时),流程描述篇

欢迎来到《小5讲堂》 大家好&#xff0c;我是全栈小5。 这是《C#》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对知识点的理解和掌握。…