首页
  • GM-3568JHF
  • M4-R1
  • M5-R1
  • SC-3568HA
  • M-K1HSE
  • CF-NRS1
  • CF-CRA2
  • 1684XB-32T
  • 1684X-416T
  • C-3568BQ
  • C-3588LQ
  • GC-3568JBAF
  • C-K1BA
商城
  • English
  • 简体中文
首页
  • GM-3568JHF
  • M4-R1
  • M5-R1
  • SC-3568HA
  • M-K1HSE
  • CF-NRS1
  • CF-CRA2
  • 1684XB-32T
  • 1684X-416T
  • C-3568BQ
  • C-3588LQ
  • GC-3568JBAF
  • C-K1BA
商城
  • English
  • 简体中文
  • M4-R1

    • 一、简介

      • M4-R1简介
    • 二、快速上手

      • 01 OpenHarmony概述
      • 02 镜像烧录
      • 03 应用开发快速上手
      • 04 设备开发快速上手
    • 三、应用开发

      • 01 ArkUI

        • 1 ArkTS语言简介
        • 2 UI 组件-Row 容器介绍
        • 3 UI 组件-Column 容器介绍
        • 4 UI 组件-Text 组件
        • 5 UI 组件-Toggle 组件
        • 6 UI 组件-Slider 组件
        • 7 UI 组件-Animation 组件&Transition 组件
      • 02 资料获取

        • 1 OpenHarmony 官方资料
      • 03 开发须知

        • 1 Full-SDK替换教程
        • 2 引入和使用三方库
        • 3 HDC调试
        • 4 命令行恢复出厂模式
        • 5 升级App为system权限
      • 04 构建第一个应用

        • 1 构建第一个ArkTs应用-HelloWorld
      • 05 案例

        • 01 串口调试助手应用案例
        • 02 手写板应用案例
        • 03 数字时钟应用案例
        • 04 WIFI 信息获取应用案例
    • 四、设备开发

      • 1 Ubuntu环境开发

        • 01 环境搭建
        • 02 下载源码
        • 03 编译源码
      • 2 使用DevEco Device Tool 工具

        • 01 工具简介
        • 02 开发环境的搭建
        • 03 导入SDK
        • 04 HUAWEI DevEco Tool 功能介绍
    • 五、内核外设与接口

      • 01 指南
      • 02 设备树介绍
      • 03 GPIO介绍
      • 04 I2C通讯
      • 05 SPI通信
      • 06 PWM 控制
      • 07 串口通讯
      • 08 TF卡
      • 09 屏幕
      • 10 触摸
      • 11 Ethernet(以太网)
      • 12 M.2 硬盘
      • 13 音频
      • 13 WIFI & BT
      • 14 摄像头
    • 六、资料下载

      • 资料下载
  • M5-R1

    • 一、简介

      • M5-R1简介
    • 二、快速上手

      • 镜像烧录
      • 环境搭建
      • 下载源码
    • 三、外设与接口

      • 树莓派接口
      • GPIO 接口
      • I2C 接口
      • SPI通信
      • PWM控制
      • 串口通讯
      • TF Card
      • 屏幕
      • 触摸
      • 音频
      • RTC
      • Ethernet
      • M.2
      • MINI-PCIE
      • Camera
      • WIFI&BT
    • 四、资料下载

      • 资料下载

03 GPIO介绍

GPIO(General-Purpose Input/Output)即通用输入/输出端口,是芯片上与外部设备或电路进行数字信号(0和1)通信的最基本、最常用的接口。每个GPIO引脚都可以通过软件配置为输入或输出模式,从而实现:

  • 输入模式:读取外部信号(如按键状态、传感器高低电平)
  • 输出模式:控制外部设备(如点亮LED、控制继电器、发送简单信号)

其中,RK3568提供了多达5个GPIO Bank(组),通常标记为 GPIO0 ~ GPIO4。每个Bank有32个引脚(但并非所有引脚都被引出),理论上最多支持 160个GPIO,但实际可用数量取决于芯片的具体封装和引脚复用情况。

一般 IO 的输出电平有 1.8v,3.0v,3.3v等,不同的输出电压取决于IO所在的电源域电压,这个与硬件供电有关系。对应本例程使用的RK3568,不同的IO对应的电压域如下:

  • GPIO0:通常位于 3.3V 电压域
  • GPIO1 ~ GPIO4:通常位于 1.8V 电压域(部分型号可能支持3.3V,需查阅具体手册)

还需要注意的是GPIO的命名,Rockchip Pin的ID按照 控制器(bank)+端口(port)+索引序号(pin) 组成。

  • 控制器和GPIO控制器数量一致
  • 端口固定 A、B、C和D,每个端口仅有8个索引号,(a=0,b=1,c=2,d=3)
  • 索引序号固定 0、1、2、3、4、5、6、7

RK3568具有5个GPIO控制器,每个控制器可以控制32个IO,作为GPIO功能时,端口行为由GPIO控制器寄存器配置。

举例:GPIO1_A4表达的意思为第1组控制器,端口号为A,索引号为4。该引脚号的计算公式为32 x 1 + 0 x 8 + 4 = 36。GPIO5_B3计算结果为32 x 5 + 8 x 1 + 3 = 171

1 GPIO板卡接口

GPIO板卡接口

2 GPIO使用---命令行方式

2.1 原理介绍

以常见的echo命令举例,Linux内核提供了一套在用户态调试GPIO的接口,在 /sys/class/gpio/ 目录下。

这个目录是 Linux 内核 GPIO 子系统 通过 Sysfs 文件系统向用户空间提供的操控接口,其中Sysfs是一个虚拟的文件系统,它把内核中的设备、驱动、模块等信息以文件和目录的形式展示给用户,挂载在 /sys 目录下,/sys/class/ 是其中一类。

2.2 操作GPIO的常用指令

我们使用HDC工具在终端进入板子的对应目录下就可以对GPIO进行操作:

GPIO目录结构

其中:

  • export 文件用于通知系统导出需要控制的GPIO引脚编号
  • unexport 用于通知系统取消导出(这是因为用户态不能直接操作内核进行GPIO控制,使用这个命令后linux内核会创建用户访问接口,即创建一个控制文件,取消导出时会释放资源,删除控制文件)
  • gpiochipN 保存系统中GPIO寄存器的信息,包括每个寄存器控制引脚的起始编号base,寄存器名称,引脚总数

举例导出引脚GPIO0_C5的操作。首先计算此引脚编号,GPIO0_C5= 8 X 2 + 5 = 21。

导出gpio引脚:

相关信息

下列指令中,‘#”之前的部分为文件路径,’#‘之后的部分为指令,实际使用时,我们只需要输入对应的指令即可!!!

建议大家通过照着教程手敲代码的方式进行操作。

console:/sys/class/gpio# echo 21 > export

设置输入输出,"in"为输入,"out"为输出:

console:/sys/class/gpio/gpio21# echo out > direction

查看方向:使用cat指令

console:/sys/class/gpio/gpio21# cat direction

设置输出高电平:

console:/sys/class/gpio/gpio21# echo 1 > value

查看输入输出(需要先切换为输入模式):

console:/sys/class/gpio/gpio21# cat value

取消导出:

console:/sys/class/gpio# echo 21 > unexport

上述操作需要确保IO复用为GPIO功能,才能做正常的GPIO操作。

2.3 具体功能演示

在板子中使用上述指令进行操作,进入 /sys/class/gpio/ 目录,执行下列操作:

GPIO操作演示1

将IO0_C5设置为高电平输出:

GPIO高电平设置

使用万用表对引脚进行测量,成功输出高电平:

GPIO高电平测量

再将IO0_C5设置为低电平输出:

GPIO低电平设置

使用万用表对引脚进行测量,成功输出低电平:

GPIO低电平测量

返回上一级目录,取消导出的IO即可:

GPIO取消导出

3 GPIO使用---NAPI方式

在 GitHub 上编辑此页
上次更新:
贡献者: fxx, hjf
Prev
02 设备树介绍
Next
04 I2C通讯