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

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

[复制链接]
STMCU小助手 发布时间:2021-12-8 22:00
1.前言2 u; v1 i" w) x% W, M; o% k/ z& P! ~
最近在做一个项目,使用STM32G474芯片。; f- z# J% y6 r$ v8 ?
+ s) k* `" [" _" R; z
程序包含三个APP , 当运行其中1个APP时, 有时候需要软件复位跳转到其它APP。% m- X7 R/ d1 R3 e  v

8 @* K, v- f; e8 F* @+ Y发现调用NVIC_SystemReset() 程序无法启动并跳转到其它APP。
; W  O2 ]1 @3 ^; l" f6 n& {! n+ |7 C+ V/ C
2. 原因分析% y' s6 v# M1 s
因为同样的跳转方式,已经在其它ARM MCU上验证且已经成熟,所以先入为主认为是硬件差异。4 C) m- e7 ?7 n8 X- }( E7 x1 r

4 {! R" E4 |- y1 W" @$ A& T相同的程序烧录到NUCLEO-G474RE可以正常复位和跳转,所以首先怀疑复位电路。
2 J& @0 Q. \" b* s0 l) R( J) H2 a& ~1 C1 {/ H
对比NUCLEO-G474RE 和目标产品的复位电路,目标产品加了外部上拉, 而NUCLEO-G474RE并没有加外部上拉。查阅STM32G4xx手册,发现芯片复位脚已经自带内部上拉, 而之前用其它MCU并没有加内部上拉,硬件工程师设计原理图习惯性加外部上拉了。  e' s3 }/ T& f. y' Z9 w( Z

( z" I. a* f: V; I5 ?
20200303210823442.png
) I% N' ?" W( \4 z# t$ t

* k& L! C7 t! v
2020030321134430.jpg
3 x4 w& E5 m% ?! |, a

4 q& X) r1 k$ f+ g会不会是目标产品加了外部上拉导致拉过强从而无法软件复位呢,尝试加大外部上拉电阻甚至去掉上拉电阻,但是问题并没有解决,同时用示波器观察复位脚,发现软件复位后芯片复位脚已经产生复位脉冲,且电平宽度也是足够的, 那就应该不是复位问题了。
# [1 [9 D5 [. }; s5 C8 G. G7 _2 d5 I: t7 T4 r
既然不是复位问题,而程序是一样的,猜测可能是option byte中某些设定不一样。分别读出NUCLEO-G474RE 和目标产品上STM32G4xx芯片的option byte,对比有4 byte差异,如下:  ; k$ b5 t0 x1 d0 |$ p  w

# P/ k6 W1 W7 R1 L  n2 eNUCLEO-G474RE:
; `7 l; g+ _; E6 V) A0 }  x0 h1 `; ~( M( W7 ~! q: L3 e$ [: B0 K
L9~)PI)[}U4QN7DBGXEQSIN.png

% S" ^+ G% V$ X+ d+ s' D
8 Y- p0 Z: V4 ]+ l/ q' A4 h! B) @" z首先先来看看USERConfig的差异,发现其第26 bit有差异,查手册得知该位为 Software BOOT0选项。对照手册,NUCLEO-G474RE是设置成了Software BOOT0, 而目标产品是硬件BOOT0 (PA8)。恍然大悟, 此前产品硬件设计PA8连接了电路,后来断开成悬空了,上电时候该PIN脚没电,启动检测为0, 所以程序正常运行。 但程序运行后,将该脚初始化为输出脚并设置成了高电平,由于没有放电回路,软复位后检测到该PIN脚是高电平, 从而进入了ISP模式。/ Q7 G4 m6 ~. z' x# e3 U3 p
+ `. T/ R! F9 V8 W
3. 解决办法
2 T4 D3 Y; C: R2 W2 F, ?  m6 ^原因已经明朗了,那么分别尝试两种解决办法。
6 E& }+ t% V" w, r4 K/ V* x" T, d. L3 |* d$ ^
方法一是将目标产品的MCU的USERConfig option byte的26bit同样配置为0.
: m( Q" G. P2 a; a$ _! g! a8 `! O
6 B/ E% x3 [8 J, E( P4 O方法二是程序运行后将PA8电平置低。# b) R* F* A, [3 w$ v

8 x% z- T; l# z7 M* s5 J( v, ^经验证,两种方法都可解决现在的问题。更可靠的办法是下一版本硬件PA8拉地。
/ g! t1 m% U# |$ F' t
! A" G: W1 b; N; r. I" ?% P: ^* R/ B4. 总结# b5 L7 P% Q) L, {. e
总的来说,这是个比较低级的问题,前期没有认真审核原理图,导致后续连串判断错误,走了弯路。( Z4 J; Q  U) @3 j9 W6 n$ F

& B! H2 n9 E3 X4 g9 |5 }+ |. u6 S2 w5 ~/ y/ c4 `) ]
收藏 评论0 发布时间:2021-12-8 22:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

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