电子电路|如何使用串口来给STM32下载程序
文章目录
- 前言
- STM32的启动模式介绍
- 安装USB串口驱动
- 设置启动模式为系统存储启动模式
- 使用FlyMCU下载程序
- 使用Flash Loader Demonstrator下载
- 总结
- 参考资料
- 历史精选文章:
前言
第一次学习STM32的时候,不知道有调试器这个东西,所以一直是通过串口来给STM32下载程序,下载速度也还算可以,一般是几秒钟完成。后来用了调试器,可以直接在Keil环境下进行下载,而且还可以进行在线调试,所以后来就很少使用串口来下载程序了。前几天在uFUN试用群里看到有几个朋友在使用串口下载程序时,遇到了各种各样的问题,所以在这里简单介绍一下如何通过串口来给STM32下载程序。
STM32的启动模式介绍
从STM32参考手册上,可以查阅到,STM32的启动模式,共有下列三种,可以通过BOOT0和BOOT1电平的不同组合,来选择不同的启动模式。
文章图片
关于这几种模式的介绍,下面是我个人的理解:
主闪存启动模式:即运行模式,单片机上电即运行程序。
系统存储器启动模式:即串口下载模式。上电之前要先设置BOOT0=1,BOOT1=0,然后才能通过串口下载程序。或者在已经上电的情况下,设置BOOT0=1,BOOT1=0,然后按一下复位键,这样也能通过串口下载程序。
SRAM启动模式:即调试模式。假如我只修改了代码中一个小小的地方,如果直接擦除整个Flash,比较费时,而且Flash的擦写次数也是有限制的。所以可以考虑从RAM中启动代码,用于快速的程序调试,等程序调试完成后,再将程序下载到Flash中。
有的朋友可能遇到过这种情况:程序第一次下载的时候可以运行,但是掉电重启之后,程序就不能运行了。这种情况就有可能是把BOOT设置成了串口下载模式,所以掉电之后,并不会自动运行。如果想要即使掉电重启也能直接运行程序,可以把BOOT设置为主闪存启动模式,即BOOT0=0。
安装USB串口驱动
文章图片
在进行串口下载程序之前,如果串口芯片的驱动程序没有安装,那么电脑不能识别串口,如上图所示,设备管理器里有一个未识别的设备。在安装串口驱动之前,要先确定开发板所使用的串口芯片,我们的uFUN开发板使用的是CH340串口芯片。这里我提供了几个常用串口芯片的驱动程序下载地址,大家如果使用其他的串口芯片,要安装对应的驱动程序:
- CH340:CH340/CH341USB转串口WINDOWS驱动程序
- PL2302:PL2303 Windows Driver Download
- CP2102:CP210x USB转UART桥接VCP驱动程序
- FT232:FT232R USB UART Driver Download
文章图片
设置启动模式为系统存储启动模式
上电前,设置BOOT0=1,BOOT1=0。或者是在上电后,设置BOOT0=1,BOOT1=0之后,然后按一下复位按键。这两种方式都可以让设置为系统存储启动模式,从而通过串口下载程序。
参考uFUN的原理图:
文章图片
可以看出,BOOT的选择是通过拨码开关实现的。S1对应BOOT1,S2对应BOOT0,开关处于ON状态,BOOT直接接地,为低电平0;开关处于OFF状态,BOOT上拉为高电平1,即:
文章图片
这一点和【uFun 开发板快速入门指南 V10】介绍的有所出入,在这里手动@管理员核对一下。
文章图片
对于uFUN开发板,要切换到串口下载模式,只需要设置S1=ON,即BOOT1=0,S2=OFF,即BOOT0=1,就可以进行下一步的程序下载。如下图所示:
文章图片
使用FlyMCU下载程序
STM32串口下载软件主要两个,一个是国人开发的FlyMCU,另一个是ST官方的
Flash Loader Demonstrator
,这两个软件的下载方法我都会介绍,不过我个人认为FlyMCU更简单易用一些。文章图片
FlyMCU是由单片机在线编程网开发的一款串口下载软件,我使用的是V0.188版本,主界面如上图所示,如果大家想获取最新版的软件可以到官方网站下载。我去官网上看了一下,又发布了免费的Free ISP软件,可以支持STM32和LPC2xxx程序的下载。如果有朋友从事LPC2xxx MCU的开发,而又没有调试器,可以尝试一下这个软件。 好了,话不多说,下面来看一下如何使用FlyMCU通过串口来给uFUN开发板下载程序。
- 1.软件的下载
- 2.选择COM号
文章图片
- 3.加载hex文件
文章图片
- 4.下载程序
共写入8KB,进度100%,耗时4750毫秒
成功从08000000开始运行
表示程序成功下载。
文章图片
编程后执行:这个选项是指,程序下载完成后自动运行,而不用切换到BOOT到主闪存启动模式,但是,掉电重启,程序不会直接运行。如果要上电即运行此程序,还需要把BOOT设置回主闪存启动模式BOOT0=0,即S2=ON。
编程到FLASH时写选项字节:这个选项不要勾选,如果勾选了,可能会导致下载失败,或者是运行失败,甚至会导致芯片的锁死。所以,这个选项一定不要勾选。
使用Flash Loader Demonstrator下载
Flash Loader Demonstrator
是ST官方的串口下载软件,可以用于STM32系列单片机的程序下载,官网地址:STM32 Flash loader demonstrator- 1.软件的下载
Flash Loader Demonstrator
,但是如果要想下载,需要先登陆ST官网的账号,如果不想注册账号的话,可以通过下面的链接下载,这个是我之前找的,版本是2.6.0的,但不影响程序的下载:Flash_Loader_Demonstrator_v2.6.0_Setup- 2.连接芯片
打开软件,选择板子串口对应的COM号,波特率可以调成最高,这样下载速度会快一点,但是有的串口芯片,不能支持很高的波特率。
文章图片
如果和板子连接成功的话,会检测到目标STM32芯片的Flash的大小,我们的uFUN开发板是使用STM32F10RC,256KB Flash。
文章图片
这一步,可以查看当前Flash各页的读写情况,绿色的锁表示可读/可写,如果芯片被加了读保护,或者写保护,部分页会显示为红色的锁。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qt3icS0Z-1569933554973)(
文章图片
]
- 3.程序的下载
Next
进行程序的下载。文章图片
如果下载成功,会显示
文章图片
这里如果点击
Back
是不能进行第二次程序下载的,必须重新打开,连接,才能下载。文章图片
另外,除了STM32系列单片机程序的下载,它还支持ST公司的STM8的程序下载。
总结
STM32只能通过串口1进行程序下载,即PA9、PA10,其他串口都不具备这个功能,所以,如果自己设计板子,要注意这一点。一些联网的设备进行固件更新也是这个原理,即把WIFI模块,连接到串口1,实现程序的在线升级。当然,具体的实现还是很复杂的,而且还涉及到Bootloader程序的开发,这就是另外一个方面了。虽然STM32的F4系列也可以使用串口下载程序,但擦除时间很长,有十几秒种。推荐大家尽量还是使用调试器来进行程序的下载和调试,方便又好用,单片机开发必备!
参考资料
- STM32 BOOT模式配置以及作用
- STM32启动模式详解
- STM32串口打印输出乱码的解决办法
- 【UFUN开发板评测】小巧而不失精致,简单而不失内涵——uFun开发板开箱爆照
- 一键自动格式化你的代码
- Qt小项目之串口助手控制LED
- Jlink使用技巧之烧写SPI Flash存储芯片
- Jlink使用技巧之虚拟串口功能
- Jlink使用技巧之读取STM32内部的程序
- Jlink使用技巧之J-Scope虚拟示波器功能
或微信扫码关注我的公众号
文章图片
推荐阅读
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- 由浅入深理解AOP
- 如何寻找情感问答App的分析切入点
- 【译】20个更有效地使用谷歌搜索的技巧
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- 如何在Mac中的文件选择框中打开系统隐藏文件夹
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)
- java中如何实现重建二叉树