STM32学习笔记:使用CH340一键下载电路快速下载程序

今天看了一下STM32板子的一键下载功能,对电路理解了一下,做个说明。

1.启动模式

STM32上电后的BOOT1/0的电平状态会决定它的运行模式。很明显,我们如果上电后要进入自己写的程序并运行,那么BOOT0就要为0,BOOT1此时高低无所谓;而要进入下载模式就需要BOOT0为1而BOOT1为0;为此我们可以在电路上先将BOOT1直接拉低,然后单纯控制BOOT0。

2.复位后单片机的状态

事实上,STM32在上电复位后的第4个SYSCLK后,会锁住BOOT引脚的状态,此时读取BOOT状态决定进入哪个模式。因此我们的方法可以同时将BOOT0拉高、复位拉低,一段时间后(高于4个SYSCLK),拉高复位,进入下载,然后同时释放复位和BOOT。

3.电路和时序分析

我查了资料,说RST#和DTR#是低电平有效,因此没有动作的时候都是保持高电平的。而Q1和Q2三极管导通时的RST#和DTR#电平需要跟我下图标的一样才行,否则对应管子就不导通。而当我们用MCU ISP软件下载程序时,它控制CH340两个引脚的时序如下图所示。以开始DTR#=1,RST#=0,此时两个管子都导通,BOOT0=1,RESET=0;一段时间后DTR#拉低,此时Q1截止,RESET被拉高,系统进入下载模式,下载结束后两个引脚重新拉高,Q1/Q2均截止。

4.2022/8/9

几个月前板子已经出来,这部分我自己画的有点错误,但下图是正确的,一直忘记写出来。我实际焊接出来后,电脑可以识别CH340,但是Q2我自己画的时候E和C不小心颠倒了,因为我平时自己用NPN多一点,所以PNP被我当成NPN去用,结果就是一键下载有问题,后面还是根据这个图量电压去排除的。

5.2022/12/6

今天更新这个电路的问题,就是当我们自动下载之后,系统可以直接跑起来,但是如果我们把串口线去掉,重新上电,程序就跑不起来了。我量了电平,发现此时RST#的电平居然有2.5V,使得Q2刚好导通,然后BOOT0被拉高,系统进入下载模式,所以根本起不来。此时由于串口线已经拔走,很明显不是VCC5导致的,只能是板子上的VCC3.3灌过来的电压。开始我以为是RESET那边通过1N4148二极管过来的,于是去掉,结果发现并不是,但因为时间原因,没有分析下去,而是直接采用另一种方法。

方法就是,BOOT0加一个单刀双掷开关,连接VCC和GND,然后在下载时把开关拨到VCC,下载后拨回GND。但这样有个需要注意的地方,就是下载时,需要先把开关拨到GND,然后点击下载,再给板子上电,才能满足上面描述的时序。

6.2023.2.16

更新一下最新的使用情况,目前最稳定的情况是由外部USB接口的5V供电,这样给我的STM32下载时不会有其它问题。这两周发现CH340有多个系列,我用的是CH340G,需要加12MHz的晶振,否则无法正常工作;另外有CH340T等系列是不需要增加晶振的。而且CH340有两种供电方式,上面我提供的是5V供电,还可以3.3V供电,区别是3.3V的V3脚不需要外接电容,而是要直连到3.3V。对于CH340转换成的USB接口,有些电路会在D+那里加一个1.5K上拉到3.3V,目的应该是将USB口变为高速口,但我用软件查看了,无论加不加上拉电阻,这个USB口都是全速口。

这两周在查找一个问题,就是MPU6050在我两块开发板上面展现出来的速率不一样,自己画的板子数据很慢,串口打印到虚拟机很不灵敏,相比之下买的开发板很灵敏,我对调了STM32都解决不了问题,对比了电路怀疑是CH340的区别,然后对CH340有了更深的认识,最后发现是我自己画的板子STM32的晶振旁路电容全都是104的,相当无语,对于一个硬件工程师来说,真是很低级的错误,但也说明,电容用大可以正常工作,但是运算速率会变慢。

物联沃分享整理
物联沃-IOTWORD物联网 » STM32学习笔记:使用CH340一键下载电路快速下载程序

发表评论