Siyi FM30如何更新高频头固件
一、FM30系列更新
方法一:通过 STLink 刷写
刷写 FM30 系列 模块的唯一方法是使用 STLINK。幸运的是,这些引脚位置在 TX 模块 上非常宽松,便于连接。这是一个单向过程,刷写后 无法恢复 到原厂固件。

1.打开 TX 模块,螺丝刀拆卸外壳,以便取出电路板。
2.将电线连接到 SWDIO、 SWCLK、 NRST 和 GND 引脚,如上图中所示的红色区域。将 5V 连接到 VCC 引脚, 不要 连接到 3.3V 引脚!
3.将另一端连接到 STLINK 编程器。
4.使用目固件 FM30_TX_via_STLINK 进行刷写。
在ExpressLRS Web Flasher网站下载固件:
5.刷写完成后,可以在测试固件是否正常运行时,保持 STLINK 设备连接,但在将模块插入遥控器进行测试之前,请断开 USB 连接。
6.确保遥控器的 外部模块类型 设置为 CRSF。有关确认模块已刷写并准备飞行的其他方法,请参见常规故障排除部分。
方法二:通过 DFU刷写
更新 TX 模块 要简单得多,可以通过 DFU 模式进行,而无需使用 STLINK。
- 从遥控器中取下模块。⚠️ 不要在TX模块插入遥控器时连接 USB,因为没有保护措施防止 USB 电源直接连接到遥控器。
- 按住标有 "Bind" 的按钮,插入 USB。此时,Windows 设备管理器中应会出现一个 "ExpressLRS DFU bootloader" 设备。如果没有出现,可能需要安装 STM32 DFU 驱动程序。
- 使用目标 FM30_TX_via_DFU 进行刷写。
- 注意,虽然过程总是报告失败,但这通常发生在刷写后,因此请检查是否显示 "File downloaded successfully" 消息,而不是之后出现的错误信息。

二、Siyi FR Mini接收机作为高频头
RX 模块与 TX 模块使用相同的射频组件,因此它有可能成为一个小型 ~200mW TX 模块 的候选者。连接到 JR 模块仓 只需要 3 个 引脚(JR 引脚从上到下排列):

方法一:通过 STLink 刷写
刷写过程与上述 FM30 TX 模块 的刷写步骤类似,但使用的是接收器上的这些引脚。
首次刷写时,请使用这个固件: FM30_RX_via_STLINK。

在ExpressLRS Web Flasher网站下载固件:
方法二:通过 UART 更新
更新通过 OpenTX 内置的固件刷写工具进行。
- 使用 Configurator 构建固件并选择目标。构建过程将生成文件: FM30_RX_MINI_AS_TX_via_UARTfirmware.elrs。
- 将该文件复制到 遥控器 SD 卡 中的 FIRMWARE/ 目录下。
3.使用 OpenTX 刷写固件到模块:
- 按住遥控器上的 MENU/SYS 键打开系统菜单。
- 按 PAGE 键导航到 SD 卡浏览器 页面。
- 向下滚动到 FIRMWARE 目录并按 ENTER。
- 找到并长按 ENTER 键,打开上下文菜单。
- 从菜单中选择 Flash Ext. ELRS。
三、Q&A
Q1:无法连接到目标设备?
如果刷写失败并显示 "Unable to connect to target device"(而不是 "No STLINK found!"),很可能是您的 STLINK 克隆 没有连接 RST 引脚,但您可以通过一些额外的操作手动触发所需的复位。
之所以需要这样做,是因为 SIYI 禁用了 "Software Reset",以防止您盗取他们的固件二进制文件。
A1:
- 验证接线: 确保 TX 板 已经通电(LED 灯亮起)。
- 使用 STM32CubeProgrammer 或 STLINK GUI 进行连接,按照下一步操作。
操作步骤: 在按下 CONNECT 按钮 之前,将 TX 模块 的 RST 引脚 短接到 GND。 按下 CONNECT 后,迅速从 GND 垫片 上移开电线。
3.检查连接是否成功: 如果成功,GUI 会提示您 该板已启用读保护,并要求您禁用读保护。按要求执行此操作。
Q2:Flash 加载程序运行错误?
在使用 PlatformIO 的实用程序在 Linux 上刷写 TX 和 RX 之前,必须先禁用 STM32 芯片的 "读保护"(Readout Protection,RDP),该保护是由 SIYI 在出厂时设置的,目的是增加刷写的难度。
Windows 的刷写工具通常会自动禁用此保护,但 Linux 工具不会。如果您没有禁用读保护,在刷写时将会遇到以下难以理解的错误: st-flash。

A2:
使用 STM32CubeProgrammer 在 Linux 上禁用 RDP,或者使用 Windows 虚拟机/计算机,使用 ST-LINK.exe 的 GUI 或 CLI 来清除 RDP。
1.点击 "Connect" 按钮以连接到 ST-LINK 设备。您可能会看到一个弹出错误 Error: Data read failed,这是正常现象。如果提示无法连接或设备未找到,您需要先解决这个问题。
2.接下来,点击左侧的 "OB" 按钮,
3.展开 "Read Out Protection" 部分。
4.选择 RDP = "AA"。
5.点击底部的 "Apply" 按钮。
6.您应该会看到一条消息,提示 "Option bytes successfully programmed",如果成功,您就可以继续操作。点击顶部的 "Disconnect" 按钮,然后通过 PlatformIO 进行刷写。
如果您有固件二进制文件并知道它们的目标地址,您也可以直接通过该 GUI 刷写。

———— 本文引用至ExpressLRS入门:https://www.expresslrs.org/quick-start/transmitters/siyifm30/#flash-loader-run-error