之前要不用的最小系统的开发板要不就是用的SWD调试口,没有注意过ISP一键下载电路是个怎么回事,因为需要就简单的看了一下野火的ISP一键下载电路。
默认情况一下,一般我们的程序都是从用户闪存也就是内部的FLASH启动的, 对于F103RCT6来说ROM的大小是512kb,启动地址位0x8000000,这个在IDE keil里可以看的到,如下图。
首先简单理解一下ISP是什么:
可以把他理解为芯片厂商出场时固化在ROM当中的一段程序,它的功能就是把你写的程序一点点的搬运到FLASH当中,它引出了两个引脚BOOT0和BOOT1,通过检测BOOT0和BOOT1引脚的电平可以唤醒ISP程序。
如果我们的开发板没有一键下载电路的话,我们下载程序时要把boot 0的跳冒从接GND变成接VCC,然后下载,按一下复位按键程序才能烧录,最后再把接VCC变成接GND,并且再按一下复位,这样单片机才能运行程序。
先上野火的的原理图:
其中74HC是一个类似继电器的一个东西,大概功能就是当EN为高的时候Y和Z之间导通。
当我们上电之后74HC的EN引脚相对于GND来说串了一个电容,3.3V电压需要对电容充满电之后才能达到开启EN引脚的最低电压的逻辑1,在充电的这个过程当中,DTR和RTS默认上电都是高电平,也就是说BOOTO引脚是低电平,NRST因为芯片没有启动所以电压也为低电平,这个时候满足了FLASH启动的RST低电平复位,当充满电之后芯片的Y和Z引脚导通,NRST被拉高为3.3v,复位成功程序开始执行。
再上一个烧录程序的图:
当我们烧录程序的时候,
后面的两个电平信号是“编程后执行”。