十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

在 RIOT OS 中上手 Wemos S2 mini:烧写流程、引脚映射与外设配置全解析

在 RIOT OS 中上手 Wemos S2 mini:烧写流程、引脚映射与外设配置全解析 在 RIOT OS 中上手 Wemos S2 mini烧写流程、引脚映射与外设配置全解析【免费下载链接】RIOTRIOT - The friendly OS for IoT项目地址: https://gitcode.com/GitHub_Trending/riot/RIOTWemos S2 mini 是一块基于乐鑫 ESP32-S2 SoC 的紧凑型开发板内置 USB 烧写与串口逻辑是 RIOT OS 官方支持的 ESP32-S2 板卡之一。本文以板卡文档 boards/esp32s2-wemos-mini/doc.md 为核心结合仓库中的构建文件、外设配置头文件与 CPU 级文档系统讲解如何在 RIOT 中编译、烧写并配置这块板卡——读完你将掌握make flash烧写流程、Bootloader 手动进入方法、板载 LED/BOOT 按键的用法以及 ADC、DAC、I2C、PWM、SPI、UART 等外设的完整引脚分配与配置要点。板卡概述Wemos S2 mini 在 RIOT 中的定位Wemos S2 mini 采用 ESP32-S2 芯片具体型号为esp32s2_fn4r2见 boards/esp32s2-wemos-mini/Makefile.features核心优势在于板载Micro-USB 连接器集成复位RST、启动BOOT与烧写flash逻辑仅用一根 USB 线即可完成供电、烧写和串口通信板上自带一颗用户 LEDGPIO15和一颗可作为按键使用的BOOT 按钮GPIO0引出了 8 路 ADC、2 路 DAC、I2C、PWM、SPI 等常用外设接口适合传感器采集、小尺寸物联网节点等场景。RIOT 仓库中该板卡的全部支持代码集中在 boards/esp32s2-wemos-mini 目录下同时大量复用 boards/common/esp32s2 提供的 ESP32-S2 公共定义。板卡文档还推荐参考厂商主页与原理图获取更详细的硬件信息详见原文档 Overview 一节。烧写流程一条命令完成编译与烧写板卡文档明确指出RIOT 烧写该板卡非常简单只需在应用目录下执行BOARDesp32s2-wemos-mini make flash该命令会完成编译并调用esptool.py将固件写入芯片。RIOT 的 ESP32 移植在构建时自动下载 ESP-IDF 与esptool.py作为构建依赖无需单独安装见 cpu/esp32/doc.md 中 Installation of esptool.py 一节。自动进入 Bootloader 模式板卡文档说明如果设备上已经烧写过 RIOT 固件烧写时会自动进入 Bootloader 模式。这是因为 RIOT 在 ESP32 上通过 USB CDC ACMTinyUSB实现控制台串口并利用复位逻辑自动触发下载模式用户通常无需手动干预。手动强制进入 Bootloader 模式如果自动进入失败或设备卡在其他工作模式下可以手动强制进入烧写模式按住 BOOT0按钮不放按下并松开 ResetRST按钮保持 BOOT 按钮约 12 秒后松开。此时芯片会以下载模式启动esptool.py即可正常识别并烧写。这一操作对应 GPIO0 被拉低进入下载模式的标准 ESP32-S2 行为GPIO0 即板卡定义的 BOOT 按键引脚见下文「板载按键与 LED」一节。串口设备与连接参数该板卡在 Linux 下的默认串口为/dev/ttyACM0定义在 boards/esp32s2-wemos-mini/Makefile.includePORT_LINUX ? /dev/ttyACM0同时该文件通过CONFIG_CONSOLE_UART_TX39与CONFIG_CONSOLE_UART_RX37指定了控制台 UART 使用的 GPIOGPIO39/GPIO37与 periph_conf.h 中UART0_TXD/UART0_RXD的定义一致。烧写完成后如需查看串口输出可在另一终端使用make term BOARDesp32s2-wemos-mini连接控制台。工具链安装与 Docker 构建初次使用 ESP32 系列板卡前需要先安装 ESP32 工具链。RIOT 提供了脚本化安装方式详见 cpu/esp32/doc.md 的 Using Local Toolchain Installation 一节# 安装全部 ESP32x 工具工具链、GDB、OpenOCD、QEMU dist/tools/esptools/install.sh all若仅需 ESP32-S2可执行dist/tools/esptools/install.sh esp32s2安装完成后通过 source 方式导出工具路径. dist/tools/esptools/export.sh esp32s2工具的默认安装目录由环境变量$IDF_TOOLS_PATH指定未设置时默认使用$HOME/.espressif。也可以直接使用 RIOT 官方 Docker 构建镜像将构建与烧写合并为一条命令BUILD_IN_DOCKER1 make flash BOARDesp32s2-wemos-mini板级构建配置Makefile 与 Kconfig该板卡的构建系统集成非常简洁文件结构如下boards/esp32s2-wemos-mini/ ├── Makefile # 板卡模块入口 ├── Makefile.dep # 默认依赖模块 ├── Makefile.features # CPU 型号与板级特性声明 ├── Makefile.include # 编译参数与端口定义 ├── Kconfig # Kconfig 菜单配置 ├── include/ │ ├── board.h # 板载 LED / 按键定义 │ ├── gpio_params.h # SAUL GPIO 参数 │ └── periph_conf.h # 外设引脚配置 └── doc.md # 板卡文档特性声明Makefile.featuresboards/esp32s2-wemos-mini/Makefile.features 声明了 CPU 型号为esp32s2_fn4r2并复用boards/common/esp32s2的公共特性文件。板卡额外提供以下特性特性说明periph_adcADC 外设8 通道periph_dacDAC 外设2 通道periph_i2cI2C 外设periph_pwmPWM 外设periph_spiSPI 外设periph_usbdevUSB 设备外设highlevel_stdio高级标准输入输出USB CDC ACMtinyusb_deviceTinyUSB 设备栈这些特性共同决定了该板卡可用的驱动与模块集合。依赖与默认模块Makefile.depboards/esp32s2-wemos-mini/Makefile.dep 的默认依赖逻辑引入boards_common_esp32s2公共模块通过 boards/common/makefiles/stdio_tinyusb_cdc_acm.dep.mk 将默认标准 I/O 配置为 TinyUSB CDC ACM——即USB 串口作为默认控制台当启用saul_default模块时自动补充saul_gpio把板载 LED 与 BOOT 按键暴露为 SAUL 设备。Kconfig 配置boards/esp32s2-wemos-mini/Kconfig 定义了BOARD_ESP32S2_WEMOS_MINI选项并自动选中BOARD_COMMON_ESP32S2与CPU_MODEL_ESP32S2_FN4R2与 Makefile 体系保持一致供 Kconfig 图形化/脚本化配置时使用。板载按键与 LEDinclude/board.h 给出了板载输入输出元件的标准定义元件引脚模式/行为说明BTN0_PINGPIO0GPIO_IN_PU内部上拉BOOT 按钮按下为低电平BTN0_INT_FLANK—GPIO_FALLING默认下降沿触发中断BUTTON0_PINGPIO0—旧版本兼容别名LED0_PINGPIO15LED0_ACTIVE 1高电平点亮板载 LED代码注释特别强调GPIO0 默认被上拉因此按键信号是反相的——按下时读到低电平。在应用代码中可配合gpio.h以BTN0_PIN轮询或注册下降沿中断来检测按键。这些定义同时被 include/gpio_params.h 使用将 LED 与 BOOT 按钮注册为 SAUL 设备saul_gpio_params[]其中 BOOT 按钮带有SAUL_GPIO_INVERTED标志确保 SAUL 层读到的是逻辑电平而非原始电平。外设引脚映射periph_conf.hinclude/periph_conf.h 是该板卡最核心的硬件配置文件下面按外设逐一说明。ADC 与 DACADCADC_GPIOS定义为{ GPIO3, GPIO1, GPIO2, GPIO4, GPIO5, GPIO6, GPIO8, GPIO10 }共 8 个通道。注意这些 GPIO 在调用adc_init之前不占用可临时用作普通 IODACDAC_GPIOS定义为{ GPIO17, GPIO18 }共 2 个通道同样需在dac_init之后才被占用。I2C仅启用I2C_DEV(0)配置如下参数值说明I2C0_SPEEDI2C_SPEED_FAST400 kHz 快速模式I2C0_SCLGPIO35时钟线I2C0_SDAGPIO33数据线只有启用periph_i2c模块时这些引脚才会被初始化为 I2C 信号否则可复用为普通 GPIO。PWMPWM0_GPIOS定义为{ GPIO13, GPIO14, GPIO15 }对应PWM_DEV(0)的 3 个通道上限受PWM_CHANNEL_NUM_DEV_MAX约束。同样在pwm_init之前这些引脚可另作他用。SPISPI 使用 ESP32-S2 的 FSPI 控制器映射关系如下参数值说明SPI0_CTRLFSPIFSPI 作为SPI_DEV(0)SPI0_SCKGPIO7FSPICLKSPI0_MISOGPIO9FSPIQSPI0_MOSIGPIO11FSPIDSPI0_CS0GPIO12FSPICS0SPI 引脚采用延迟初始化策略只有首次调用spi_init_cs或spi_acquire时才被分配为 SPI 信号未使用前可作为普通 IO。UARTESP32-S2 最多提供 2 路 UART。该板卡的UART_DEV(0)使用 Wemos 标准排针定义#define UART0_TXD GPIO39 /* 直接 I/O 引脚 */ #define UART0_RXD GPIO37UART_DEV(1)未使用。需要说明的是RIOT 在 ESP32-S2 公共配置boards/common/esp32s2/include/periph_conf_common_esp32s2.h中为所有 ESP32-S2 板卡默认定义了UART0_TXD GPIO43、UART0_RXD GPIO44Wemos S2 mini 通过板级头文件覆盖为 GPIO39/GPIO37使其符合 Wemos 标准排针布局——这也解释了Makefile.include中CONFIG_CONSOLE_UART_TX39、CONFIG_CONSOLE_UART_RX37的由来。ztimer 公共调校boards/common/esp32s2/include/board_common_esp32s2.h 为所有 ESP32-S2 板卡提供了 ztimer 的微调参数当 CPU 频率 ≤ 80 MHz 时使用一组调整值否则使用另一组用于补偿CONFIG_ZTIMER_USEC_ADJUST_SET/SLEEP保证定时精度。常见问题与使用建议烧写失败或设备无响应优先尝试「按住 BOOT 按一下 RST」手动进入下载模式确认串口设备为/dev/ttyACM0必要时用PORT_LINUX/dev/ttyXXX覆盖默认值USB 串口不显示检查是否启用了tinyusb_device特性。板卡默认 stdio 即 USB CDC ACM见 boards/common/makefiles/stdio_tinyusb_cdc_acm.dep.mk复位后测试脚本默认等待 2 秒TERM_DELAY ? 2让串口重新枚举引脚复用冲突I2C、PWM、SPI、ADC 的引脚均采用「按需初始化」策略未初始化前可作普通 GPIO 使用但一旦启用对应外设请避免在同一 GPIO 上重复分配功能首次构建make flash会自动拉取 ESP-IDF 与esptool.py请确保网络可用离线环境可预先按 cpu/esp32/doc.md 的脚本安装工具链。延伸阅读ESP32 全系含 ESP32-S2的工具链安装、Docker 构建与编译选项cpu/esp32/doc.mdESP32-S2 公共板级定义boards/common/esp32s2/doc.md板卡完整源码与配置文件boards/esp32s2-wemos-mini综上Wemos S2 mini 在 RIOT 中的支持已经相当成熟默认 USB CDC ACM 控制台让「插线即用」成为现实make flash单命令完成烧写板级外设映射覆盖了常见传感器与通信场景。结合本文给出的引脚表与 Bootloader 操作方法你可以直接开始编写自己的 RIOT 应用。【免费下载链接】RIOTRIOT - The friendly OS for IoT项目地址: https://gitcode.com/GitHub_Trending/riot/RIOT创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表