跳转至

Arduino

OpenSiFli 提供基于 Zephyr 的 SF32 BETA 版 Arduino Core:OpenSiFli/ArduinoCore-zephyr。它发布 sifli:sf32lb52 Arduino 软件包,在 Boards Manager 中显示为 SiFli Serial Boards;当前目标开发板为 SiFli SF32LB52 DevKit LCD。

这套 Arduino Core 适合编写和验证 Arduino 程序(sketch)、快速检查外设、制作演示及开发早期原型。若要开发量产固件、调优蓝牙(Bluetooth)协议栈、实现图形密集型应用、优化功耗或启动调试自定义开发板,请使用 SiFli-SDK。

测试版核心

OpenSiFli 将这个 Arduino Core 标记为 BETA,并明确说明目前仅供测试。功能、API、加载器(loader)行为、软件包内容和发布机制都可能变化,不要将其视为可用于量产。

你需要准备什么

硬件

  • SiFli SF32LB52 DevKit LCD。
  • 一根 USB Type-C 数据线,连接到开发板的 USB-to-UART 接口。
  • 一台运行 Windows、macOS 或 Linux 的电脑。

软件

安装开发板软件包

打开 Arduino IDE > Settings,把下面这个 URL 加入 Additional Boards Manager URLs:

https://github.com/OpenSiFli/ArduinoCore-zephyr/releases/latest/download/package_sifli_index.json

中国大陆用户可使用镜像包索引:

https://downloads.sifli.com/github_assets/OpenSiFli/ArduinoCore-zephyr/releases/latest/download/package_sifli_index_cn.json

然后打开 Boards Manager,搜索 SiFli Serial Boards,并安装 sifli:sf32lb52 平台。

使用 Arduino CLI 时:

arduino-cli core install sifli:sf32lb52 \
  --additional-urls https://github.com/OpenSiFli/ArduinoCore-zephyr/releases/latest/download/package_sifli_index.json

使用中国镜像时:

arduino-cli core install sifli:sf32lb52 \
  --additional-urls https://downloads.sifli.com/github_assets/OpenSiFli/ArduinoCore-zephyr/releases/latest/download/package_sifli_index_cn.json

选择开发板

在 Arduino IDE 中选择:

SiFli SF32LB52 DevKit LCD

对应的开发板 FQBN 为:

sifli:sf32lb52:sf32lb52devkitlcd

OpenSiFli 的开发板定义会把这个 Arduino 开发板映射到 Zephyr 目标 sf32lb52_devkit_lcd,以及变体 sf32lb52_devkit_lcd_sf32lb525uc6。

选择构建选项

该 Core 提供两个重要菜单:

构建选项
菜单 选项 含义
Mode Standard 程序加载后自动启动。
Mode Debug Zephyr Shell 等待 sketch 命令。
Link mode Dynamic 程序会打包为供 Zephyr 加载器动态加载的文件。
Link mode Static 程序会链接为可烧录的二进制文件。

如果要通过 Zephyr 加载器动态加载程序,选择 Dynamic;如果要将程序链接进可烧录的固件镜像,选择 Static。

让开发板进入串口下载模式

根据 OpenSiFli 文档,首次使用前需要让开发板进入串口下载模式。请按 SF32LB52 DevKit LCD 对应的 Boot/Reset 操作顺序执行,再从 Arduino IDE 或 CLI 发起上传。

上传工具是 sftool。

上传串口冒烟测试

建议先做串口输出测试。它能同时验证上传、复位、运行时启动和控制台输出路由,无需依赖 LED 极性是否正确:

void setup() {
  Serial.begin(115200);
}

void loop() {
  Serial.println("Hello from SF32 Arduino");
  delay(1000);
}

你可以在 Arduino IDE 中上传,也可以使用 Arduino CLI:

arduino-cli compile \
  --fqbn sifli:sf32lb52:sf32lb52devkitlcd:link_mode=dynamic \
  /path/to/YourSketch

arduino-cli upload \
  -p /dev/cu.usbserial-XXXX \
  --fqbn sifli:sf32lb52:sf32lb52devkitlcd:link_mode=dynamic \
  /path/to/YourSketch

把 /dev/cu.usbserial-XXXX 替换成你的开发板串口。在 Windows 上使用对应的 COM 口;在 Linux 上使用对应的 /dev/ttyUSB* 或 /dev/ttyACM*。

把串口监视器设置为 115200 波特率。在 Standard 构建模式下,程序应每秒输出一行。在 Debug 构建模式下,打开 Zephyr Shell 并运行:

sketch

请先检查已安装的 SF32LB52 DevKit LCD 开发板变体(variant)是否定义了 LED_BUILTIN;不要假定 Arduino 引脚编号在不同开发板上通用。如果该宏已定义,且这个变体将它映射到板载 LED,可在串口测试通过后再运行 Blink。否则,请先根据开发板文档确认 LED 的连接方式和有效电平,再选择 GPIO。

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);
  delay(500);
  digitalWrite(LED_BUILTIN, LOW);
  delay(500);
}

故障排查

表:故障排查
现象 检查项
看不到软件包 确认 package index URL 正确,并使用 Arduino IDE 2.x。
上传失败 确认开发板已进入串口下载模式,并且没有串口监视器占用端口。
程序没有启动 检查 Mode。如果是 Debug,需要在 Zephyr Shell 中运行 sketch。
Zephyr 符号未定义 Core 的 README 提示:缺失的 Zephyr 函数可能需要在 loader/llext_exports.c 中导出,并重新构建加载器。
缺少 Zephyr 子系统 在开发板 .conf 中启用所需 CONFIG_ 选项,重新构建加载器,再重新上传。
内存不足 Zephyr Shell 和动态加载程序都会占用 RAM;可视情况减少栈占用,或切换构建模式。

当前支持范围

当前发布的软件包面向 SF32LB52 DevKit LCD,且仍处于测试用 Beta 阶段。尝试其他开发板或依赖某项 API 前,请先查看对应软件包版本的上游仓库和发布说明;Zephyr 或 SiFli-SDK 支持某项功能,并不代表该 Arduino 软件包也已支持。

最后更新: