你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32 Bootloader 异常复位案例

[复制链接]
STMCU小助手 发布时间:2022-2-20 17:59
前言
# m% G& U& U. u0 l6 q1 c客户反馈通过 PC软件 flashloader 不能够跟 STM32 MCU自带 bootloader 连接。并且系统运行一段时间后异常复位。! T; t! o3 O, L& n  c

: |' R2 o, l- E8 I8 x5 ^3 i, s" V8 F
系统分析
$ F1 H* u! }# l, d& p4 _检测原理图 :$ z2 c' K  m: S& d3 Z$ _% Q& [
延续之前的项目,进行的一些软硬件简单修改。
9 ~6 d8 j0 k+ Y: S. f上电、放电的时序也是正常。, C8 M5 m- E& p% p! s/ F
Boot0 拉高,boot1 拉低,
( D  E8 i: @, Y) m7 q% i6 N$ Q测量工作时的电压正常(2.5v)。
& x" @' |. M  J' S0 y3 l) ^检测所有相关的硬件软件都是没有问题,他们的 boot 脚,以及之前的 PDR_ON 是通过外围的 FPGA 单元控制,我们一开始怀疑这些上电时序,以及 PDR 逻辑出错。尝试让他们全部断开逻辑,测试整个上电,掉电过程都是没有什么问题。
+ R3 @0 ?% W. |4 ^
- n1 r, Q' O) \" L9 z5 v1 C* |" @# @, Q. `5 |. n: k
测量波形:$ p6 A2 `( |5 n
检测他们的串口工具
( a0 \' ]# d2 s4 ?1 R( T! n- {能正常在 PC上发现他们的串口工具,数据的发送正常。- ~$ }' H4 {( C' s% x5 Y& B
但是串口的到 PCB板上没有任何的输出,所以并不能跟板子通讯。
! A# {: h; A' T; @
3 g# O, b6 y& Y. @: p: }2 j OLQA[GY2Y8W2XQKN7EU42CE.png ! Q" i9 G, C: k7 I
" u; b- Z7 k2 n0 |
使用一个新的串口工具,当产品连接到 PC 后,重新上电,能够正常升级软件,到这里似乎问题得到解决,但是当他们恢复到之前的系统,通过控制 reset 和 BOOT引脚进入的时候,仍然时灵时不灵,当不能进入 BOOT 的时候,他们测量我们的复位管脚电压时发现在复位脚上以一个 3.6MHz 的频率不停的复位 MCU.
% [9 M4 A  \. N: T6 y. ^  K# S+ }) t9 ~7 _. P

0 L) k3 E' m4 p: {8 `% e% B% |( | ~P898%}[CY~1CF%TPI}YK_Y.png
% I& s5 L2 Q9 O- h& L8 A# V3 k
  ~! z( G2 a7 M, l  l功能测试:
3 G: \* n- g. e/ T9 s( @客户又发现如果给 MCU 上电,PC 快速打开 flashloader,并且连接串口,工作正常。但是,如果慢速这样操作,就连不上了,真是神奇的事情再次发生,他们再次确认发现,在复位脚上,在上电一段时间后,会有不停的有一个复位信号产生,百思不得解。
5 H. B9 h. p# z$ Y! ^  S; L6 x7 V' h+ b$ G: o5 X- N! G, K
确认手册:
1 A6 h2 B9 L  w我们打开 AN2606,发现在 bootloader 的流程图中有一个系统 reset 的过程,难道是这里产生的吗?
/ V- v, @! [9 k; m
9 e8 }, l/ b' C# ~  ? 21%UUBD]E9XN~6IRATTVP.png
$ U1 f' O8 Q) F# H
, l1 {$ Z. {8 Q/ O; A我们让客户断开所有的外设再次确认问题,他们发现在断开外围的时候,这个连续的复位信号不再产生。从这个流程来看,只有在用到 DFU或者 CA N升级的会在检测不到 HSE的时候会系统 reset,但据他们说,他们并不使用这两个功能,那就奇怪了,然后就让他们试做去恢复外设功能,最后发现在恢复到一个 SPI 的时候,重现这个问题。7 O" M6 N" J8 I  @. n+ G
' H3 E  S: e+ u

9 P7 _5 }, m$ w系统确认:. F( ~# f+ x; O5 N  c7 k! X
我再次跟他们沟通他们的系统框图如下:
# w) ^+ B" A3 t' ~6 e8 z  E% @% k6 d3 t

! ?; n1 W( M- u) M6 d/ t. W
' s# o4 P4 i' W他们进一步调查发现,当 FPGA,在上电初始化后,会不停的发送一些命令给到 MCU,数据线正好跟 CA N 的 RX引脚共用,所以只有第一次上电后,也就是在 FPGA 给 MCU 发送数据之前,FLASHLOADER 能够正常连接 MCU,过了这段时间就不能连接了。从这些实验和最后的结果我们可以看出,如果我们在芯片上电,且在 FPGA 给 MCU 发送数据之前,连接串口,这个时候 MCU就能顺利地通过 UA RT 启用 bootloader,而不受 FPGA 发送的数据影响,而过了这段时间之后,FPGA 会不停的发送数据给 MCU,而 MCU 错误的检测到 CAN FRAME(跟 ST欧洲的应用部门确认,我们的 CA N 检测只是简单的确认一个下降沿,一个上升沿,再检测到一个下降沿),而进入 CA N bootloader 但是又不能正确检测到 HSE或者不能在 3ms 内检测到正常的 CAN FRAME ,从而导致 MCU复位。屏蔽掉 SPI 的时候,一切正常。
( _* {5 ~/ T/ |$ V
2 l1 S7 i7 \9 b! i3 b
1 I, }3 y4 H) ?结论 :
! v0 K' E' ^8 p, K人们常说“事出反常必有妖”,如果不是芯片本身被损坏,我们始终坚信通过对硬件、系统、软件、以及手册的全面查
$ V0 e; f$ ?) v- i2 B找,一定能找出问题。# Z7 y# \, e+ m6 W$ c# u

3 ]- `; j0 \' A9 s
收藏 评论0 发布时间:2022-2-20 17:59

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版