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.py、test_gpio.py、test_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 受到不可逆的损伤。请务必在板卡下电关机状态下插拔杜邦线,切勿带电操作!
简单总结安全三原则:
- 先断电,再接线
- 信号电平不超 3.3V
- 供电电流不超限值
二、理解管脚复用关系
RDK X5 的 40PIN 管脚并不是单一功能的。很多管脚默认被配置为 UART、SPI、I2C、I2S 等专用功能。如果你想把某个管脚当普通 GPIO 使用,就需要先关闭它对应的专用功能,这就是"管脚复用"(Pin Multiplexing)机制。
在 RDK X5 中,部分接口之间存在复用关系,同一组复用功能中,只能开启其中一项。当所有复用功能都关闭时,该管脚才表现为普通 GPIO 功能。
RDK X5 管脚复用关系表:
| 接口功能 1 | 接口功能 2 |
|---|---|
| uart3 | i2c5 |
| i2c0 | pwm2 |
| spi2 | pwm0 |
| spi2 | pwm1 |
| i2c1 | pwm3 |
理解这张表的关键规则:
- 互斥生效:例如
uart3和i2c5共用同一组管脚,你只能启用其中一个,不能同时使用。 - 全关则 GPIO:当
uart3和i2c5都设置为disabled时,这组管脚就变成了普通 GPIO,可以自由读写。 - 配置对应关系:
okay表示该管脚被配置为专用功能(如 UART、I2C);disabled表示关闭该专用功能,管脚可用于 GPIO。 - 重启生效:管脚复用配置修改后,需要重启开发板才能生效。
三、使用 srpi-config 配置管脚复用
RDK X5 提供了srpi-config这一菜单式配置工具,可以方便地管理管脚复用,无需手动修改设备树文件。
📝注意:
srpi-config程序需要在全屏命令行窗口中运行。如果你通过 SSH 远程连接,请确保终端窗口已最大化;如果在桌面环境中,请打开一个全屏的终端窗口。
启动配置工具:
sudosrpi-configsudo是提权管理命令,这里必须输入。默认的sunrise账号不具备系统文件修改权限,需要通过sudo以 root 权限进行配置。
操作步骤:
- 在主菜单中,使用键盘上下方向键选择
3 Interface Options,按回车键进入。 - 在接口选项子菜单中,选择
I3 Peripheral bus config,按回车键进入外设总线配置界面。 - 在总线配置界面中,你会看到各接口的启用/禁用状态列表。
- 使用键盘上下键选择功能项,按回车键切换功能的开/关状态。
- 使用键盘左右键在
Select和Exit之间切换,按回车键确认。 - 将需要关闭的专用功能设置为
disabled,选择Select保存,然后退出。 - 重启开发板使配置生效:
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.3V或GND,用于手动控制其高低电平输入。
- 接 3.3V → 输入为高电平(1)
- 接 GND → 输入为低电平(0)
- 31 号管脚作为输出,可外接 LED 模块观察效果(也可不接,通过终端日志查看输出状态)。
确认接线无误后,给开发板上电开机。
4.2 运行程序
进入示例目录并执行程序:
cd/app/40pin_samples/sudopython3 ./button_led.py程序启动后,终端会输出如下信息:
Starting demo now! Press CTRL+C to exit4.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:运行程序后管脚没有反应?
请按以下顺序排查:
- 检查管脚复用状态:该管脚可能仍被配置为专用功能(UART、I2C 等)。使用
srpi-config→3 Interface Options→I3 Peripheral bus config关闭对应功能后重启。 - 检查管脚编号:确保使用的是正确的管脚编号。40PIN 上的物理管脚编号对应丝印标注的 PIN1~PIN40,程序中使用的是物理编号(BOARD 模式)。
- 检查权限: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分别与pwm0和pwm1构成复用关系。这意味着 spi2 的管脚同时关联了两组 PWM 功能。如果你需要使用 spi2,则 pwm0 和 pwm1 都无法使用;反之,如果你想使用 pwm0 或 pwm1,则需要关闭 spi2。
Q4:能否同时使用 uart3 和 i2c5?
不能。uart3和i2c5属于同一复用组,同一时间只能开启其中一个。如果两者都需要使用,则需要考虑使用其他可用的 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 应用,核心要点回顾如下:
硬件规格:40PIN GPIO 为 3.3V 逻辑电平(最大耐压 3.46V),3.3V 最大输出 800mA,5V 最大输出 500mA,适配器需支持 25W。操作时务必注意电气安全,下电后再接线。
管脚复用机制:RDK X5 的部分管脚存在复用关系(uart3/i2c5、i2c0/pwm2、spi2/pwm0、spi2/pwm1、i2c1/pwm3),同一组中只能启用一项功能,全部关闭则为 GPIO。配置修改后需重启生效。
srpi-config 工具:通过
sudo srpi-config→3 Interface Options→I3 Peripheral bus config可以菜单式地管理管脚复用,okay为专用功能、disabled为 GPIO,操作简便。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
