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

【经验分享】STM32G4 软件复位后程序无法运行的原因分析和解决

[复制链接]
STMCU小助手 发布时间:2021-12-8 22:00
1.前言
; G2 E: m& t$ z$ e: l" D最近在做一个项目,使用STM32G474芯片。
" e: i6 [' y6 g# P& g4 p5 ~7 d( i: j9 c: Z0 j6 M$ Z; g
程序包含三个APP , 当运行其中1个APP时, 有时候需要软件复位跳转到其它APP。
: @) J6 T: t- w% j9 r# v: P/ Q7 h3 E- J$ {. ?+ t
发现调用NVIC_SystemReset() 程序无法启动并跳转到其它APP。+ f: i7 ?5 ?4 c: c% C: ~- u8 C4 f
7 ^: L9 o; d0 m4 s
2. 原因分析
- F( `- b2 v! |; ^" Q5 _# e2 {1 l因为同样的跳转方式,已经在其它ARM MCU上验证且已经成熟,所以先入为主认为是硬件差异。# b- d% V0 P2 P6 ]5 s

+ i3 u* T" r  ^, G, i; h& m相同的程序烧录到NUCLEO-G474RE可以正常复位和跳转,所以首先怀疑复位电路。* V6 B7 ?0 n0 h3 _3 D

* G( R, c3 h+ i6 Q2 n; M" k$ W对比NUCLEO-G474RE 和目标产品的复位电路,目标产品加了外部上拉, 而NUCLEO-G474RE并没有加外部上拉。查阅STM32G4xx手册,发现芯片复位脚已经自带内部上拉, 而之前用其它MCU并没有加内部上拉,硬件工程师设计原理图习惯性加外部上拉了。
0 P1 ^+ z! S; x  U/ [- x& T
8 ~! T2 b, ]  i& ?
20200303210823442.png
  q: d% M" k  N5 J: T! ~

: }6 u! L+ U- H7 f
2020030321134430.jpg

4 L3 I  U, S4 }8 R/ Q  Y+ J# A1 r
- D  P* |9 n3 n! m会不会是目标产品加了外部上拉导致拉过强从而无法软件复位呢,尝试加大外部上拉电阻甚至去掉上拉电阻,但是问题并没有解决,同时用示波器观察复位脚,发现软件复位后芯片复位脚已经产生复位脉冲,且电平宽度也是足够的, 那就应该不是复位问题了。
* v4 B) L3 i: H  p* {
4 Z( A0 n! j/ C+ b7 h既然不是复位问题,而程序是一样的,猜测可能是option byte中某些设定不一样。分别读出NUCLEO-G474RE 和目标产品上STM32G4xx芯片的option byte,对比有4 byte差异,如下:  
; M6 `3 S; z: A0 G& n1 d/ N( h- Q+ _* |
NUCLEO-G474RE:$ D& R3 O- ^. v# A
5 `. F% t& U' h: Z9 A' [5 i8 ?
L9~)PI)[}U4QN7DBGXEQSIN.png
1 m2 R% K. @5 G1 O' ?5 y

3 F% d# v5 ~0 l# k1 w& j% l: q首先先来看看USERConfig的差异,发现其第26 bit有差异,查手册得知该位为 Software BOOT0选项。对照手册,NUCLEO-G474RE是设置成了Software BOOT0, 而目标产品是硬件BOOT0 (PA8)。恍然大悟, 此前产品硬件设计PA8连接了电路,后来断开成悬空了,上电时候该PIN脚没电,启动检测为0, 所以程序正常运行。 但程序运行后,将该脚初始化为输出脚并设置成了高电平,由于没有放电回路,软复位后检测到该PIN脚是高电平, 从而进入了ISP模式。! g) e$ z+ X" D+ j( v
5 H$ ?( @9 _8 a7 w! T  ~
3. 解决办法
$ i" u+ n' _3 N9 r- c原因已经明朗了,那么分别尝试两种解决办法。
; x2 n0 Q5 m0 N; g$ Y$ M% m4 Q* j. U
方法一是将目标产品的MCU的USERConfig option byte的26bit同样配置为0.
: A9 C3 }( b0 C# P, i4 k/ b2 G1 Z6 i; t1 m9 f' @' z
方法二是程序运行后将PA8电平置低。3 v1 U9 I! l$ E: l

; W$ ?* m* ?9 E5 ]4 Q6 l& p经验证,两种方法都可解决现在的问题。更可靠的办法是下一版本硬件PA8拉地。
) y  ^3 j" N' F- I! {9 S. E& S" v  g3 `8 G: e
4. 总结
$ I7 P$ U, e  F1 g- M/ f: j1 S; Z总的来说,这是个比较低级的问题,前期没有认真审核原理图,导致后续连串判断错误,走了弯路。# I3 _6 d6 c. }. K" I6 t$ k
' D1 l$ u' i2 z7 H

0 ]; `2 p1 E6 d. W- Q
收藏 评论0 发布时间:2021-12-8 22:00

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版