whik

  • 9 主题
  • 23 帖子
  • 554 积分
  • 身份:LV3 中级技术员
  • E币:431

【uFUN开发板评测】如何使用串口来给uFUN开发板下载程序

2019-3-20 20:22:46 显示全部楼层
前言
第一次学习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串口芯片。这里我提供了几个常用串口芯片的驱动程序下载地址,大家如果使用其他的串口芯片,要安装对应的驱动程序:
如果驱动安装成功,在设备管理器里可以看到该设备对应的串口号:
设置启动模式为系统存储启动模式
上电前,设置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.软件的下载
以到官方网站下载最新版,或者是下载我使用的这个版本,FlyMCU V0.188
  • 2.选择COM号
确保启动模式已经设置为串口下载模式,BOOT1=0,BOOT0=1,即S1=ON,S2=OFF,然后把开发板连接电脑上电,打开软件,选择PORT菜单下对应的COM口。
  • 3.加载hex文件
加载生成的hex文件,并勾选右边的编程前重装文件,这样,就不用每次下载程序,重新加载hex文件了。
  • 4.下载程序
勾选校验、编程后执行这两个选项,取消勾选编程到FLASH时写选项字节,然后点击开始编程按钮,如果正常下载的话,右边会输出下载的信息,如果成功下载并运行,最后会输出:
共写入8KB,进度100%,耗时4750毫秒成功从08000000开始运行
表示程序成功下载。
编程后执行:这个选项是指,程序下载完成后自动运行,而不用切换到BOOT到主闪存启动模式,但是,掉电重启,程序不会直接运行。如果要上电即运行此程序,还需要把BOOT设置回主闪存启动模式BOOT0=0,即S2=ON。
编程到FLASH时写选项字节:这个选项不要勾选,如果勾选了,可能会导致下载失败,或者是运行失败,甚至会导致芯片的锁死。所以,这个选项一定不要勾选。
使用Flash Loader Demonstrator下载
Flash Loader Demonstrator是ST官方的串口下载软件,可以用于STM32系列单片机的程序下载,官网地址:STM32 Flash loader demonstrator
  • 1.软件的下载
通过上面的官网链接,可以下载到最新2.8.0版本的Flash Loader Demonstrator,但是如果要想下载,需要先登陆ST官网的账号,如果不想注册账号的话,可以通过下面的链接下载,这个是我之前找的,版本是2.6.0的,但不影响程序的下载:Flash_Loader_Demonstrator_v2.6.0_Setup
  • 2.连接芯片
和FlyMCU不同的是,要想下载程序,必须要经过连接芯片,等一系列步骤才能完成下载,这一点,也是我觉得这个软件不好用的原因。
打开软件,选择板子串口对应的COM号,波特率可以调成最高,这样下载速度会快一点,但是有的串口芯片,不能支持很高的波特率。
如果和板子连接成功的话,会检测到目标STM32芯片的Flash的大小,我们的uFUN开发板是使用STM32F10RC,256KB Flash。
这一步,可以查看当前Flash各页的读写情况,绿色的锁表示可读/可写,如果芯片被加了读保护,或者写保护,部分页会显示为红色的锁。
![](
  • 3.程序的下载
先加载hex文件,下面的擦除选项可以选择:擦除必要的页、不擦除或者是全片擦除,这里保持默认配置就行,直接点击Next进行程序的下载。
如果下载成功,会显示
这里如果点击Back是不能进行第二次程序下载的,必须重新打开,连接,才能下载。
另外,除了STM32系列单片机程序的下载,它还支持ST公司的STM8的程序下载。

总结
STM32只能通过串口1进行程序下载,即PA9、PA10,其他串口都不具备这个功能,所以,如果自己设计板子,要注意这一点。一些联网的设备进行固件更新也是这个原理,即把WIFI模块,连接到串口1,实现程序的在线升级。当然,具体的实现还是很复杂的,而且还涉及到Bootloader程序的开发,这就是另外一个方面了。虽然STM32的F4系列也可以使用串口下载程序,但擦除时间很长,有十几秒种。推荐大家尽量还是使用调试器来进行程序的下载和调试,方便又好用,单片机开发必备!

参考资料

我的其他帖子

有需要的朋友可以到我的博客文章,查看下载链接。
博客文章链接:http://www.wangchaochao.top/2019/03/20/uFun-4/

也欢迎大家关注我的公众号【电子电路开发学习】,不定期更新电子方面的技术文章和我个人的学习笔记,主要是单片机、电子电路、编程等方面,希望能和大家一起交流学习、共同进步!
求关注.jpg

最新评论

楼层直达:

curton

  • 110 主题
  • 917 帖子
  • 2294 积分
  • 身份:版主
  • E币:1059
curton 2019-3-20 23:48:28 显示全部楼层
学习,期待有更新

eeNick

  • 59 主题
  • 202 帖子
  • 1440 积分
  • 身份:管理员
  • E币:944
eeNick 2019-3-22 10:01:53 显示全部楼层
专业级的啊,写得很好

MTzhuzhu

  • 1 主题
  • 3 帖子
  • 225 积分
  • 身份:LV2 初级技术员
  • E币:200
MTzhuzhu 2019-3-23 20:42:43 显示全部楼层
太赞了
我要评论
3
2
广告
关闭 热点推荐上一条 /1 下一条
快速回复 返回列表