使用STM32常用的下载方法主要有以下几种:

(1)ISP程序下载:使用STM32的串口1进行程序下载,使用该方式下载需要使用USB转串口芯片,常用的芯片如CH340G,该方式的程序下载需要使用上位机FlyMcu,上位机的设置出错很容易导致程序下载不进去,或者下载出错,更有甚者可能导致芯片的锁死。

(2)JTAG程序下载:平时很少使用, 不做说明。

(3)SWD程序下载: 常用的下载方式,只需要三根线就可以完成下载:SWCLK,SWDIO和GND。需要占用的单片机引脚少,下载方式简单,直接在KEIL中设置完成就可以 直接下载。

这次主要说一下ISP程序下载遇到的问题:

一般使用ISP一键下载和SWD下载BOOT0和BOOT1都通过10K的下拉电阻到地,这里使用的 一键下载电路是给出点原子给出的电路。

esp32 电路图原理 esp32 下载电路_esp32 电路图原理

 划重点:该电路的具体作用是通过CH340G的DTR引脚和RTS引脚来控制BOOT0的电平状态,来决定芯片的启动状态。

也就是决定芯片从下面的那种方式来启动。

也是是该芯片要一直 处于工作状态,STM32才能正常的启动和下载程序,也就是说该芯片要一直进行供电。


BOOT1=x   BOOT0=0   从用户闪存启动,这是正常的工作模式。

BOOT1=0   BOOT0=1   从系统存储器启动,这种模式启动的程序功能由厂家设置。

BOOT1=1   BOOT0=1   从内置SRAM启动,这种模式可以用于调试。


这次画板子的时候该芯片CH340G使用USB进行供电,其他的电路使用电池进行供电,程序下载的时候没有问题,但去掉USB线,程序竟然不运行了,原理图看了半天也没问题,最后发现是供电的问题。

所以以后能用SWD下载尽量用SWD,ISP下载坑太多了。

结论:

(1)正点原子的开发板CH340G的供电和系统的5V供电是连接在一起的,3.3V的供电通过LDO将5V转换为3.3V。

(2)如果只给系统供电,而不给CH340G供电,会导致BOOT0引脚电平错误,MCU不会运行的错误。

(3)所以使用一键下载电路,必须给CH340G进行供电,而不能只给系统供电。