跳到主要内容

在 Windows 下控制 RP2040

Intel J4125 与 RP2040 和 40-PIN GPIO 的关系介绍

在 Radxa X2L 上集成了 Intel J4125 的 CPU 和一块 RP2040 MCU,两者通过 USB 和 UART 两种方式进行通信。 RP2040 在系统中以 USB 存储设备的形式存在,程序烧录时只需将文件拖拽至该 USB 设备中即可。 此外,它们还共用 UART 通信接口,使得 Intel J4125 能够通过 UART 控制 RP2040,例如,通过 UART 接口实现对 RP2040 GPIO 的操控。 两者关系,如图所示:

40-PIN 使用

为了操作 RP2040 上的 IO 资源, 我们需要一套完善的软件环境,如 MicroPython 或者 C/C++ SDK,在这里我们主要介绍一套 C/C++ SDK,即 pico-sdk 和 pico-example。 pico-sdk 主要是提供了一些操作 RP2040 的 API, 而 pico-examples 则为我们提供了一套程序编译框架,我们可以根据 pico-examples 提供的编译框架来添加我们自己的程序。

安装必要工具

设置环境变量

  • 在搜索栏搜索 "编辑系统环境"

  • 点击 "环境变量"

  • 添加系统变量或者用户变量

    • 添加变量 PICO_INSTALL_PATH 和 PICO-SDK_PATH
    pico install path pico sdk path
  • 添加 PATH

    pico path env

构建编译

打开 git bash, 进入到 pico-examples/build 目录下,执行以下命令进行构建编译

cmake -G "Ninja" ..

ninja
cmake ninja ninja build

烧录

按下 BOOTSEL 键后, 会弹出一个 USB 设备。将编译后产生的 .uf2 文件拷贝到 RP2040 的 USB 设备中, 待该 USB 设备消失后, 程序开始执行。

示例

GPIO

1. 准备
  • 一块 Radxa X2L
  • 一个 LED
2. 连接
Radxa X2L<-->LED
PIN_5<-->LED
PIN_1<-->VCC
PIN_9<-->GND
提示

这里的 PIN_5 对应 下面代码中的 GPIO29, 详细请参考 GPIO 定义

3. 测试
  • 将以下代码替换 pico-examples/blink/blink.c

    blink.c

    #include "pico/stdlib.h"
    #define BLINK_PIN 29 // GPIO29

    int main() {

    gpio_init(BLINK_PIN);
    gpio_set_dir(BLINK_PIN, GPIO_OUT);

    while (true) {
    gpio_put(BLINK_PIN, 1);
    sleep_ms(250);
    gpio_put(BLINK_PIN, 0);
    sleep_ms(250);
    }
    }

  • 编译

    cd pico-examples/build/
    rm -rf *
    cmake -G "Ninja" ..
    ninja

    成功编译后,在 pico-examples/build/blink/ 目录下会产生一个名为 blink.uf2 的文件

  • 烧录

    • 重启 RP2040
    • 将 blink.uf2 文件拖入到 RP2040 中,待 RP2040 消失后, LED 会开始闪烁