这是一款 2018 年就量产过的开源项目:带 LCD 显示屏的脱机下载器。前后卖出去 600 多套,固件部分直接操作 Flash 寄存器完成下载,代码量不小,作者自己也承认有几处写得比较冗长。不过整套方案胜在完整,从硬件设计到固件思路再到外壳处理都有据可查,很适合想接触脱机烧录的嵌入式开发者参考。
方案特点
- 芯片支持:覆盖 STM8 全系列、STM32F0/F1/F2/F3/F4/F7,以及 GD32F1 系列。芯片没有全部逐一测试,但大多数常用型号都能跑;STM32F7 只实测过一款。
- 主控与烧录时序:主控采用 STM32F103RET6。SWD 时序由单片机 IO 模拟实现,STM8 部分则采用了高级定时器时序来实现。
- 软件方案:系统跑的是 μC/OS-III,没有上 GUI,IDE 用的是 MDK 5.28。
- PCB 工艺:双面贴片,PCB 在嘉立创生产。
- 外壳:选了一款 MP4 外壳,再拿到加工厂做开孔处理。
- 屏幕:LCD同样是从外壳厂家拿货的,市面上没找到同款。
- 存储与提示:使用无源蜂鸣器,存储芯片用的是 W25Q64,没有挂文件系统。
- 设计工具:画图软件用的是 Altium Designer19。

设备支持脱机编程、AES 通讯与存储加密、SWD 三线烧录、滚码 SN 设置、烧录次数限制、远程升级,具体功能项可以看下面这张概览表。

芯片适用范围如下,覆盖 ST 的 32 位与 8 位系列、GD32 系列以及 MM32F1。

设计资料展示
下面是固件工程中 SWIM_Module.h 头文件的截图,主要涉及 SWIM 接口的定时器配置和 GPIO 宏定义。编译工具链用的是 Keil MDK。

BOM 表如下,主控是 LQFP64 封装的 STM32F103RET6,外围包含 W25Q64 存储、USBLC6 保护、AMS1117 稳压以及若干阻容元件。

原理图以 STM32F103RCT6 为核心,LCD 接口走 FSMC 数据线,Flash 挂在 SPI 上,USB 接口配有 ESD 保护,电源部分用 AMS1117-3.3 稳压。

PCB 设计共三层走线,双面布局。上方窄、下方宽,V-CUT 区域留给外壳装配。



实物与界面
设备外观很像是便携 MP4,四色可选,自带 LCD 屏和物理按键。


拆开外壳后,可以看到橙色排线连接屏幕,核心板为黑色 PCB,闪存芯片和 Micro-USB 接口都在下方。

上电后的系统信息界面如下,显示 Boot 版本、软硬件版本、剩余存储、读保护状态、亮度、蜂鸣器状态和参考电压等参数。

文件列表模式下,可以看到 STM8L 测试程序和 STM32F4 测试程序,切换固件直接烧录,不需要接入电脑。

开源资料
项目打包的资源包括电脑端软件、PCB 文件、原理图文件、源代码和原理图 PDF,清单如下。

这款下载器虽然诞生于 2018 年,但脱机烧录、SWD 时序模拟、滚码 SN 这些思路放到现在仍然有参考价值。更多类似的开源硬件与嵌入式实战内容,也可以在云栈社区里找到。
|