【开源】STC单片机免手动冷启动自动下载器
-
首版效果图
-
手动焊接完成的PCBA,并且上电测试bug修复后的实物图
这种基于USB转串口的下载器,适用于STC89/12/15/8/32系列都可以,如果是STC8/32系列后缀带
U
的(USB功能)就没必要这么设计。带USB功能的可以使用HID模式下载。
📗常规的USB转串口工具软件实现自动下载方法
串口下载时软件实现自动下载功能,可以在程序代码中添加相关条件判断,然后将单片机跳转到ISP地址或者直接进行软复位。
- 🌿IAP_CONTR寄存器
IAP_CONTR = 0x20;//软件复位,系统重新从用户代码区开始运行程序
IAP_CONTR = 0x60;//软件复位,系统重新从ISP代码区开始运行程序
- P30引脚电平判断
/***********************************************
函数名称:ISP_AUTO
功 能:检测是否有下载命令
入口参数:无
返 回 值:无
备 注:无
************************************************/
void ISP_AUTO(void)
{
P3 |=0x01; //P3.0输入端置高
if( (P3&0x01)==0x00 ) //P3.0是否低
{
IAP_CONTR=0x60; //启动下载
//详见芯片输手册IAP_CONTR寄存器定义
}
}
- 串口特定指令,然后通过软件复位单片机
u8 uart_ser_n=0;//计数变量
void uart_ser() interrupt 4
{
RI=0; //清空接收标志位
if(SBUF==0x7f) //STC下载指令0X7F
{
uart_ser_n++; //判断位自加
if(uart_ser_n==10) //如果收到10次0X7F
{
uart_ser_n=0; //判断位清0
IAP_CONTR=0xE0;//复位命令
}
}
else
{
uart_ser_n=0;
}
}
void UartInit(void)
{
SCON=0x50; //8位数据,可变波特率
AUXR|=0x04; //定时器2
T2L=(65536-(FOSC/4/BAUD)); //低
T2H=(65536-(FOSC/4/BAUD))>>8; //高
AUXR|=0x01; //串口1选择定时器2为波特率发生器
AUXR|=0x10; //启动定时器2
EA=1; //打开总中断
ES=1; //打开串口中断
}
🔰烧录器的验证对象
- 在烧录STC15F408AS最小系统板上进行实测。
- 实物连接图
- STC89C52RC裸片烧写,同样支持免冷启动下载
制作过程经历
- 在某宝购买到实物,,进行烧录测试,对功能进行检测,是否有效果。
- 验证实物后,进行电路分析。
- 绘制原理图。
- 新增其他电路。
- 打板。
- 收集材料焊接电路板。
- 上电测试。
- 修复bug。
- 通过功能测试,达到预期效果。
以上过程中最难的就是第二步和第八步。 不要问我经历了什么,做过产品研发的人都懂,一笔带过。今天最重要的是带来的结果,并分享给大家。
- 一个好的产品的诞生,可能需要几代产品的迭代升级,在这里感谢某宝上卖的产品,据介绍,这款也经历了5代产品的迭代,拆开,看里面的电路看起来好像很简单,使用的烧录芯片是CH340C,是一款很常见的烧录芯片,
看STC官网的资料,有关自动烧写的原理也很简单,但是要转化为实物电路来实现好像制作出来的人不多。
下载器的使用
- ✨使用方法和常规的烧录工具一样,推荐使用最新的STC-ISP工具。
- 📚参照资料包:
链接:https://pan.baidu.com/s/1PrwMDd3hi26eqdgXoc_kNQ
提取码:19zd
📜自动下载器的由来和原理实现
该自动下载器,是参照某宝购买来的“自动下载器”复刻出原理图的基础上增加了一些电路完成的。
- 🍁STC单片机系统可编程( ISP) 流程:
- 🏳🌈在上位机软件STC-ISP上操作,按下
下载/编程
按键或检测MCU
按键时,会发出一串0x7f
指令流,WCH340芯片引脚DTR
、RTS
引脚,产生MODEM 联络输出的信号,跳变的电平信号会使NPN管/Nmos管基极电压产生短暂的变化,实现对单片机进行一个复位的动作。
🌼新增内容和差异
- 指示灯增加了3个,分别代表:TXD,RXD,Power,烧录时,发送信号指示灯。
- 新增在RXD与烧录目标STC芯片的TXD之间所加的300Ω的电阻和防止USB接口给烧录目标芯片供电的肖特基二极管以及上面第一点的2个状态指示灯电路。
- 将所使用的器件封装尺寸进行了调整,并且将板子的尺寸也随之调整。
说明:原封装的电阻电容所使用的是
0603
我将之全部替换为了0805
,为了方便焊接,我的创作初衷不是为了小巧精致,主要是为了降低手动焊接的难度,容易操作。
- 以下是某宝购买来的自动下载器去掉外壳的,内部实物图。
🌻目前所应用到的自制开发板类型
- 🌿STC8GK60S4采用的CH340G
- 🌿STC12C5A60S2采用的CH340G
- 🌿STC15W408AS采用的CH340C
- 🌿STC15F2K60S2采用的CH340C
🌼自动下载器原理图
- 🌿更新日期:
2022-7-17
### 🏳🌈电路更新以及补充说明(2023-8-15)
- 将三极管换成NMOS的原理图:(不推荐)
> - 🖍调整了相关的电阻阻值。
- ✨针对
STC32F12
系列单片机,在实际测试中发现,将三极管换成NMOS管,自动免冷启动可能会失败,需要使用三极管才行。 - ✨针对STC8/32支持USB功能的,可以配合USB CDC 软件代码实现跳转到USB HID模式,免手动冷启动下载功能。
- 🖋测试说明:
经过对STC不同系列和型号单片机的打样测试,不能保证对所有STC型号单片机都能友好的支持。对于该电路使用在STC12/STC15上没有发现有问题,对于STC8单片机,在使用3.3V作为CH340和单片机供电的情况下,可能会出现一些问题。
- 🌿如果在使用STC-ISP软件出现检测不到或不能下载程序的情况下,可以在点击进行单片机检测和下载程序按键后,按一下板上的按键。
- 🌿本电路可以改为手动复位下载电路,不焊接C11,调整R14:100K,R5:10,或者不改R14,调整R5到47K。如果直接去掉C11,不该动R14、R5阻值的情况下,按复位操作,可能会导致端口后重新的情况。
- 🌿针对STC8,3.3V供电使用情况下,使用STC-ISP软件进行串口测试和下载程序没有问题,但是在使用其他串口调试助手时,可能会出现打开或关闭串口端口时重启的情况。STC8某些个别型号,R15可焊可不焊接,在不焊接的情况下,R13的阻值需要足够大(大于20K),取值过小会引起其他串口调试助手打开或关闭串口时重启的问题。(使用STC-ISP不受影响)
✨R15这个上拉电阻,我是很想把它剔除掉的,在测试大多STC型号单片机中,有些还是需要这个上拉电阻的,取值不能低于过小,否则也会出现上面这一个其他串口调试助手打开或关闭端口时重启的问题。
📑补充说明
- 🔰针对STC早期的单片机
STC89C52RC/LE52RC
,需要提前选择好该型号,再点击下载/编程
或者检测MCU选项
。
- ⚡针对低压版型号STC12/15L单片机,建议在MCU端RXD(P30)串联一个300R的限流电阻,虽然CH340系列支持3.3V供电,某些电脑端口或STC-ISP软件在频繁性拔插或烧录程序的操作情况下,自动下载会变得不稳定,有时候在点击下载操作时,可能会出现,对应的串口端口会出现重启的情况。
- 📐针对3.3V和5V都兼容的单片机,例如STC8系列,在把CH340免冷启动下载电路,集成到单片机电路中时,WCH340推荐还是使用5V供电,如果ch340和单片机都采用3.3V供电,可能会出现上面相同的情况。
- 🔖目前测试大部分STC型号单片机,5V供电情况下,使用是比较稳定的。
- ⚡当单片机下载时勾选了“
下次冷启动时,P3.2/P3.3为0/0时才可以下载程序
”,下载时需要将对应的引脚电平拉低才可下载。
【注1】:STC15,STC8系列及以后新出的芯片的烧录保护引脚为P3.2/P3.3,之前早期芯片的烧录保护引脚为P1.0/P1.1。
⛳开源地址某些电脑端口
重要提示
1. 自动下载电路在对目标烧录芯片进行烧录时,烧录芯片的供电需要从自动下载电路这里供过去,不然联络信号无法给目标烧录芯片提供可靠的联络信号,也就是复位信号或者叫重启信号。
2. 对目标烧录芯片供电电路的要求:目标烧录芯片的外围供电电路周边不能有过大容值的滤波电容。经测试,如果烧录目标芯片供电旁边同时并联使用了47uf和22uf的电容,则无法响应自动下载。也就是说目标烧录芯片供电旁边最好并联1uf加0.1uf加0.01uf即可,只需滤除高频信号即可。
3. 针对STC各型号实现自动下载的匹配问题,像STC比较老款(退出比较早的)的型号的单片机,单片机旁路上的电容取值可以参考第二点,新款的,功耗更低的,比如STC8系列以及STC32系列,推荐旁路上的电容取值1uf-680nf.
📘STC USB 转 双串口方案
这是由STC推出的开源方案,型号和方案:
- Ai8H2K12U-45MHz-SOP8,USB 转 单串口
- Ai8H2K12U-45MHz-SOP16,USB 转 双串口
- 🧨资料详情链接:
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=11288&extra=page%3D1
固件是可以通过STC-ISP软件进行重新烧录的(源代码不开源)。出厂默认带程序的。