开发者社区> 华章计算机> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

《STM32库开发实战指南:基于STM32F103(第2版)》——3.4节ISP一键下载原理分析

简介:
+关注继续查看

本节书摘来自华章社区《STM32库开发实战指南:基于STM32F103(第2版)》一书中的第3章,第3.4节ISP一键下载原理分析,作者刘火良 杨森,更多章节内容可以访问云栖社区“华章社区”公众号查看

3.4 ISP一键下载原理分析
3.4.1 ISP简介
ISP指电路板上的空白元器件可以编程写入最终用户代码,而不需要从电路板上取下元器件。已经编程的器件也可以用ISP方式擦除或再编程。
使用ISP的时候需要用到自举程序(BootLoader),自举程序存储在STM32器件的内部自举 ROM(系统存储器)中。其主要任务是通过一种可用的串行外设(USART、CAN、USB、I2C等)将应用程序下载到内部Flash存储器中。每种串行接口都定义了相应的通信协议,其中包含兼容的命令集和序列。
3.4.2 ISP普通下载
现在我们针对USART1的ISP进行分析,通常的ISP下载的步骤如下:
1)通过USB转串口线将电脑连接到STM32的USART1,并打开电脑端的上位机;
2)设置跳线保持BOOT0为高电平,BOOT1为低电平;
3)复位单片机使其进入BootLoader模式,通过上位机下载程序;
4)下载完毕,设置跳线保持BOOT0为低电平,BOOT1为低电平;
5)复位单片机即可启动用户代码,正常运行。
以上步骤有个不好的地方就是:下载程序需要跳线及复位操作,很繁琐。理解了ISP的原理,就理解一键ISP了。它需要做的事情就是用上位机去控制BOOT0引脚和单片机的复位引脚,电路图见图3-6。


87cc337ccfe8a0a346db5d2bd20abbb6483d894d


11791a5a8741c1961a13b0a4ed8d9c2b4a7250f5

3.4.3 BOOT配置
在ISP下载电路中,需要配置BOOT引脚,BOOT引脚不同的配置会产生不同的启动方式,具体见表3-1。


89a3d5117b66078f5633960dc900e0f2ebe5d7dd

3.4.4 ISP一键下载
USB转串口大家都很熟悉,一般是用RXD和TXD这两个引脚。在一键ISP电路中,我们需要用USB转串口的芯片的DTR引脚和RTS引脚来控制单片机的BOOT0和NRST,原理如下:
1)通过上位机控制U6(CH340G)的RTS引脚为低电平,Q1导通,BOOT0的电平上拉为高电平。
2)通过上位机控制U6(CH340G)的DTR引脚为高电平,由于RTS为低电平,Q2导通,U8的2引脚为低电平,U18为一个模拟开关,使能端由4引脚控制,默认为高电平,U18的1引脚和2引脚导通,所以NRST为低电平,系统复位。
3)单片机进入ISP模式,此时可以将DTR引脚设置为低电平,RTS设置为高电平。Q1和Q2处于截止状态,BOOT0和NRST还原默认电平。
4)上位机将程序下载到单片机,下载完毕之后,程序自动运行。
5)有人认为U18、Q1、Q2是多余的,用U6的RTS和DTR直接控制也可以。正常情况下,这样理解没有问题,但是他们忽略了一点,就是在单片机上电瞬间,如果USB转串口连接了电脑,DTR和RTS的电平是变化的,如果处理不好,单片机会一直进入ISP模式,或者系统会复位多次,这种情况是不允许的。
6)于是,就有了全新的一键ISP电路。我们主要是分析上电瞬间的逻辑关系,单片机上电时通过示波器观察波形得知DTR和RTS的电平是变化的,但是也有一个规律就是:当RTS为低电平的时候,DTR也是低电平,因此一般情况下Q2不会导通,但由于这两个IO口的电平存在“竞争冒险”,会出现RTS的下降沿刚好遇到DTR的上升沿,这个时候Q2导通,导致系统复位,而BOOT0此时有可能也为高电平,就会进入ISP模式。这个是不受我们控制的,而我们不想系统出现这样的情况,因此加入了模拟开关来切断这种干扰。
7)加入模拟开关U18,通过控制U18的4引脚的开关来达到隔离干扰电平的目的。下面我们分析一下延时开关电路,上电瞬间,电容C65通过电阻R18来充电,由于电阻100kΩ很大,电容的充电电流很小,电容充电达到U18的4引脚的有效电平2V大概耗时1秒,在这个1秒时间内U18的模拟开关是断开的,因此RTS和DTR的干扰电平不会影响到系统复位。这样就保证了系统正常运行。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
《STM32库开发实战指南:基于STM32F4》----2.3 仿真器配置
本节书摘来自华章出版社《STM32库开发实战指南:基于STM32F4》一书中的第2章,第2.3节,作者刘火良,杨森编著,更多章节内容可以访问云栖社区“华章计算机”公众号查看。 2.3 仿真器配置 在将仿真器与电脑和开发板连接好且开发板供电正常的情况下,打开编译软件KEIL,在魔术棒选项卡里面选择仿真器的型号,然后进行以下配置。
1917 0
《STM32库开发实战指南:基于STM32F4》----3.3 STM32选型
本节书摘来自华章出版社《STM32库开发实战指南:基于STM32F4》一书中的第3章,第3.3节,作者刘火良,杨森编著,更多章节内容可以访问云栖社区“华章计算机”公众号查看。 3.3 STM32选型 3.3.1 STM32分类 STM32有很多系列,可以满足市场的各种需求。
4139 0
《STM32库开发实战指南:基于STM32F4》----3.2 STM32能做什么
本节书摘来自华章出版社《STM32库开发实战指南:基于STM32F4》一书中的第3章,第3.2节,作者刘火良,杨森编著,更多章节内容可以访问云栖社区“华章计算机”公众号查看。 3.2 STM32能做什么 STM32属于一个微控制器,自带了各种常用通信接口,比如USART、I2C、SPI等,可连接非常多的传感器,可以控制很多的设备。
2931 0
《STM32库开发实战指南:基于STM32F4》----1.3 开始安装KEIL5
本节书摘来自华章出版社《STM32库开发实战指南:基于STM32F4》一书中的第1章,第1.3节,作者刘火良,杨森编著,更多章节内容可以访问云栖社区“华章计算机”公众号查看。 1.3 开始安装KEIL5 双击KEIL5安装包,开始安装,单击Next按钮,如图1-2所示。
2411 0
《STM32库开发实战指南:基于STM32F4》----2.2 硬件连接
本节书摘来自华章出版社《STM32库开发实战指南:基于STM32F4》一书中的第2章,第2.2节,作者刘火良,杨森编著,更多章节内容可以访问云栖社区“华章计算机”公众号查看。 2.2 硬件连接 把仿真器用USB连接到电脑,如果仿真器的灯亮,则表示正常,可以使用。
2365 0
10057
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载