STM32、USB下载、原理图
Stm32下载程序一般有两种方式:
1
一种是基于JTAG(SWD)的程序下载方式,这种方式需要仿真器才能高效与快捷地调试STM32单片机系统,例如,J-LINK与U-LINK等均是很好的仿真器,这种方式的好处是能够在线调试,直接用源代码下载。
另外一种基于串口的程序下载方式,STM32全系列均支持这种方式,这种方式一般通过一个USB线和相应的ISP下载软件就可以将HEX文件下载到STM32芯片,这样有个好处就是不会暴露源代码,随便找个人教一下就可以去操作,比如去客户现场升级代码等。
下面重点介绍一下这种方式是怎么实现的,首先我们得搞明白STM32的启动方式:
每个STM32芯片上都有两个引脚BOOT0和BOOT1,这两个引脚在芯片复位时的电平决定了复位后从哪个区域开始执行程序:
(1)BOOT1=x,BOOT0=0,从用户的闪存(Flash)启动,这是正常的工作模式;
(2)BOOT1=0,BOOT0=1,从系统储存器启动,这种启动的方式由原厂设置的一个ROM,这个区域专门设置了一段BootLoader,就是通常说的ISP程序,用户无法擦除和修改。
(3)BOOT1=1,BOOT0=1,从内置的SRAM启动,这种模式可以用于调试,一般不会使用这种模式启动,因为掉电后SARM数据会丢失,一般只在调试时使用。
2
下面进行原理图分析,此电路只能连接串口1。BOOT1一般在电路中默认接低电平,在电路上电后RTS#、DTR#为高电平,在用烧写软件时,我们在软件下方选择“DTR的低电平复位,RTS高电平进BootLoader”。
电路中Q2为pnp三极管,RTS输出低电平时,导通,BOOT0才为高电平;
电路中Q1为npn三极管,DTR输出高电平时,导通,RST才为低电平;
首先,烧写软件控制DTR#引脚输出高,RTS#引脚输出低,这样Q2导通了,BOOT0被拉高,即实现设置BOOT0为1,同时Q1也会导通,STM32的复位脚被拉低,实现复位。
然后,延时100ms后,下载软件控制DTR#引脚输出低电平,RTS#引脚继续为低电平,此时STM32的复位引脚,由于Q1不再导通,变为高电平,STM32结束复位,但是BOOT0还是维持为1,从而进入ISP模式,接着下载软件就可以开始连接STM32,下载代码了,ISP下载完毕后,自动复位运行。
电路图纸
注意:图中标注的部分,一定要勾选正确。
END