RDK X5 40-PIN 引脚定义及 GPIO 应用

RDK X5 开发板提供了一个 40-pin 引脚排针,可用于连接传感器、执行器及外设总线。本指南将介绍引脚定义、多路复用规则,并通过实际 GPIO 示例帮助您快速从用户空间驱动硬件。

40-PIN 引脚排针概述

RDK X5 40-pin 引脚排针采用与树莓派兼容的布局。设计电路时请注意以下电气限制:

参数 数值
逻辑电压 3.3 V
任意引脚最大电压 3.46 V
3.3 V 电源电流预算 800 mA
5 V 电源电流预算 500 mA

⚠️ 注意: 请勿在任何 GPIO 引脚上施加高于 3.46 V 的电压。该排针仅支持 3.3 V 逻辑,不支持 5 V 电平。

引脚定义

下表列出了 40-pin 排针上每个引脚的默认功能及其复用备选功能。

引脚 默认功能 备选功能 备注
1 3.3V 电源 最大 800 mA
2 5V 电源 最大 500 mA
3 I2C0 SDA PWM2 复用
5 I2C0 SCL PWM2 复用
6 GND
8 UART3 TX
10 UART3 RX
12 I2C1 SDA PWM3 复用
14 GND
16 GPIO
18 GPIO
19 SPI2 MOSI PWM0 复用
20 GND
21 SPI2 MISO PWM1 复用
22 GPIO
23 SPI2 SCLK PWM0/PWM1 复用
24 SPI2 CS0
25 GND
26 SPI2 CS1
27 I2C5 SDA UART3 复用
28 I2C5 SCL UART3 复用
29 GPIO
30 GND
31 GPIO 演示中用作输出
32 GPIO
33 GPIO
34 GND
35 GPIO
36 GPIO
37 GPIO 演示中用作输入
38 GPIO
39 GND
40 GPIO

引脚复用规则

排针上的若干引脚可在专用外设功能(I2C、UART、SPI、PWM)与普通 GPIO 之间切换。复用分组如下:

  • UART3 / I2C5 — 引脚 8/10(UART3)与引脚 27/28(I2C5)共享同一控制器配置。
  • I2C0 / PWM2 — 引脚 3/5 可作为 I2C0 或 PWM 通道。
  • SPI2 / PWM0 — 引脚 19/23 可传输 SPI2 信号或 PWM0。
  • SPI2 / PWM1 — 引脚 21/23 可传输 SPI2 信号或 PWM1。
  • I2C1 / PWM3 — 引脚 12 可作为 I2C1 或 PWM3。

配置后复用状态的含义:

配置状态 含义
okay 引脚专用于外设功能(如 I2C、UART)。
disabled 引脚可用作通用 GPIO。

📌 注意: 更改引脚复用模式后必须重启才能生效。请在接线前规划好配置。

使用 srpi-config 配置引脚功能

RDK X5 预装 srpi-config 菜单驱动工具(类似 raspi-config),用于启用或禁用板载外设。

步骤 1:打开配置工具

sudo srpi-config

进入全屏模式 退出全屏模式

步骤 2:进入外设菜单

  1. 选择 3 Interface Options
  2. 选择 I3 Peripheral bus config

步骤 3:启用或禁用外设

您将看到外设总线(UART、I2C、SPI、PWM)列表,根据需求切换:

  • 选择总线并按 Enter 启用。
  • 选择已启用的总线并按 Enter 禁用。

步骤 4:重启

sudo reboot

进入全屏模式 退出全屏模式

重启后,已启用的引脚将专用于外设功能(状态 okay),禁用的引脚将恢复为 GPIO(状态 disabled)。

GPIO 应用:按钮 + LED 示例

本示例读取连接到引脚 37(输入)的按钮,并驱动引脚 31(输出)的 LED。按下按钮时 LED 点亮。

硬件连接

元件 排针引脚
LED 阳极(经 ~220Ω 电阻) 引脚 31(GPIO 输出)
LED 阴极 引脚 39(GND)
按钮 — 一端 引脚 37(GPIO 输入)
按钮 — 另一端 引脚 39(GND)

软件先决条件

请确保所用引脚已在 srpi-config 中配置为 GPIO(其外设功能应为 disabled)。若尚未安装 GPIO 库,请执行:

pip3 install gpio

进入全屏模式 退出全屏模式

运行示例

示例脚本随板载镜像一起提供,位于 /app/40pin_samples/。进入该目录并运行:

cd /app/40pin_samples
sudo python3 button_led.py

进入全屏模式 退出全屏模式

预期输出

脚本启动后,您将看到:

Starting demo now!

进入全屏模式 退出全屏模式

运行期间,每次按下或释放按钮,脚本都会打印当前驱动到引脚 31 的输出状态:

Outputting 0 to Pin 31
Outputting 1 to Pin 31

进入全屏模式 退出全屏模式

0 表示 LED 熄灭,1 表示 LED 点亮。

源代码:button_led.py

#!/usr/bin/env python3
# button_led.py
# Pin 37: input  (button)
# Pin 31: output (LED)

import time
import gpio

# Configure pins
gpio.pin_mode(37, gpio.INPUT)   # Button as input
gpio.pin_mode(31, gpio.OUTPUT)  # LED as output

print("Starting demo now!")

last_state = None

try:
    while True:
        # Read the button state
        button_state = gpio.digital_read(37)

        if button_state == 0:
            # Button pressed (pulled low)
            gpio.digital_write(31, 1)
            new_state = 1
        else:
            # Button released
            gpio.digital_write(31, 0)
            new_state = 0

        if new_state != last_state:
            print("Outputting {} to Pin 31".format(new_state))
            last_state = new_state

        time.sleep(0.05)  # Simple debounce

except KeyboardInterrupt:
    print("\nExiting demo...")
finally:
    gpio.digital_write(31, 0)
    gpio.cleanup()

进入全屏模式 退出全屏模式

💡 提示: 若 LED 行为与预期相反,您的按钮模块可能内置上拉电阻。请在 if button_state == 0: 块中交换 01 的逻辑以匹配硬件。

故障排除

  • 权限被拒绝: GPIO 访问需要 root 权限。请始终使用 sudo 运行脚本。
  • 引脚无响应: 确认引脚已在 srpi-config 中设置为 disabled(GPIO 模式),并在更改后重启。
  • 示例文件缺失: 示例位于 /app/40pin_samples/。若目录不存在,请更新板载镜像或从 RDK X5 官方文档复制示例。

总结

您现在已掌握:

  • 阅读 RDK X5 40-pin 排针引脚定义及其电气限制。
  • 理解引脚复用及 okay / disabled 状态含义。
  • 使用 srpi-config 启用或禁用外设总线。
  • 从用户空间 Python 驱动按钮 + LED 电路。

接下来,您可以扩展到 I2C 传感器、UART 通信、SPI 显示屏以及 PWM 电机控制——全部通过同一 40-pin 排针实现。


*本文改编自 D-Robotics 官方文档。原始来源:https://d-robotics.github.io/rdk_x_doc/en/Basic_Application/01_40pin_user_sample/40pin_define?v=3.5.0&p=RDK+X5