ISP 一键下载原理分析

621 阅读4分钟

1 STM32F103RCT6最小系统BootLoader

  • BOOT1=0,BOOT0可变 image.png image.png

2 ISP 一键下载原理分析

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

2.1 ISP普通下载方案一

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

2.2 ISPISP一键下载方案二

image.png

  • 图中的 Q1 和 Q2 外加几个电阻和一个二极管就构成了开发板的一键下载电路,此电路通过RST 和 DTR 信号来控制 BOOT0 和 RESET 信号,从而实现一键下载的功能。很多朋友问一键下载的原理,这里和大家讲一下,先说一个前提:DTR_N 和 RTS_N 的输出和 DTR/RTS 的设置是相反的。必须先记下这个前提。 一键下载电路的具体实现过程:
  • 首先,mcuisp 控制 DTR 输出低电平,则 DTR_N 输出高,然后 RTS 置高,则RTS_N 输出低,这样Q2 导通了,BOOT0 被拉高,即实现设置 BOOT0 为 1,同时 Q1 也会导通,STM32 的复位脚被拉低,实现复
  • 然后,延时 100ms 后,mcuisp 控制DTR 为高电平,则 DTR_N 输出低电平,RTS 维持高电平,则 RTS_N 继续为低电平,此时 STM32的复位引脚,由于 Q1 不再导通,变为高电平,STM32 结束复位,但是 BOOT0 还是维持为 1,从而进入 ISP 模式,接着 mcuisp 就可以开始连接 STM32,下载代码了,从而实现一键下载

2.3 ISPISP一键下载方案三

image.png

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