STM32利用串口下载是最便宜的一种下载方式,但是利用串口下载需要操作STM32的RST、Boot0两个引脚,在此需要单独加一个下载辅助控制器(STC15F104)。 要无线下载STM32程序需知道在有线情况下串口如何下载程序,简要来说下载完整过程简要如下:
1.将Boot0拉高,接着复位STM32
2.PC端串口会不断发送0x7F,与STM32握手(STM32自适应波特率),STM32收到7F后,会返回 0x79 0xF1
3.串口下载软件识别返回的字节会会接着进一步发送其他控制指令,就这样PC端与STM端不断收发即完成了下载程序。
4.在下载完后,将Boot0置低,接着RST复位STM32.
无线下载时只需注意到两次复位即Boot0电平变化即可,所以简单来说只需:辅助单片机STC监测串口中有无连续5个以上的 0x7F(也可以多几个),将Boot0拉高,立即复位STM32,接着STC等待串口中无数据后再将Boot0拉低,接着复位STM32即可。
无线串口利用ESP8266 的透传模式,即A端发什么,B端就收什么(A、B两者能互发),由于ESP8266断电后会自动关闭透传模式,故每次上电时需要STC单片机初始化下ESP8266为透传模式。无线下载机构如下(PC端也需上电初始化为透传模式):
STC主要电路:
PC端串口下载软件:
STC程序部分:
// STC15F104 程序 for STM32 Download
// STM32下载串口为偶校验
// 模拟串口设置为115200bps 偶校验
// ESP8266wifi为STA模式
// PC端8266为AP模式,需首次设置AT+CWSAP="STM32Download","Download01",7,3 掉电仍保存
//PC端的8266需AT+CIPSTART="UDP","192.168.4.2",40000,40000,0 设置目标的发送地址,不一定时192.168.4.2,需先看下对方IP,一般无第三者加入此地址不会变的
// PC端再发送: AT+CIPMODE=1 AT+CIPSEND 两个指令即完成PC端的设置
// 从站端,下载目标端程序
// 目标开发板Boot0需下拉,否则初始开机时程序非正常启动,且无法正常发送初始指令给8266模块
#include