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

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

[复制链接]
STMCU小助手 发布时间:2022-2-20 17:59
前言
$ x/ s! r4 J+ x+ X客户反馈通过 PC软件 flashloader 不能够跟 STM32 MCU自带 bootloader 连接。并且系统运行一段时间后异常复位。: ~$ n* {+ E" p* A) L
$ \0 S6 B# y9 ~4 d$ J" `
' B8 s& c$ @6 [. @, o" ~
系统分析
; D& c1 q; \( q9 W检测原理图 :% J& j' f* K9 N: B
延续之前的项目,进行的一些软硬件简单修改。8 e3 v$ W* F! w  C' H0 Z' L# ~1 C4 f
上电、放电的时序也是正常。3 v9 p$ Z6 {  {2 \- w, g  h
Boot0 拉高,boot1 拉低,2 G4 x8 p' [: H4 b
测量工作时的电压正常(2.5v)。
4 G* V- y( E. q  c; k" r5 h9 s检测所有相关的硬件软件都是没有问题,他们的 boot 脚,以及之前的 PDR_ON 是通过外围的 FPGA 单元控制,我们一开始怀疑这些上电时序,以及 PDR 逻辑出错。尝试让他们全部断开逻辑,测试整个上电,掉电过程都是没有什么问题。
" X5 f# Y" v9 _( [$ s# G2 _- s
0 k1 q1 x( N* t' w$ n4 z$ l3 f# O1 p0 O
测量波形:
( y( D/ d2 t, |: T检测他们的串口工具, C" b' H$ m& ~' r0 x  p
能正常在 PC上发现他们的串口工具,数据的发送正常。# D( o$ x' m; }
但是串口的到 PCB板上没有任何的输出,所以并不能跟板子通讯。
/ K5 h7 C9 M' N/ E
0 y$ J& o! J1 d7 Y. J( D. E# |. b5 M OLQA[GY2Y8W2XQKN7EU42CE.png 0 ~( K  b7 j  ~7 M5 ~

$ {1 A& z' l' R, H9 ^: r使用一个新的串口工具,当产品连接到 PC 后,重新上电,能够正常升级软件,到这里似乎问题得到解决,但是当他们恢复到之前的系统,通过控制 reset 和 BOOT引脚进入的时候,仍然时灵时不灵,当不能进入 BOOT 的时候,他们测量我们的复位管脚电压时发现在复位脚上以一个 3.6MHz 的频率不停的复位 MCU.
" P% W0 Q9 q) X# y  q7 y, ~7 _+ h) Z2 w# v* U
% @* J* i  k% i9 b2 b% D3 K. x
~P898%}[CY~1CF%TPI}YK_Y.png
/ Q# W( a7 F  f  a7 k9 p: V
) l; @' S& K3 m4 G功能测试:
" C+ H1 E4 w, L2 y3 H* u' s客户又发现如果给 MCU 上电,PC 快速打开 flashloader,并且连接串口,工作正常。但是,如果慢速这样操作,就连不上了,真是神奇的事情再次发生,他们再次确认发现,在复位脚上,在上电一段时间后,会有不停的有一个复位信号产生,百思不得解。
, a: l4 j% C  H7 U  i  ^  k8 `0 U3 S4 F1 H( e. J4 U
确认手册:4 o- b! `7 U5 R$ B8 d) H
我们打开 AN2606,发现在 bootloader 的流程图中有一个系统 reset 的过程,难道是这里产生的吗?( V5 {% Y9 G' w' Q9 I6 C# n& b& I7 G
- c- }; w; Q4 T
21%UUBD]E9XN~6IRATTVP.png & i) @2 p# m5 U& C  ]* }, {
. [) Y" S( z5 E: r1 r
我们让客户断开所有的外设再次确认问题,他们发现在断开外围的时候,这个连续的复位信号不再产生。从这个流程来看,只有在用到 DFU或者 CA N升级的会在检测不到 HSE的时候会系统 reset,但据他们说,他们并不使用这两个功能,那就奇怪了,然后就让他们试做去恢复外设功能,最后发现在恢复到一个 SPI 的时候,重现这个问题。+ q: I9 ~$ B/ B# c! M6 I' u( Z& Q+ d
* o! X" H7 U. B9 t+ K. k6 [
3 h* [+ e- P+ N; |: j
系统确认:! V- C$ F) }' Z+ |2 b* x# [7 b
我再次跟他们沟通他们的系统框图如下:
, a6 h1 X; r% k4 ]3 a
7 t/ r% p9 d% t  H. ]) s1 L
8 M  ^8 j. S. _! m3 Z# |
& ~; h: x0 W6 }+ B$ E2 Y! H% E: k1 D& I他们进一步调查发现,当 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 的时候,一切正常。
9 b& O" \2 {/ T# ~3 e' b3 H5 O9 R+ G

% r- C# P/ a9 z) {0 h1 R结论 :4 ]9 Q( M$ v; {5 C3 j: p) n
人们常说“事出反常必有妖”,如果不是芯片本身被损坏,我们始终坚信通过对硬件、系统、软件、以及手册的全面查
2 s( r$ a/ [7 f/ T找,一定能找出问题。$ L. p4 \$ N! E
9 Y2 n0 }7 O5 n* @% G% |
赞 收藏 评论0 发布时间:2022-2-20 17:59

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版