ISP就是In System Programming在线系统编程,最常用的就是通过单片机的串口将程序HEX文件下载到内部FLASH中,单片机重启时就执行内部FLASH中的程序。根据STM32的数据手册,STM32的启动方式和BOOT引脚有关
MCUISP软件是STM32单片机ISP下载程序的软件,就像我们用STC单片机ISP下载程序时通过STCISP软件一样,下载程序时的步骤都是类似的,无非就是选择好串口和波特率,加载HEX文件,选择附加选项后再烧录程序即可。
ISP普通烧录
根据上表所示,我们用STM32的串口下载程序的步骤为:
1.电脑通过USB线连接STM32的串口(因为在STM32开发板上已经设计了USB转串口电路,常见的如PL2303和CH340,推荐用CH340),打开程序下载软件MCUISP。
2.通过跳帽设置BOOT0为高电平1,BOOT1为低电平0(BOOT1通过跳帽一直拉低)。
3.复位单片机之后,使其进入bootloader模式,通过MCUISP的“开始编程”按钮开始烧录程序。
4.烧录完之后,通过跳帽设置BOOT0为低电平。
5.复位单片机,单片机开始执行内部FLASH中刚烧录进去的程序。
这种方式操作起来时很麻烦,BOOT0的电平状态要手动去设置;通过对上述步骤的理解,一键ISP烧录就是通过MCUISP去控制BOOT0引脚和单片机复位引脚的电平状态。
总的来说,当4引脚使能端E为低电平时,1引脚Y和2引脚Z的电平状态是独立的;当4引脚使能端E为高电平时,1引脚Y和2引脚Z的电平状态是相同的。
一键烧录
首先得明确一点:MCUISP软件中的DTR和RTS电平,跟开发板上的USB转串口芯片PL2303或者CH340的DTR#和RTS#电平状态相反,这也是为什么如上图所示,要选择“DTR的低电平复位,RTS高电平进BootLoader”。这一点很重要,才能明白ISP一键下载的原理。下图分别是CH340和ISP一键烧录的原理图。
我们来分析下怎样才能让BOOT0引脚和单片机复位引脚MCURST符合我们的要求。
首先我们得让BOOT0引脚电平为高电平,然后单片机复位完成之后就进入ISP模式烧录程序了。
1.CH340的DTR#引脚为高电平,RTS#引脚为低电平,则三极管Q2导通,74HC1G66GW的2引脚为低电平,此时STM32单片机的复位引脚MCURST也是低电平,单片机开始复位。
2.CH340的RTS#引脚为低电平,三极管Q1导通,BOOT0为高电平。
3.延时100ms之后,DTR#为低电平,RTS#引脚持续低电平,此时三极管Q2截止,74HC1G66GW的2引脚为高电平,此时STM32单片机的复位引脚RST也是高电平,单片机完成复位。
4.STM32单片机进入ISP开始烧录程序代码。