本项目是联合实验室在 STC32 系列单片机在线升级方向上的阶段性成果,主要面向基于 STC32G12K128 的嵌入式应用开发,提供一套完整的 UART/WiFi OTA 在线升级解决方案。该方案包括 Bootloader 程序、WIFI模块 热点转串口桥接程序、示例 APP 程序以及 PC 端升级工具,可用于单片机程序的远程现场升级、教学实验、项目调试和后续二次开发。
与早期串口直连升级版本相比,本版本重点解决了“设备端没有 USB 串口芯片、现场不方便接下载器、需要通过无线方式维护 APP 程序”的问题。电脑连接 WIFI模块 热点后,即可通过 WiFi/TCP 将 APP 固件发送至 WIFI模块,再由 WIFI模块 通过 STC32 的 UART2 转发给 Bootloader,最终完成 APP 程序写入和运行。


一、项目背景
在单片机项目开发和现场应用中,程序更新通常需要重新连接下载器或 USB 转串口模块,操作不够方便。尤其是在设备已经安装到现场、外壳封装完成、串口芯片未预留或调试环境受限的情况下,传统烧录方式会增加维护成本,也不利于后期批量维护。
本项目基于 STC32G12K128 单片机,在原有 UART 串口 OTA 的基础上,引入 WIFI模块 作为 WiFi 热点与 TCP 转串口桥接模块。首次只需使用 STC 官方下载工具烧录 Bootloader,后续即可由电脑连接 WIFI模块 热点,通过 PC 端 WiFi OTA 工具完成 APP 程序升级。
本版本的硬件目标是:WIFI模块 连接 STC32 的 2 号串口,1 号串口不再依赖外部串口芯片;PC 端通过 WiFi 虚拟监测端口查看升级和运行状态,降低现场调试对硬件接口的依赖。
电脑 PC 端 OTA 工具
↓ WiFi / TCP
WIFI模块 热点桥接模块
↓ UART2:P1.0 / P1.1
STC32G12K128 Bootloader
↓ IAP 写 Flash
用户 APP 程序
二、Bootloader 功能
Bootloader 是整个 OTA 升级方案的核心,主要负责单片机上电后的启动判断、UART2 通信、APP 程序接收、Flash 写入、完整性校验和程序跳转。本项目中的 Bootloader 已由原来的 UART1 升级链路调整为 UART2 升级链路,便于与 WIFI模块 模块连接。
• 支持通过 UART2 接收 WIFI模块 转发的 APP 程序数据;
• 支持 PC 端 WiFi/TCP 握手、分包写入和升级进度反馈;
• 支持对接收到的数据进行分包处理、CRC 校验和 Flash 写入;
• 支持将 APP 程序写入指定 Flash 区域,APP 入口默认位于 0x4000;
• 支持升级完成后直接跳转到 APP 程序运行,避免仅依赖软件复位造成的启动不稳定;
• 支持 P3.4 LED 状态指示,便于观察 Bootloader 启动、等待升级和 APP 跳转状态;
• 支持与 STC 官方下载工具配合完成首次 Bootloader 烧录;
• 为后续不同 APP 程序的在线升级提供统一入口。
Bootloader 只需要首次烧录一次。只要 Bootloader 正常运行,后续即可通过 PC 端工具更新不同的 APP 程序。本项目当前使用 P3.4 作为状态 LED,默认低电平点亮;如果实际硬件 LED 极性不同,可在配置文件中调整有效电平。
| 项目 |
当前配置 |
| 主控芯片 |
STC32G12K128 |
| OTA 通信串口 |
UART2 |
| UART2 引脚 |
P1.0 / RXD2,P1.1 / TXD2 |
| 状态 LED |
P3.4,默认低电平点亮 |
| APP 偏移地址 |
0x4000 |
| 首次烧录方式 |
STC 官方下载工具烧录 Bootloader |
| 后续升级方式 |
PC 端 WiFi OTA 工具升级 APP |
三、WIFI模块 WiFi 桥接与呼吸灯 APP 示例
本版本增加了 WIFI模块 热点桥接程序。WIFI模块 上电后建立独立 WiFi 热点,电脑连接该热点即可访问 OTA TCP 端口和监测端口。WIFI模块 负责在 WiFi/TCP 与 STC32 UART2 之间转发数据,实现“电脑无线升级、单片机串口接收”的通信模式。
| 参数 |
默认值 |
| WiFi 热点名称 |
STC32_OTA |
| WiFi 密码 |
12345678 |
| WIFI模块 默认 IP |
192.168.4.1 |
| OTA TCP 端口 |
3333 |
| 虚拟监测端口 |
3334 |
| WIFI模块 串口波特率 |
115200 bps |
为了验证 OTA 升级流程,本项目提供了一个 P3.4 引脚呼吸灯 APP 示例程序。该程序主要用于测试:
• APP 程序是否能够正确通过 WiFi OTA 下载;
• Bootloader 是否能够正确写入 APP 并跳转运行;
• APP 程序在重新上电后是否能够正常独立运行;
• STC32 I/O 控制、延时逻辑和程序结构是否正确;
• WIFI模块 热点、PC 端工具、UART2 转发和 Bootloader 协议是否完整闭环。
呼吸灯示例程序体积小、现象直观,非常适合用于首次验证 OTA 升级流程。升级完成后,如果 P3.4 所连接的 LED 能够先闪烁提示,再进入亮度渐变效果,说明 Bootloader、PC 上位机、WIFI模块 WiFi 桥接、UART2 通信和 APP 跳转流程基本正常。
四、PC 端上位机功能
PC 端工具是本项目的重要组成部分,主要用于在 Windows 系统下完成 APP 程序选择、WiFi/TCP 连接、HEX 文件解析、OTA 下载和升级结果提示。本版本在原串口升级工具基础上增加了 WiFi OTA 模式,同时保留串口兼容逻辑,便于不同调试场景使用。
• 支持连接 WIFI模块 热点后的 TCP OTA 升级;
• 支持默认地址 192.168.4.1:3333 的 WiFi OTA 通信;
• 支持虚拟监测端口 192.168.4.1:3334,用于查看升级和运行状态;
• 支持 APP HEX/IHX 文件选择与解析;
• 支持 STC 官方扩展地址格式 FE/FF 的 HEX 识别;
• 支持自动识别 APP 搬移地址、入口地址和下载段;
• 支持 OTA 握手、分包写入、进度显示和结果提示;
• 支持升级完成后发送运行 APP 命令;
• 支持通用 Keil APP 工程配置、HEX 文件结构检查和配置检查报告生成;
• 支持通过 Spyder 运行 Python 打包脚本生成 Windows EXE。
其中,通用 Keil APP 工程配置功能仍然是本项目的重要改进内容。用户可以选择自己的 Keil 工程文件,由上位机辅助配置 OTA 所需参数。配置完成后,在 Keil 中重新 Rebuild 工程,即可生成适用于 OTA 下载的 APP 文件。
五、软件特点
本软件不是单一的演示程序,而是一套相对完整的 STC32 UART/WiFi OTA 在线升级框架。其主要特点包括:
• Bootloader 与 APP 分离,便于后期维护和批量升级;
• 支持 WIFI模块 热点 WiFi OTA,不再要求电脑直接连接单片机串口;
• OTA 主链路使用 STC32 UART2,适合 1 号串口未外接串口芯片的硬件结构;
• 提供虚拟监测端口,可通过 WiFi 查看升级过程和运行状态;
• 提供 P3.4 呼吸灯示例,方便快速验证功能;
• 提供 PC 端图形化操作工具,降低使用门槛;
• 支持普通 Keil APP 工程进行 OTA 适配;
• 支持升级完成后直接运行 APP,提高在线升级后的启动可靠性;
• 工程结构清晰,便于二次开发和教学演示;
• 源码加入中文注释,便于学习、移植和二次修改。
六、基本使用流程
首次使用时,需要先通过 STC 官方工具将 Bootloader 下载到单片机中。Bootloader 下载完成后,后续 APP 程序升级即可使用本项目提供的 PC 端 WiFi OTA 工具完成。
1. 烧录 WIFI模块 热点桥接程序
使用 Arduino IDE 打开 WIFI模块_AP_TCP_Bridge_Arduino 工程。若使用 ESP-01S,需要在烧录时让 GPIO0 接地,使 WIFI模块 进入下载模式;烧录完成后断开 GPIO0 与 GND,并重新上电。正常运行后,电脑 WiFi 列表中应出现 STC32_OTA 热点。
2. 首次烧录 Bootloader

使用 Keil 编译 MCU_Bootloader_Keil 工程,生成 Bootloader HEX 文件。随后使用 STC 官方下载工具将 Bootloader 烧录到 STC32G12K128 中。烧录完成后,上电观察 P3.4 LED,Bootloader 会通过闪烁提示启动状态。
3. 编译示例 APP 或用户 APP
打开呼吸灯 APP 工程或用户自己的 Keil APP 工程。APP 工程需要配置中断向量偏移,建议确认 Keil 工程配置中包含 INTVECTOR(0x4000)。如果使用自己的工程,可先通过 PC 端工具进行 OTA 工程配置,再在 Keil 中重新 Rebuild。
4. 使用 PC 端 WiFi OTA 升级
电脑连接 WIFI模块 热点 STC32_OTA,打开 PC 端 WiFi OTA 工具,选择 APP HEX/IHX 文件,使用默认 IP 192.168.4.1 和 OTA 端口 3333,点击升级即可。升级完成后,Bootloader 会接收 PC 端运行 APP 命令,并直接跳转到 APP 程序运行。
基本流程:
1)使用 STC 官方工具首次烧录 Bootloader;
2)烧录 WIFI模块 热点桥接程序;
3)电脑连接 STC32_OTA 热点;
4)打开 PC 端 OTA 工具并选择 APP HEX/IHX;
5)点击升级,等待进度到 100%;
6)升级完成后自动运行 APP,P3.4 进入呼吸灯状态。
七、适用场景
本项目可用于以下场景:
• STC32 单片机教学实验;
• 嵌入式课程设计和综合实训;
• 没有 USB 串口芯片的项目样机升级;
• 已封装设备的现场维护和程序更新;
• 串口 Bootloader、IAP 和 HEX 文件解析学习;
• WIFI模块 TCP 转串口应用验证;
• PC 端上位机与单片机通信协议开发;
• 工程样机的远程调试和二次开发。
八、后续计划
后续将继续完善以下内容:
• 增强不同 STC32 芯片型号的适配能力;
• 优化 APP 工程自动配置功能,减少用户手动修改 Keil 选项;
• 增加升级失败保护机制,进一步提高异常断电情况下的可靠性;
• 增加 APP 版本号、设备型号和固件完整性校验;
• 增加更多示例 APP 程序,如串口回显、PWM 控制、传感器采集和小车控制示例;
• 进一步优化 PC 端操作体验和错误提示;
• 探索 WIFI模块 STA 模式或局域网模式,支持接入现有路由器进行升级;
• 完善虚拟监测端口的数据显示、日志保存和调试辅助功能。
九、说明
本项目为联合实验室阶段性研发成果,主要用于学习、教学、实验和项目开发参考。当前发布版本已经完成 WIFI模块 热点建立、PC 端 TCP 连接、Bootloader 握手、APP 分包写入、升级完成后直接运行 APP、重新上电后 APP 正常启动等功能测试。
附件:wifi_OTA.zip