请选择 进入手机版 | 继续访问电脑版
查看: 4232|回复: 6

[实战经验] 【实战经验】STM32 Bootloader中 DFU使用限制

[复制链接]
  • TA的每日心情
    开心
    2018-2-6 09:20
  • 签到天数: 1 天

    [LV.1]初来乍到

    1021

    主题

    4118

    帖子

    3

    精华

    管理员

    最后登录
    2018-4-22
    发表于 2016-6-28 14:23:06 | 显示全部楼层 |阅读模式
    STM32 Bootloader中 DFU使用限制

    前言
    众所周知,STM32所有的MCU中包含Bootloader代码,可以通过对boot引脚(boot0,boot1)的配置从bootloader启动,通过spi/i2c/usb等升级片内FLASH,从而实现版本升级的目的。但是通过USB升级的时候,在低温(零下10摄氏度以下)的情况下,出现升级失败的情况,很容易出现。

    问题现象
    通过bootloader usb升级时,在温度低的情况下,发现有一部分芯片升级失败,而且重新尝试,仍然升级失败。

    原因分析
    考虑到用户的量很大,而且问题都是出现在低温的环境下,所以基本排除用户单板设计,布线等问题,但是bootloader代码也非常的成熟,大量的被用户使用,所以软件问题也被排除,所以将问题的原因定位在环境温度低造成的,而温度低会对哪些外设 产生影响呢,查阅任何一款MCU的数据手册HIS部分的参数,都可以发现:
    31.jpg
    从这张表中可以看出,当温度低于-10℃时,HSI的准确性会降低很多,误差变得相当大,
    而熟悉STM32的工程师可能会有疑问,STM32的USB模块需要非常精准的48MHz时钟,所以一般时钟HSE作为其时钟源进行倍频和分频,为什么HSI低温时误差大会对其造成影响呢?
    这里就要重新回到bootloader中来,虽然这一部分代码并非开源的,是芯片出厂后就固化到MCU里面的,但我们可以从下面的流程中了解到原因:
    如上描述,使用usb模块,一般情况下是必须用HSE(有CRS功能的除外)的,但是作为bootloader而言,它本身是并不知道外接HSE的频率的,所以它就需要通过HSI去测算HSE的频率值,这个算法比较简单,通过简单的枚举即可,但是这样做就带来了一个问题,那就是当HSI偏差过大时,估测出来的HSE产生了偏差,这就最终导致了USB的48M时钟不准,产生了usb升级失败的问题!

    总结
    在使用bootloader进行升级时,同样需要考虑到时钟可能带来的误差。



    文档下载地址:
    http://www.stmcu.org/document/list/index/category-1012

    实战经验汇总:
    http://www.stmcu.org/module/forum/thread-576401-1-1.html
    回复

    使用道具 举报

    该用户从未签到

    10

    主题

    1514

    帖子

    0

    精华

    论坛元老

    最后登录
    2018-4-21
    发表于 2016-6-28 18:29:58 | 显示全部楼层
    楼主研究的比较细。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20

    主题

    364

    帖子

    0

    精华

    金牌会员

    最后登录
    2018-4-19
    发表于 2016-6-29 09:15:59 | 显示全部楼层
    楼主用的DFU软件是ST官方的还是自己开发的?官方的不太好用啊。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    28

    主题

    539

    帖子

    0

    精华

    金牌会员

    最后登录
    2018-4-13
    发表于 2016-11-12 15:53:48 | 显示全部楼层
    分析的太好 了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11

    主题

    1146

    帖子

    0

    精华

    金牌会员

    最后登录
    2018-3-19
    发表于 2016-11-13 10:45:01 | 显示全部楼层
    恩,论坛里关于温度特性讨论的话题太少,支持楼主
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8

    主题

    85

    帖子

    0

    精华

    高级会员

    最后登录
    2017-12-24
    发表于 2017-4-11 10:39:29 | 显示全部楼层
    谢谢分享啊!~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    29

    帖子

    0

    精华

    金牌会员

    最后登录
    2018-4-13
    发表于 2017-7-15 09:06:59 | 显示全部楼层
    stm32自带的bootloader支持USB升级?
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    小黑屋|手机版|Archiver|意法半导体STM32/STM8技术社区

    GMT+8, 2018-4-23 04:01 , Processed in 0.124924 second(s), 12 queries , MemCache On.

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表