前几天看到了卓晴公众号写的三篇关于STC系列单片机的下载电路,然后结合了其他的文章,对下载电路有了更加深入的了解,在这里我梳理一下自己的学习过程,附上完整的资料,方便日后查看,也方便有兴趣的同学交流讨论,也请大家批评指正。
这是开发板原理图下载电路部分的电路图,见图1-1。
关于看原理图,注意到电路图只有一个芯片CH340,因此先查看这个芯片的数据手册。
找到这个原理图中CH340芯片所需要用到的引脚,我用黄色标记出来。见图1-2。
然后是CH340的功能说明,我用黄色标注了一些重点参数,见图1-3。
我把CH340的概述截图出来,供大家了解,就不解释了。
最后,查找单片机手册关于下载电路的部分:STC89C51系列 在系统可编程(ISP)典型应用线路。
由于电脑只有USB口,是5V供电,单片机只有串口,需要5V供电,因此找到USB转串口这个应用电路。见图1-4.
为了能够理解图1-1所示的电路图,先根据图1-2看CH340引脚。
VCC引脚:正电源输入端,需要外接0.1uF退耦电容,也就是图1-1中电容CC5,值为104,VCC接电脑的5V供电。
V3引脚:根据图1-2中的说明,外接0.01uF退耦电容,也就是图1-1中电容CV1,值为103,至于他左边的电容C9,应该是原理图忘记删掉了,实物中没有找到这个电容。
XI/XO引脚:晶振12M,电容的参考值在图1-2中没有,但是参考图1-4后,电容取22pF,和图1-1相匹配。
TXD/RXD:初看图1-1,本来是TXD和RXD和单片机交叉相连的,怎么TXD和TXD连接起来,结果一看MCU的接线,原来在MCU部分,网络标号已经是交叉相连了,见下图1-5。
特别注意的是,参考图1-4,CH340的TXD和RXD要加一个反向二极管和电阻。这里我引用一下其他文章里面的解释。
CH340芯片的发送引脚TXD上接一个反向二极管,然后再连接到对端IC。在接收引脚上加一个限流电阻来防止对端IC对CH340倒灌电。通过反向二极管的原理是:在CH340发送数据时,发送高电平时二极管截止,但是由于对端RXD默认上拉也是高电平不会有采样问题,而发送低电平时二极管导通,对端RXD接收到低电平,因此可以正常通讯。并防止了CH340的TXD发送引脚将电流倒灌到对端IC。通过限流电阻的原理是:倒灌电流导致芯片工作甚至闩锁效应,是由于引脚电流过大超过了芯片设计时容忍的上限导致芯片内部电路出现异常。因此加一个限流电阻就可以了,其他通讯场景也可以仿照此方法进行尝试。
在这里,我把CH340的DTR,RTS引脚构成的电路成为CH340外围电路。关于这部分电路的理解,需要参考STC89C51数据手册,关于在系统可编程(ISP)原理使用说明,见下图2-1。
图2-1
对于冷启动这个名词,还有复位,需要参考STC89C51数据手册,关于复位的解释,如下图2-2。
结合上述两张图可以得出这样一个结论,下载程序必须要冷启动,冷启动检测是否有下载命令流的这个过程在复位操作前,因此复位,即热启动,是无法下载程序的,必须要让单片机完全掉电再上电。
通过和学长的交流,我知道了冷启动以后是执行bootloader程序,是芯片启动文件,检测到下载流以后,会进入程序下载模式,这个程序是在复位操作前的。
说了这么一大堆,那么这个到底和外围电路有什么关系呢?
不妨把图1-1中外围电路去掉,但是USB5V直接接单片机VCC,这样在下载程序过程中,对于下载电路引出的4个脚,VCC,GND,TXD,RXD,其他引脚要先用杜邦线连接好,但VCC必须要先断开,在电脑上点击下载后,再立马插上去,这样才能做到冷启动下载程序,不过必须要在很短时间内用杜邦线插好VCC,不然就过了程序流检测时间,无法下载。
因此,这种操作比较麻烦,由此引申出一键下载电路这个概念,CH340的外围电路就是实现一键下载功能的。下面来具体分析这个电路是如何实现的。
在分析之前,需要了解CH340的DTR,RTS引脚的作用,我参考图1-2时没有理解他写的意思,查了其他文章之后,才知道,这两个引脚由下载软件控制。
1、初始:默认均为高电平。
2、下载开始:RTS先变为低电平,DTR后为低电平。
3、下载结束:RTS先变为高电平,DTR后为高电平。
搞清楚这个以后,再看图1-1。Q1,是表贴PNP型的BJT,PCB丝印为2TY,型号为S8550。
Q11,根据实物的PCB丝印,是丝印为A1SHB,型号为PL2301的MOS管。
基于BJT和MOS管分析,可以发现外围电路就是构成了逻辑门电路,参考数字电路第三章。这里默认POWER开关是闭合的。
1、初始:RTS和DTR均为高电平,发射结电压为0,CE之间断开,MOS管G极接下拉电阻得到低电平,由于是耗尽型PMOS,G极低电平使MOS管导通,当使得D极供给了单片机电源,同时点亮了LED指示灯,此时执行最新烧写进的程序。
2、下载开始:当点击软件的下载键时,RTS先变低,此时发射结正偏,BJT导通,这时G极的电平就是DTR的电平,即高电平,MOS管截止,单片机掉电。
接着,DTR变低,BTJ截止,MOS管导通,单片机上电。就是这个下载开始的过程,实现了单片机的冷启动,整个过程只需要点一次鼠标,不需要插杜邦线,称之为一键下载。
3、下载结束:这个过程也体现了图1-1电路的巧妙之处,RTS先变高,DTR后变高,整个过程保证了单片机一直处于有电状态,如果电路设计不当造成变化是相反的结果,单片机就会掉电出问题。
如果要换成我们自己设计下载电路,就需要紧紧结合器件的数据手册,严格参数和选型,手册是最重要的依据,当手册看不懂的时候可以查阅别人写的文章,需要多看多想。至于MOS管,BJT,二极管,电阻的选择,更需要结合他本身的参数去计算静态工作点,当然也需要知道常规的经验值和型号。花了几天时间理解了这个电路,我将目前学到的很多知识融会贯通,解决了一个实际问题,还是很兴奋的,当然关于下载电路还有很多其他需要考虑的,这里也只是浅显地谈了谈自己的认识,希望读者批评指正交流。
撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
查找:Ctrl/Command + F
替换:Ctrl/Command + G
直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC
语法后生成一个完美的目录。
强调文本 强调文本
加粗文本 加粗文本
标记文本
删除文本
引用文本
H2O is是液体。
210 运算结果是 1024.
链接: link.
图片:
带尺寸的图片:
居中的图片:
居中并且带尺寸的图片:
当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
// An highlighted block
var foo = 'bar';
一个简单的表格是这么创建的:
项目 | Value |
---|---|
电脑 | $1600 |
手机 | $12 |
导管 | $1 |
使用:---------:
居中
使用:----------
居左
使用----------:
居右
第一列 | 第二列 | 第三列 |
---|---|---|
第一列文本居中 | 第二列文本居右 | 第三列文本居左 |
SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:
TYPE | ASCII | HTML |
---|---|---|
Single backticks | 'Isn't this fun?' |
‘Isn’t this fun?’ |
Quotes | "Isn't this fun?" |
“Isn’t this fun?” |
Dashes | -- is en-dash, --- is em-dash |
– is en-dash, — is em-dash |
一个具有注脚的文本。1
Markdown将文本转换为 HTML。
您可以使用渲染LaTeX数学表达式 KaTeX:
Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n−1)!∀n∈N 是通过欧拉积分
Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞tz−1e−tdt.
你可以找到更多关于的信息 LaTeX 数学表达式here.
可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:
这将产生一个流程图。:
我们依旧会支持flowchart的流程图:
如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。
如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。
注脚的解释 ↩︎