ISP(in_system_programing)在线系统编程简介:
- ISP下载是指通过串口将程序下载到Flash中,然后自动运行的程序的启动方式。
- ISP需要用到Bootloader(自举程序),bootloader存储在stm32内部的自举Rom存储器中,作用是接收串口外设发送的程序数据放置到flash中。
Stm32启动方式:
启动模式选择引脚 | 启动模式 | 说明 | |
Boot0 | Boot1 | ||
0 | X | 内部Flash(513K) | 从Flash中加载代码启动 |
1 | 0 | 系统存储器 | 通过ISP加载代码 |
1 | 1 | 内置SRAM | 内置SRAM加载代码启动 |
ISP普通下载:
- 电脑上位机通过USB-Type-C线连接到Stm32的USART1。
- 设置Boot1固定低电平,Boot0为高电平,
- 按下复位按钮,此时单片机进入bootloader模块准备接受数据。
- 上位机开始发程序,单片机通过串口接收代码数据存入Flash中
- 下载完成后,跳帽设置Boot0为低电平,按下Reset按钮,单片机进入Flash启动代码。
ISP一键下载:
注:上位机通过控制DTR、RTS来对RESET进行复位和对BOOT0设置,以达到ISP自动下载效果
- Boot1默认接地为0
- RTS#为0、DTR#为1,Q3、Q5导通,Reset被拉低,BOOT0拉高,单片机进入复位
- RTS#保持为0、DTR#为0,则Q3导通,Q5截止,Reset恢复高电平,Boot0依旧拉高,此时串口接受来自上位的代码数据并可选择立即执行代码。
- 接受完之后,RTS#、DTR#都置1,Q3、Q5均截止,Boot0恢复低电平,下次重新上电或RESET时,单片机执行内部Flash代码。
备注:时间轴1-2为擦除,2-3时间段为下载代码。用内部一段IO代码作为程序运行标志。