【本文发布于https://blog.youkuaiyun.com/Stack_/article/details/115429629,未经许可不得转载,转载须注明出处】
当我们在stc官方烧录软件点击下载时,烧录软件会以最低波特率(默认2400)连续发送0x7f,同时ch340的DTR和RTS引脚会拉低,直到给单片机手动掉电再上电或者烧录软件检测超时。
一、纯硬件版
于是我们就可以利用DTR或RTS引脚做一个纯硬件的自动烧录器。
原理分析
- 模块上电稳定后没有下载命令时,DTR/RTS输出高电平,电容C11右端为高电平,NPN三极管Q2导通,pmos管Q1(si2301cds)导通,目标单片机上电。
- 当stc烧录软件发出下载信号时,DTR/RTS拉低,左右两端均为高电平的C11左端被拉低。因为电容两端电压不能突变,所以当电容左端电压突变瞬间,电容相当于短路,右端被拉低,pmos截止,目标单片机掉电。
- 短暂掉电后,C11右端恢复为高电平,目标单片机上电并检测到stc烧录软件的下载信号后下载程序。
二、软件版
纯硬件版在点击下载时,掉电时间很短,基本上就是点击下载就立刻开始下载了。
但是就因为时间太短,在mcu供电引脚接有稍大的电容时,mcu来不及掉电,没有掉电上电的过程,程序总是下载失败。于是又搞了个软件版
原理分析
- U4 STC15W202S的RXD接到CH340C(CH340G的无晶振版)的TXD,STC15W202S串口中断捕捉数据,波特率2400。或者检测RTS信号,该信号在STC-ISP发起下载时拉低,烧录完成后拉高。
- 每200ms为一个单位,在这个单位时间内,连续捕捉到100个0x7f,则暂停计数,MCUPWR_CTRL脚拉低,目标单片机掉电。或者检测到RTS拉低,MCUPWR_CTRL脚拉低,目标单片机掉电。
- 等待2秒后MCUPWR_CTRL脚拉高,目标单片机上电开始下载。恢复计数。
注:一开始的设计是加个Q3,在Q1截止的时候Q3导通,放尽目标单片机电容的电。但是因为Q1、Q3是串接在VCC和GND间,也许是因为在Q3导通的时候Q1还没有截止,导致电脑USB接口短路,然后模块重启。焊接时直接去掉了Q3。
基本上就不会有下载失败的情况了
成品图
附:
- 软件版的按键是用来使能/失能自动烧录功能的;
- 软件版的U2是电压比较器LMV331,用跳线帽短接P1的5、6时,选择整个模块工作电压为5V,STC15W202S控制D1闪烁,D9灭;短接P1的4、5时,整个模块工作电压为3.3V,D9闪烁,D1灭。此功能只是用来提醒自己当前的工作电压。
或者在优快云下载