"); //-->
GPIO 是比较常用的资源,比如说控制 LED 灯亮灭,控制 LCD 上电,控制模块的复位电路,做外设的中断脚等等,这些都有对 GPIO 的操作和使用,所以说,GPIO 开发是驱动开发中必不可少的操作,而且也是最基础的东西。我们在驱动开发过程中,有时候我们不能确定自己使用和申请的 gpio 是否对了,我们可以把它对应的数值给打印出来,通过对比对应的数值可以确定我们具体使用的是哪个数值,输入以下命令:
cat /d/pinctrl/pinctrl/pinmux-pins
cat /sys/kernel/debug/gpio
在 Linux 系统中,GPIO 子系统大致分为三层,分别是 GPIO 硬件层,GPIO 硬件驱动层,抽象的驱动框架。

应用层控制 GPIO
内核已经自带了通用 GPIO 驱动,可以直接在用户空间进行操作,iTOP-3399 开发板烧写 Linux 系统,启动后可以进入到/sys/class/gpio 目录下进行查看 GPIO 的相关信息,如下图所示:
/sys/class/gpio/sys/class/gpio/export 用于通知系统需要导出控制的 GPIO 引脚编号/sys/class/gpio/unexport 用于通知系统取消导出。export 和 unexport,他们都是只写的。
/sys/class/gpio/gpiochipX 目录下保存系统中 GPIO 寄存器的信息,包括每个寄存器控制引脚的起始编号base,寄存器名称,引脚总数。比如我们进入到 gpiochip128,如下图所示:
导出一个引脚的步骤:
1 计算此引脚编号,引脚编号=控制寄存器的寄存器基数+控制引脚寄存器位数。在 rk3399 中,GPIO_number的计算方法为:n*32 + (K-A)*8 + x;
比如 GPIO1_B1 = 1 * 32 + (B-A)*8 + 1 = 32 + 8 + 1 = 41;
GPIO1_B2 = 1 * 32 + (B-A)*8 + 2 = 32 + 8 + 2 = 42;
GPIO0_A3= 0 * 32 + (A-A)*8 + 3 = 0 + 0 + 3 = 3
括号里面的 A、B、C、D 分别代表数值 0、1、2、3,在计算时候分别对应即可。
2 向/sys/class/gpio/export 写入此编号,比如引脚编号是 3,在 shell 中可以通过以下命令实现,命令成功后生成/sys/class/gpio/gpio3 目录,如果没有出现相应的目录,说明此引脚不可导出:
echo 3 > /sys/class/gpio/export
如果在执行第一步的时候即 echo 3 > /sys/class/gpio/export 时出现了以下问题:
sh: write error: Device or resource busy
出现这个问题的原因是你将要使用的这个 gpio 口之前已经申请过了,包括内核申请或者使用上述方法申请过。unexport:释放相应的 GPIO,相应的节点会被删掉,如下所示:
echo 3 > /sys/class/gpio/unexport
3 direction 文件,定义输入输出方向,可以通过下面的命令定义为输出,如下图所示:
注意:direction 接受的参数:in(输入), out(输出), high, low。high/low 同时设置方向为输出,并将 value设置为相应的 1(高电平)或 0(低电平)。
4 edge 文件可以监听对应引脚的事件,需要把 direction 设置为输入。参数可设置为”none”(无中断触发), “rising”(上升沿触发), “falling”(下降沿触发),“both”(上升、下降都沿触发)。
5 active_low:此值可以反转 value 中的值。
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
51单片机开发板
建议王总组织个开发板的捐赠活动
ARM嵌入式系统开发板三星S3C44B0X的完整Protel电路图.rar
Badge USB OCD 与 78F0513D 使用演示视频
莱迪思联手英伟达推出 Sensor Bridge 方案 加速边缘 AI 产品落地
国产FPGA SoC芯选择,米尔安路飞龙核心板重磅发布
Jobs芯科EFR32xG24 Dev Kit开发板开箱视频
出一个全新正点原子STM32战舰开发板,全新板二手价
12路1080P高清视频流,米尔RK3576开发板重塑视频处理极限
拆解:树莓派5 8 GB AI 套件
米尔-瑞萨RZ/G2L核心板开发板的系统启动时间优化应用笔记
米尔出席openEuler Summit 2024,携全志T536和RK3562核心模组亮相
GWEVB_XC蓝牙设备开发板
在米尔FPGA上实现Tiny YOLO V4,助力AIoT应用
单片机开发板
Microchip PIC24FJ256DA210开发板在图形显示上的应用
AM3359支持WINCE7.0
AN2131开发板原理图.rar
慕尼黑电子展上展出的开发板(还有3D 打印机等~)
米尔出席2025安路科技FPGA技术沙龙
CY7C68013开发板原理图.rar
6TOPS算力驱动30亿参数LLM,米尔RK3576部署端侧多模态多轮对话
SL811HS开发板原理图.rar
当6 TOPS不再是极限:米尔RK3576 + Hailo-8,让高帧率摄像头真正“实时”
3G高分辨率平板开发板设计方案
利用PIC24F Curiosity开发板简化设计
CFUMEVK-KIT开发板设计方案
Kinetis K60系列MCU开发板CFUMEVK-KIT
NEC MCU 78F0513D开发板使用教程
(已送出,结贴)送一块51开发板,你出邮费