电路为左边部分。CH340G芯片的13脚DTR、14脚RTS的电平是可以被下载软件控制的
下载软件上注意这两个注意点。
还有,CH340G上电后DTR#和RTS#都为高电平,在用MCUISP烧写软件时,我们在软件下方选择“DTR的低电平复位,RTS高电平进BootLoader”,CH340G IC在实际操作时引脚的变化为“DTR#拉高,RTS#拉低”,即软件设置和实际情况是取非的,相反的。
电路中Q3为pnp三极管,RTS输出低电平时,导通,BOOT0才为高电平
电路中Q2为npn三极管,DTR输出高电平时,导通,RESET才为低电平
首先,FlyMcu软件控制DTR输出低电平,则DTR#引脚输出高, 然后RTS置高,则RTS#引脚输出低,这样Q3导通了,BOOT0被拉高,即实现设置BOOT0为1,同时Q2也会导通,STM32的复位脚被拉低,实现复位。
然后,延时100ms后,FlyMcu软件控制DTR为高电平,则DTR#引脚输出低电平,RTS维持高电平,则RTS#引脚继续为低电平,此时STM32的复位引脚,由于Q2不再导通,变为高电平,STM32结束复位,但是BOOT0还是维持为1,从而进入ISP模式,接着mcuisp就可以开始连接STM32,下载代码了,从而实现一键下载。
程序下载完毕后,如果设置了编程后执行(文章一开始图片里的那个),STM32会再次被复位,此时DTR#引脚为高(RESET为低电平),RTS#引脚为低(BOOT0为高电平),STM32复位后,DTR#引脚设置为低(RESET为高电平),RTS#引脚设置为高(BOOT0为低电平),那么Q2和Q3都不导通,此时,STM32重新开始启动后,检测到BOOT0为0,程序开始正常运行,一键下载至此就完成了。