原子的串口ISP一键下载研究

昨天把我弄晕了,CH340的DTRRTS。。。

原子的原ISP一键下载图:

这里写图片描述

《STM32F1开发指南-库函数版本_V3.1 》中对下载电路的解释:
这里写图片描述

更直观的解释应该上张图:

这里写图片描述

总而言之,就是对BOOT0BOOT1的赋值,为了简化电路,把BOOT1下拉到地,只需要控制BOOT0即可。

有个问题,不容忽视,复位完之后,进入ISP下载程序,下载完之后,并没有再用上位机控制BOOT0,反而也可以直接执行程序。

网上有人这样解释,
这里写图片描述
说实话不太能懂。

下载完之后,两个三极管断开,BOOT0,BOOT1全部被硬件上的电阻拉低,然后自动进入了运行模式?!~


附一张今天刚列的直观理解图,注意了,刚看的时候,一直有个误区,我以为DTR和RTS的变化是自动的,但是实际上是可以由上位机控制的!

这里写图片描述

但是参考《STM32库开发实战指南》P15页,有提到:

“单片机上电瞬间,CH340的DTR和RTS引脚是变化的。”

刚上电的时候,CH340DTR和RTS的输出电平是什么样的呢?

这个还没实测过,但是看这本书里介绍,“当RTS为低电平的时候,DTR也是低电平”,那也意味着,会处于ISP的边缘,它离ISP只差一个复位脉冲。这两个IO还存在竞争冒险,也有可能出现一个RST的复位情况,此时也会进入ISP模式,但是想着,稳定后RTS和DTR都为高,又定会从程序开始执行。而我们软件控制肯定是等电平稳定之后。似乎这样分析起来没毛病,但是实践才是检验真理的唯一标准。

后期补上DTR和RTS的上电瞬间实测信号,这个应该多测几遍,避免偶然性。(说给自己听)

当然,直观上想避免这种上电的意外不可控情况,我们不想碰到,可以把它给隔过去,如何隔呢?延时


不然DTR和RTS的变化影响到系统复位,换句话来讲就是,复位在1s后再受ch340的变化为变化不就可以了呢!

具体方案也有很多了,延时电路。。。。


参考资料

1、http://www.openedv.com/forum-2-1.html

2、http://www.cnblogs.com/einstein-2014731/p/4885300.html

3、《STM32F1开发指南-库函数版本_V3.1 》

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ReCclay

如果觉得不错,不妨请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值