RDK X5 40PIN 管脚定义与 GPIO 应用详解

RDK X5 40PIN 管脚定义与 GPIO 应用详解

RDK X5 40PIN 管脚定义与 GPIO 应用详解

  • RDK X5 40PIN 管脚定义与 GPIO 应用详解
    • 背景
    • 环境准备
      • 硬件清单
      • 软件环境
    • 步骤
      • 一、了解 40PIN 硬件规格与安全事项
      • 二、理解管脚复用关系
      • 三、使用 srpi-config 配置管脚复用
      • 四、运行 GPIO 读写示例(button_led.py)
        • 4.1 硬件连接
        • 4.2 运行程序
        • 4.3 观察输出
    • 验证
      • 验证清单
      • 常见验证问题
    • FAQ
      • Q1:RDK X5 的 GPIO 电平是 3.3V 还是 5V?
      • Q2:3.3V 和 5V 的最大输出电流分别是多少?
      • Q3:管脚复用中 spi2 为什么出现了两次?
      • Q4:能否同时使用 uart3 和 i2c5?
      • Q5:srpi-config 中 okay 和 disabled 分别代表什么?
      • Q6:杜邦线连接时需要注意什么?
      • Q7:除了 button_led.py,还有哪些示例程序?
    • 总结

背景

RDK X5 是 D-Robotics(地瓜机器人)推出的一款面向边缘 AI 与嵌入式开发的高性能开发板。板载了标准的 40PIN 扩展接口,方便开发者连接各类外设,例如 LED、按键、传感器、显示屏、电机驱动等。要充分用好这 40 根管脚,首先需要搞清楚两件事:每一根管脚的定义是什么,以及如何将这些管脚配置为 GPIO 并进行读写控制

本文将以 RDK X5 为目标平台,系统讲解以下内容:

  • 40PIN 接口的硬件电气规格与安全注意事项
  • 管脚复用(pin multiplexing)机制与配置方法
  • 通过srpi-config工具切换专用功能与 GPIO 功能
  • 使用 Python 示例程序button_led.py完成 GPIO 输入读取与输出控制
  • 常见问题排查与验证方法

无论你是刚拿到 RDK X5 的新手,还是有一定嵌入式基础想要快速上手 GPIO 开发的工程师,都可以跟着本文一步步操作。


环境准备

在开始动手之前,请确认你已经准备好了以下硬件与软件环境。

硬件清单

项目说明
RDK X5 开发板已烧录官方系统镜像(建议 3.5.0 及以上版本)
电源适配器最小 25W 带载能力,确保 5V 输出满足要求
杜邦线若干根(母对母或公对母,根据外设接口选择)
外部器件LED 模块或按钮模块(可选,用于验证 GPIO 效果)

软件环境

  • 操作系统:RDK X5 出厂自带 Ubuntu 系统,默认用户名为sunrise
  • Python 版本:系统自带 Python3,GPIO 示例程序均基于 Python 编写。
  • 示例程序:开发板镜像中/app/40pin_samples/目录下预置了多种 40PIN 功能测试代码,包括 GPIO 输入/输出、PWM、I2C、SPI、UART 等,开箱即用。

确认示例目录存在:

ls/app/40pin_samples/

正常情况下,你会看到button_led.pytest_gpio.pytest_pwm.py等多个脚本文件。


步骤

一、了解 40PIN 硬件规格与安全事项

在连接任何外设之前,务必先了解 RDK X5 40PIN 接口的电气规格,避免因接线错误导致板卡损坏。

核心电气参数:

  • GPIO 逻辑电平:3.3V,最大耐压 3.46V。这意味着所有 GPIO 管脚输出的高电平为 3.3V,输入端承受的最高电压不能超过 3.46V。
  • 3.3V 电源输出:最大支持 800mA 电流。
  • 5V 电源输出:最大支持 500mA 电流。
  • 电源适配器要求:在上述最大输出电流条件下,要求 RDK X5 的输入适配器最小支持25W带载能力。

⚠️安全警告:当连接外设时,应当严格注意 40PIN 上的电源、地、信号电平的大小关系。任何过压、过流、ESD 等事件,都有可能导致 RDK X5 受到不可逆的损伤。请务必在板卡下电关机状态下插拔杜邦线,切勿带电操作!

简单总结安全三原则:

  1. 先断电,再接线
  2. 信号电平不超 3.3V
  3. 供电电流不超限值

二、理解管脚复用关系

RDK X5 的 40PIN 管脚并不是单一功能的。很多管脚默认被配置为 UART、SPI、I2C、I2S 等专用功能。如果你想把某个管脚当普通 GPIO 使用,就需要先关闭它对应的专用功能,这就是"管脚复用"(Pin Multiplexing)机制。

在 RDK X5 中,部分接口之间存在复用关系,同一组复用功能中,只能开启其中一项。当所有复用功能都关闭时,该管脚才表现为普通 GPIO 功能。

RDK X5 管脚复用关系表:

接口功能 1接口功能 2
uart3i2c5
i2c0pwm2
spi2pwm0
spi2pwm1
i2c1pwm3

理解这张表的关键规则:

  1. 互斥生效:例如uart3i2c5共用同一组管脚,你只能启用其中一个,不能同时使用。
  2. 全关则 GPIO:当uart3i2c5都设置为disabled时,这组管脚就变成了普通 GPIO,可以自由读写。
  3. 配置对应关系okay表示该管脚被配置为专用功能(如 UART、I2C);disabled表示关闭该专用功能,管脚可用于 GPIO。
  4. 重启生效:管脚复用配置修改后,需要重启开发板才能生效。

三、使用 srpi-config 配置管脚复用

RDK X5 提供了srpi-config这一菜单式配置工具,可以方便地管理管脚复用,无需手动修改设备树文件。

📝注意srpi-config程序需要在全屏命令行窗口中运行。如果你通过 SSH 远程连接,请确保终端窗口已最大化;如果在桌面环境中,请打开一个全屏的终端窗口。

启动配置工具:

sudosrpi-config

sudo是提权管理命令,这里必须输入。默认的sunrise账号不具备系统文件修改权限,需要通过sudo以 root 权限进行配置。

操作步骤:

  1. 在主菜单中,使用键盘上下方向键选择3 Interface Options,按回车键进入。
  2. 在接口选项子菜单中,选择I3 Peripheral bus config,按回车键进入外设总线配置界面。
  3. 在总线配置界面中,你会看到各接口的启用/禁用状态列表。
  4. 使用键盘上下键选择功能项,按回车键切换功能的开/关状态。
  5. 使用键盘左右键SelectExit之间切换,按回车键确认。
  6. 将需要关闭的专用功能设置为disabled,选择Select保存,然后退出。
  7. 重启开发板使配置生效:
sudoreboot

重启后,被设置为disabled的管脚就会变为普通 GPIO,可以被 GPIO 程序读写控制。

四、运行 GPIO 读写示例(button_led.py)

接下来,我们通过一个实际示例来验证 GPIO 功能。开发板预置的/app/40pin_samples/button_led.py程序是一个经典的"按键控 LED"示例:

  • 37 号管脚配置为输入
  • 31 号管脚配置为输出
  • 程序持续读取 37 号管脚的输入状态,并根据该状态控制 31 号管脚的输出
4.1 硬件连接

⚠️再次提醒:请确保 RDK X5 处于下电关机状态后再进行接线操作!

使用杜邦线连接:

  • 37 号管脚连接到3.3VGND,用于手动控制其高低电平输入。
    • 接 3.3V → 输入为高电平(1)
    • 接 GND → 输入为低电平(0)
  • 31 号管脚作为输出,可外接 LED 模块观察效果(也可不接,通过终端日志查看输出状态)。

确认接线无误后,给开发板上电开机。

4.2 运行程序

进入示例目录并执行程序:

cd/app/40pin_samples/sudopython3 ./button_led.py

程序启动后,终端会输出如下信息:

Starting demo now! Press CTRL+C to exit
4.3 观察输出

通过切换 37 号管脚的接线(在 3.3V 和 GND 之间切换),你可以观察 31 号管脚的输出随之变化:

Starting demo now! Press CTRL+C to exit Outputting 0 to Pin 31 Outputting 1 to Pin 31 Outputting 0 to Pin 31
  • 当 37 号管脚接 GND(低电平)时,31 号管脚输出0
  • 当 37 号管脚接 3.3V(高电平)时,31 号管脚输出1

Ctrl + C可以退出程序。

提示:如果接了 LED 模块到 31 号管脚,你会看到 LED 随输入状态变化而点亮/熄灭,效果更直观。


验证

完成上述步骤后,可以通过以下方式验证 GPIO 功能是否正常工作:

验证清单

验证项预期结果方法
管脚复用配置修改后重启生效使用srpi-config修改配置后 reboot,检查 GPIO 是否可读写
GPIO 输入读取37 号管脚能正确读取高低电平将 37 号管脚分别接 3.3V 和 GND,观察程序输出变化
GPIO 输出控制31 号管脚输出跟随输入变化观察终端日志或外接 LED 状态
程序退出Ctrl+C 正常退出运行程序后按 Ctrl+C,确认程序终止无报错

常见验证问题

问题 1:运行程序后管脚没有反应?

请按以下顺序排查:

  1. 检查管脚复用状态:该管脚可能仍被配置为专用功能(UART、I2C 等)。使用srpi-config3 Interface OptionsI3 Peripheral bus config关闭对应功能后重启
  2. 检查管脚编号:确保使用的是正确的管脚编号。40PIN 上的物理管脚编号对应丝印标注的 PIN1~PIN40,程序中使用的是物理编号(BOARD 模式)。
  3. 检查权限:GPIO 程序需要sudo权限运行,请确认命令前加了sudo

问题 2:srpi-config 修改配置后不生效?

管脚复用配置修改后需要重启开发板才能生效。请确保执行了sudo reboot,重启后再运行 GPIO 程序。


FAQ

Q1:RDK X5 的 GPIO 电平是 3.3V 还是 5V?

RDK X5 的 40PIN GPIO 均为3.3V 逻辑电平,最大耐压 3.46V。请勿连接 5V 信号到 GPIO 管脚,否则可能损坏开发板。40PIN 上虽然有 5V 电源引脚,但那仅用于供电输出(最大 500mA),不是信号电平。

Q2:3.3V 和 5V 的最大输出电流分别是多少?

  • 3.3V 电源:最大 800mA
  • 5V 电源:最大 500mA

在上述最大输出电流条件下,要求输入适配器最小支持 25W 带载能力。如果外设功耗较大,请注意不要超过电流限制。

Q3:管脚复用中 spi2 为什么出现了两次?

在复用关系表中,spi2分别与pwm0pwm1构成复用关系。这意味着 spi2 的管脚同时关联了两组 PWM 功能。如果你需要使用 spi2,则 pwm0 和 pwm1 都无法使用;反之,如果你想使用 pwm0 或 pwm1,则需要关闭 spi2。

Q4:能否同时使用 uart3 和 i2c5?

不能。uart3i2c5属于同一复用组,同一时间只能开启其中一个。如果两者都需要使用,则需要考虑使用其他可用的 UART 或 I2C 接口。

Q5:srpi-config 中 okay 和 disabled 分别代表什么?

  • okay:对应管脚被配置为专用功能(如 UART、SPI、I2C、PWM 等),此时该管脚不能作为 GPIO 使用。
  • disabled:关闭该管脚的专用功能,管脚释放为普通 GPIO,可以被 GPIO 程序读写控制。

Q6:杜邦线连接时需要注意什么?

必须在 RDK X5 下电关机状态下进行杜邦线连接或断开操作。带电插拔可能导致短路或电涌,造成开发板不可逆的损坏。接线时请仔细核对管脚编号、电源和地线位置,避免接反。

Q7:除了 button_led.py,还有哪些示例程序?

/app/40pin_samples/目录下还预置了多种功能测试代码,包括但不限于:

  • GPIO 输入/输出测试
  • PWM 输出测试
  • I2C 通信测试
  • SPI 通信测试
  • UART 串口通信测试

所有测试程序均使用 Python 语言编写,详细信息可以查阅 D-Robotics 官方文档中 40PIN 相关的其他章节。


总结

本文系统介绍了 RDK X5 开发板 40PIN 管脚的定义与 GPIO 应用,核心要点回顾如下:

  1. 硬件规格:40PIN GPIO 为 3.3V 逻辑电平(最大耐压 3.46V),3.3V 最大输出 800mA,5V 最大输出 500mA,适配器需支持 25W。操作时务必注意电气安全,下电后再接线。

  2. 管脚复用机制:RDK X5 的部分管脚存在复用关系(uart3/i2c5、i2c0/pwm2、spi2/pwm0、spi2/pwm1、i2c1/pwm3),同一组中只能启用一项功能,全部关闭则为 GPIO。配置修改后需重启生效。

  3. srpi-config 工具:通过sudo srpi-config3 Interface OptionsI3 Peripheral bus config可以菜单式地管理管脚复用,okay为专用功能、disabled为 GPIO,操作简便。

  4. GPIO 实战:通过/app/40pin_samples/button_led.py示例,实现了 37 号管脚输入读取控制 31 号管脚输出,验证了 GPIO 读写功能的完整流程。

掌握了 40PIN 管脚定义与 GPIO 操作后,你就可以进一步探索 PWM 调光、I2C 传感器读取、SPI 显示屏驱动等更丰富的外设应用了。希望本文能帮助你快速上手 RDK X5 的硬件扩展开发!


来源声明:本文基于 D-Robotics 官方文档整理改写,原始来源:https://developer.d-robotics.cc/rdk_x_doc/Basic_Application/01_40pin_user_sample/40pin_define?v=3.5.0&p=RDK+X5