4. 如何用串口下载程序¶
注意:本章节的FlyMcu软件对现在的F407芯片(即新买的霸天虎)在进行串口下载程序时会导致锁芯片!!!所以不建议不会解锁芯片的新手使用,推荐使用官方工具STM32CubeProgrammer来进行串口下载实验,相关操作在本节也有介绍。
野火STM32F407ZGT6—“霸天虎”开发板自带串口下载电路,配合上位机可实现一键ISP下载,不需要修改开发板上的BOOT设置。 与仿真器Fire-Debugger相比,ISP只能下载程序,不能在线调试且下载速度慢。
4.1. 安装USB转串口驱动¶
野火的所有系列的STM32开发板用的USB转串口的驱动芯片都是CH340,要使用串口得先在电脑中安装USB转串口驱动—CH340版本。 驱动可在网上搜索下载或者使用我们光盘里面提供的。WIN7用户请用管理员身份安装。如果不能安装成功,请先百度查找原因自行解决。
如果USB转串口驱动安装成功,USB线跟板子上的“USB转串口”连接没有问题,那么在开发板上电后可在计算机->管理->设备管理器->端口中可识别到串口, 具体见图 USB转串口驱动安装成功 。
如果识别不了串口,请检查USB线是否完好,可换一根USB线试试。
4.2. 硬件连接¶
用USB线连接电脑和开发板的USB转串口接口,给开发板上电, 具体的实物接线图见图 F407-霸天虎串口下载接线图 。
4.3. 开始下载¶
打开FlyMcu软件,具体配置见图 下载配置和下载成功现象 :①搜索串口,设置波特率为76800(不要超过115200)、 ②选择要下载的HEX文件、③校验、编程后执行、④DTR低电平复位,RTS高电平进入bootloader(上位机软件为232逻辑电平标准)、⑤开始编程、⑥选项字节的勾去掉,如果勾选上则下载程序后不能自动运行。 如果出现一直连接的情况,按一下开发板的复位键即可。 下载成功后的现象具体见图 下载配置和下载成功现象 中的下载成功现象指示的方框部分。
(注意:FlyMcu上位机软件是基于232逻辑电平标准,而后面介绍ISP一键下载原理分析及硬件原理图是基于TTL逻辑电平标准,232标准与TTL标准在逻辑电平上是相反的,所以导致实际硬件上是DTR高电平复位,RTS低电平进入bootloader,而上位机软件设置为DTR低电平复位,RTS高电平进入bootloader。)
FlyMcu V0.188串口下载软件对现在的F407芯片会存在下载不了的情况,建议使用STM32CubeProgrammer这个官方工具,需要手动跳一下boot。 软件也在我们提供的资料里,云盘路径为:A盘(资料盘)>5-开发软件>串口下载软件>ST官方工具,下载解压安装即可,或者在ST官网进行下载,网址为:https://www.st.com/en/development-tools/stm32cubeprog.html
同时芯片锁了不会用仿真器操作解锁的都可以用这个工具,串口连接上,下载就解锁。①选择串口连接、②用跳帽将BOOT0跳3V3、③DTR选为1、④勾选Read Unprotect(MCU)解除读保护,即可连接串口下载程序。连接过程也可能会失败,确保BOOT0接3.3V,需要多重启板子或者重启这个软件试。
4.4. ISP一键下载原理分析¶
4.4.1. ISP简介¶
ISP(In-System Programming)在系统可编程,指电路板上的空白器件可以编程写入最终用户代码, 而不需要从电路板上取下器件,已经编程的器件也可以用ISP方式擦除或再编程。
ISP的时候需要用到(bootloader)自举程序,自举程序存储在 STM32 器件的内部自举 ROM 存储器(系统存储器)中。 其主要任务是通过一种可用的串行外设( USART、 CAN、 USB、 I2C 等)将应用程序下载到内部 Flash中。 每种串行接口都定义了相应的通信协议,其中包含兼容的命令集和序列。
4.4.2. ISP普通下载¶
现在我们针对USART1的ISP进行分析,通常的ISP的步骤如下:
1. 电脑通过USB转串口线连接STM32的USART1, 并打开电脑端的上位机;
2. 设置跳线保持BOOT0为高电平, BOOT1为低电平;
3. 复位单片机使其进入bootloader模式, 通过上位机下载程序;
4. 下载完毕,设置跳线保持BOOT0为低电平, BOOT1为低电平;
5. 复位单片机即可启动用户代码, 正常运行。
以上步骤有个不好的地方就是下载程序需要跳线及复位操作,很繁琐。通过对ISP的原理认识,一键ISP就诞生了,它需要做的事情就是用上位机去控制BOOT0脚和单片机的复位脚, 具体原理图见 ISP一键下载电路 。
4.4.3. BOOT配置¶
在ISP下载电路中,我们需要配置BOOT引脚,有关BOOT引脚不同的配置会产生不同的启动方式,见下表。
BOOT0 |
BOOT1 |
启动方式 |
---|---|---|
0 |
X |
内部FLASH |
1 |
0 |
系统存储器 |
1 |
1 |
内部SRAM |
4.4.4. ISP一键下载¶
USB转串口估计大家都很熟悉,一般都是用到RXD和TXD这两个口,一键ISP电路中我们需要用USB转串口的芯片的DTR口和RTS口来控制单片机的BOOT0和NRST,原理如下:
1. 通过上位机控制U9(CH340G)的RTS脚为低电平, Q1导通,BOOT0的电平上拉为高电平。
2. 通过上位机控制U9(CH340G)的DTR脚为高电平,由于RTS为低电平,Q2导通,U18的2脚为低电平,U18为一个模拟开关, 使能端由4脚控制,默认高电平,U18的1脚和2脚导通,所以NRST为低电平系统复位。
3. 单片机进入ISP模式,此时可以将DTR脚设置为低电平 ,RTS设置为高电平。Q1和Q2为截至状态,BOOT0和NRST还原默认电平。
4. 上位机将程序下载到单片机,下载完毕之后, 程序自动运行。
5. 至此,很多人还会认为U18、Q1、Q2是多余的,用U9的RTS和DTR直接控制也可以。正常情况下,这样理解没有问题,但是我们忽略了一点, 就是单片机上电瞬间如果USB转串口连接了电脑,DTR和RTS的电平是变化的,如果不处理好,单片机会一直进入ISP模式,或者系统会复位多次,这种情况是不允许的。
6. 于是,就有了我们全新的一键ISP电路。我们主要是分析上电瞬间的逻辑关系,单片机上电时我们通过示波器观察波形得知DTR和RTS的电平是变化的, 但是也有一个规律就是:只要RTS为低电平的时候,DTR的电平也是低,因此一般情况Q2不会导通,但由于这两个IO口的电平存在“竞争冒险”, 会出现RTS的下降沿的时候刚好遇到DTR的上升沿,这个时候Q2导通,导致系统复位,而BOOT0此时有可能也为高电平,就会进入ISP模式。 这个是不受我们控制的,我们不想系统出现这样的情况。因此加入了模拟开关来切断这种干扰。
加入模拟开关U18,通过控制U18的4脚的开关来达到隔离干扰电平的目的。下面我们分析一下延时开关电路,上电瞬间,电容C1通过电阻R43来充电, 由于电阻100k很大,电容的充电电流很小,等电容充电达到U18的4脚的有效电平2V时,大概耗时1S,在这个1S时间内U18的模拟开关是断开的, 因此RTS和DTR的干扰电平不会影响到系统复位。系统正常运行。
提示: 更多关于串口下载使用方面的问题请参考此链接内容 https://doc.embedfire.com/stm32_products/must_read/zh/latest/doc/quickstart/DAP/DAP.html#