HOME
  • 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
Shop
  • English
  • 简体中文
HOME
  • 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
Shop
  • English
  • 简体中文
  • M4-R1

    • Introduction

      • M4-R1 Introduction
    • Get started quickly

      • OpenHarmony概述
      • 镜像烧录
      • 开发环境准备
      • Hello World应用以及部署
    • Application Development

      • getting Started

        • 第一章 ArkTS语言简介
        • 第二章 UI组件介绍和实际应用(上)
        • 第三章 UI组件介绍和实际应用(中)
        • 第四章 UI组件介绍和实际应用(下)
      • Advanced

        • 第一章 入门指引
        • 第二章 三方库的引用和使用
        • 第三章 应用编译以及部署
        • 第四章 命令行恢复出厂设置
        • 第五章 系统调试--HDC调试
        • 第六章 APP 稳定性测试
        • 第七章 应用测试
    • Equipment Development

      • 第一章 环境搭建
      • 第二章 下载源码
      • 第三章 编译源码
    • Peripherals and interfaces

      • 树莓派接口
      • GPIO 接口
      • I2C 接口
      • SPI通信
      • PWM控制
      • 串口通讯
      • TF Card
      • 屏幕
      • 触摸
      • 音频
      • RTC
      • Ethernet
      • M.2
      • MINI-PCIE
      • Camera
      • WIFI&BT
      • 树莓派拓展板
    • Frequently asked questions

      • 资源下载
  • M5-R1

    • Introduction

      • Introduction to ShimetaPi M5-R1

GPIO 接口

1. GPIO介绍

GPIO是General Purpose I/O的缩写,即通用输入输出端口,简单来说就是MCU/CPU可控制的引脚, 这些引脚通常有多种功能,最基本的是高低电平输入检测和输出,部分引脚还会与主控器的片上外设绑定, 如作为串口、I2C、网络、电压检测的通讯引脚。

2. 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控制器寄存器配置。

Tips

GPIO1_A4表达的意思为第1组控制器,端口号为A,索引号为4。 该引脚号的计算公式为32 x 1 + 0 x 8 + 4 = 36

3. 使用GPIO sysfs接口控制IO

命令行的方式

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

以M4-R1举例,在40PIN引脚上挑选3个GPIO

TOOL
引脚控制器端口号索引号计算结果PIN
GPIO4_D24D2154 (32 x 4 + 8 x 3 + 2)7
GPIO2_D72D795 (32 x 2 + 8 x 3 + 7)18
GPIO0_C50C521 (32 x 0 + 8 x 2 + 5)29
	#以下所有操作均需要打开管理者权限使用(鸿蒙系统默认就是管理者权限)
    #使能引脚GPIO4_D2
    echo 154 > /sys/class/gpio/export

    #设置引脚为输入模式
    echo in > /sys/class/gpio/gpio154/direction
    #读取引脚的值
    cat /sys/class/gpio/gpio154/value

    #设置引脚为输出模式
    echo out > /sys/class/gpio/gpio154/direction
    #设置引脚为低电平
    echo 0 > /sys/class/gpio/gpio154/value
    #设置引脚为高电平
    echo 1 > /sys/class/gpio/gpio154/value

    #复位引脚
    echo 154 > /sys/class/gpio/unexport

4. 拓展GPIO口

M4-R1上带有NCA9555芯片,NCA9555是一款24引脚CMOS器件,提供16位通用并行I2C总线数输入/输出GPIO扩展功能

4.1 拓展GPIO口引脚

目前从该芯片引出了5个IO出来使用,连接到了40PIN引脚上

TOOLTOOL
NCA955540PIN
IO1_135
IO1_237
IO1_338
IO1_440
IO1_531

4.2 拓展GPIO口使用

该芯片为I2C通讯,挂载在I2C3下,驱动文件已添加,DTS配置如下:

  • /arch/arm64/boot/dts/rockchip/rk3568-toybrick-x0-linux.dts
	&i2c3{
	nca9555:nca9555@20{
		reg=<0x20>;
		compatible = "novosense,nca9555";
		status="okay";
		gpio-controller;
		#gpio-cells = <2>;
		};
	};

备注

在内核中使用NCA9555的IO口,其方式与普通的GPIO使用方式基本一致

例如:

	//使用普通GPIO
    &vcc3v3_lcd0_n {
        gpio = <&gpio0 RK_PC7 GPIO_ACTIVE_HIGH>;
        enable-active-high;
    };

    //使用NCA9555的IO
    &vcc3v3_lcd1_n {
        gpio = <&nca9555 3 GPIO_ACTIVE_HIGH>;   //对应NCA9555 IO0_3
        enable-active-high;
    };

    &vcc3v3_lcd2_n {
        gpio = <&nca9555 10 GPIO_ACTIVE_HIGH>;   //对应NCA9555 IO1_2
        enable-active-high;
    };

Edit this page on GitHub
Last Updated:
Contributors: zwhuang
Prev
树莓派接口
Next
I2C 接口