×
单片机 > 单片机程序设计 > 详情

详解STM32 ISP设置及使用说明

发布时间:2020-08-27 发布时间:
|
1. STM32的BOOT概述

STM32三种启动模式对应的存储介质均是芯片内置的,它们是:

用户闪存:    BOOT1=x  BOOT0=0   芯片内置的Flash,即主存储器Flash

SRAM:        BOOT1=1  BOOT0=1  芯片内置的SRAM 区,就是内存啦。 

系统存储器:BOOT1=0  BOOT0=1  芯片内部一块特定的区域,叫做系统存储器。芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP程序。这个区域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROM 区。

      在每个STM32的芯片上都有两个管脚BOOT0和BOOT1,这两个管脚在芯片复位时的电平状态决定了芯片复位后从哪个区域开始执行程序,见下表:

BOOT1=x  BOOT0=0  从用户闪存启动,这是正常的工作模式。

BOOT1=0  BOOT0=1  从系统存储器启动,这种模式启动的程序功能由厂家设置。

BOOT1=1  BOOT0=1  从内置SRAM 启动,这种模式可以用于调试。

要注意的是,一般不使用内置SRAM 启动(BOOT1=1 BOOT0=1),因为SRAM 掉电后数据就丢失。多数情况下SRAM 只是在调试时使用,也可以做其他一些用途。如做故障的局部诊断,写一段小程序加载到SRAM 中诊断板上的其他电路,或用此方法读写板上的Flash 或EEPROM 等。还可以通过这种方法解除内部Flash 的读写保护,当然解除读写保护的同时Flash 的内容也被自动清除,以防止恶意的软件拷贝。

一般BOOT0 和BOOT1 跳线都跳到0(GND),即正常的从片内Flash运行,只是在ISP下载的情况下,需要设置BOOT0=1,BOOT1=0 ,下载完成后,把BOOT0 的跳线接回0,这样系统可以正常运行了。

对于一般的应用来说,直接把BOOT0 和BOOT1 引脚接地即可,不用设置跳线,使用IAR 调试程序时可以选择RAM 调试还是Flash 调试,与BOOT0 和BOOT1 的配置无关。

而笔者在设计stm32的程序时,遇到spi3的nss等管脚与JTAG的管脚共用冲突,所以为了解决该问题,使得spi3能正常使用,通过库函数GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);关闭了JTAG功能,这样spi3能正常使用了,但结果导致无法通过JTAG烧录程序了!因为,通过ISP串口烧录程序的课题就浮出水面啦!

 

2. STM32的ISP工具的使用过程。
要使用下面烧录工具进行ISP升级code前,需先进行硬件配置:Boot0=1,Boot1=0,即上拉电阻或下拉电阻均可,此外,串口线连接PC机和STM32硬件电路板的UART1,不许是UART1,其他不行。
1.FlyMcu.exe可以正常使用,选择好对应串口后,按下读器件信息,软件开始与stm32通讯,并读取到芯片的型号,版本,容量等信息,表明通讯成功;如果显示一直连接中,则需reset一下stm32电路板,即可联通成功.
2.Flash Loader demo需要安装在PC机端,打开软件并设置好上述硬件连接后,还尤其要设置软件的如下参数:Parity:Even, Echo:Disabled,然后再reset硬件电路板后立刻按下软件的Next,一般都会联通成功,否则重试上述动作.该软件的不合理之处就是必须得每次reset板子后立即按next才行,而不是在next连接期间按下reset也可以联通,这是该软件需要改进升级之处.
3.SIMISP.exe使用时也必须在reset硬件之后马上按下“连接设备”,此时右下角显示“已连接”,绿灯点亮,联通成功,选择要烧录的文件后点击“开刷”即开始烧录程序。但由于该软件烧录程序文件太慢,故暂不使用。
注意:开始使用上述三款软件时,均无法正常连接PC与STM32硬件板,尝试了多次方法,最终发现:原来是需要Reset硬件开发板后立即连接软件,如果没有rest硬件,或者reset硬件后果几秒钟再连接软件,一般都无法连接成功,所以要记住:reset硬件后立刻按下连接软件!!!连接成功后,根据界面信息,即可以进行擦除和烧录flash啦!


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32中断向量表的位置.重定向