ISP一键下载原理分析

1 ISP简介

ISP(In-System Programming,在系统可编程)指电路板上的空白元器件可以编程写入最终用户代码,而不需要从电路板上取下元器件。已经编程的器件也可以用ISP方式擦除或在编程。

使用ISP的时候需要用到自举程序(BootLoader),自举程序存储在STM32器件的内部自举ROM(系统存储器)中。其主要任务是通过一种可用的串行外设(USART、CAN、USB、IIC等)将应用程序下载到内部Flash存储器中。每种串行接口都定义了相应的通信协议,其中包含兼容的命令集和序列。

2 ISP普通下载

现在我们针对USART1的ISP进行分析,通常的ISP下载的步骤如下:

  1. 通过USB转串口线将电脑连接到STM32的USART1,并打开电脑端的上位机;
  2. 设置跳线保持BOOT0为高电平,BOOT1为低电平;
  3. 复位单片机使其进入BootLoader模式,通过上位机下载程序;
  4. 下载完毕,设置跳线保持BOOT0为低电平,BOOT1为低电平;
  5. 复位单片机即可启动用户代码,正常运行。

以上步骤有个不好的地方就是:下载程序需要跳线及复位操作,很繁琐。理解了ISP的原理,就理解一键ISP了。它需要做的事情就是用上位机去控制BOOT0引脚和单片机的复位引脚,电路图如下所示:

3 BOOT配置

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

BOOT0BOOT1启动方式
0X内部Flash存储器
10系统存储器
11内部SRAM存储器

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和RST的电平是变化的,如果处理不好,单片机会一直进入ISP模式,或者系统会复位多次,这种情况是不允许的。
  6. 于是,就有了全新的一键ISP电路。我们主要是分析上电瞬间的逻辑关系,单片机上电时通过示波器观察波形得知DTR和RST的电平是变化的,但是也由一个规律就是:当RST为低电平的时候,DTR也是低电平,因此一般情况下Q2不会导通,但由于这两个IO口的电平存在“竞争冒险”,会出现RTS的下降沿刚好遇到DTR的上升沿,这时候Q2导通,导致系统复位,而BOOT0此时有可能也为高电平,就会进入ISP模式。这个是不受控制的,而我们不想系统出现这样的情况,因次加入了模拟开关来切断这种干扰。
  7. 加入模拟开关U18,通过控制U18的4引脚的开关来达到隔离干扰电平的目的。
  • 33
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值