新手上路
- 积分
- 37
- 金钱
- 37
- 注册时间
- 2020-3-16
- 在线时间
- 7 小时
|
本帖最后由 woaixiaopeizhu 于 2020-4-7 11:16 编辑
在学习一键下载电路的时候感觉这个设计还是挺巧妙的,在论坛找了很多前辈的资料,但是很少结合硬件方面进行讲解的,这里我把硬件的知识加入进去,并且加入前因后果,希望把一键下载电路的知识全部囊括,如有遗漏,欢迎补充。
首先可以是启动模式的原理了,如图一,这里用到了BOOT0为1,BOOT1为0的串口下载模式,模仿手动模式:BOOT0要为高,BOOT1要为低且reset要为低,之后reset置高,就可以下载代码了,注意需要编程后执行,因为如果只是下载了,没有执行,需要手动再复位,才能看到效果。
第二个电路设计采用的是USB转串口,所用到的芯片是CH340G,就是把USB接口转成串口把代码写入stm32里,这个芯片也需要上位机(电脑软件)给它信号才能工作,这里上位机的部分我就重点讲了,意思就是上位机会给芯片发出指令,让CH340G的DTR和RTS两个引脚输出高电平或低电平,这里我们就会看到一些软件有“DTR的低电平复位,RTS高电平进BootLoader”这样的可勾选选项, 没错如果你修改电路就可以把一键下载模式玩出点花,在配合自己写的上位机的话,简直就是自己的作品了,上位机以后学习到了我们再深入探讨,现在我也是一知半解的。
这里我再帖一次原理图,图二,因为要结合二极管,三极管一起讲,简单说二极管1N4148是单向导通的也就是RESET只能在二极管导通时变为低,二极管不导通它就一直是高电平(不理解手动参考按键复位),而三极管在BE极有0.7V压差和几毫安B极有电流时,才能导通。几毫安电流在32里置高电平肯定可以实现,这里就是要用高低电平制造0.7V压差,三极管导通后就可以实现通路了,这里就可以简单看成零点几伏压降的电阻了。
好了,终于进入正片了,
启动模式里说到BOOT0要为1,而RESET要为0,先看reset,我们需要把1N4148导通,Q1三极管导通,得到RTS为低,DTR为高,刚好此时我们要BOOT0为1,这里原子哥巧妙的用了一个PNP的三极管也就是Q2实现的。这样由于Q2的导通 BOOT0就为高电平了。后面串口就是可以连接STM32进行下载代码了。
下载后还要把BOOT0恢复为低电平,这样才能让启动模式改为FLASH启动,只要不导通Q2就可以了,所以置高RTS,Q2无法导通,BOOT0自然为低电平了,(可能就用人会问这个低电平哪里来的,还有RESET的高电平哪里来的,我的理解是单片机默认设置的,上电就是这样)
到这里就实现了一键下载功能了,
题外话,按照我的理解Q1的E极直接接地也可以,这样RTS,DTR去各自控制一个三极管也能实现这样的功能,还有如果想去掉编程后执行或者手动复位的话,我觉得加个电容延时电路算好时间去控制二极管再拉低一次电平就可以,当然也大大的加重了成本。
以上就是我的全部想法啦,有什么遗漏欢迎补充
|
-
图二
-
图一
|