请选择 进入手机版 | 继续访问电脑版

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

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

[复制链接]
STMCU小助手 发布时间:2021-12-8 22:00
1.前言
5 U- m9 S6 _) g最近在做一个项目,使用STM32G474芯片。
' ^* g6 K  }6 \+ l* l
9 [. s/ J, {; Q! p5 c, S  K: a程序包含三个APP , 当运行其中1个APP时, 有时候需要软件复位跳转到其它APP。
% u6 }$ A. t- o9 J& c5 ?" g0 \+ u7 Z7 N4 p7 m8 o& w
发现调用NVIC_SystemReset() 程序无法启动并跳转到其它APP。. S) V  }5 d0 F' \  s+ U% c2 m* s
9 j! T8 U0 S$ B  V" x
2. 原因分析
8 o: `9 U# F& J# X6 m; H8 Y* Q因为同样的跳转方式,已经在其它ARM MCU上验证且已经成熟,所以先入为主认为是硬件差异。! |- ]- C1 Q2 U% t# [$ A$ b
( f4 L3 p8 @( W- S* n+ U0 K
相同的程序烧录到NUCLEO-G474RE可以正常复位和跳转,所以首先怀疑复位电路。& U! t( h8 P9 {# U

% I2 i* k- n" U! i& Y对比NUCLEO-G474RE 和目标产品的复位电路,目标产品加了外部上拉, 而NUCLEO-G474RE并没有加外部上拉。查阅STM32G4xx手册,发现芯片复位脚已经自带内部上拉, 而之前用其它MCU并没有加内部上拉,硬件工程师设计原理图习惯性加外部上拉了。. x7 L: u' a7 e+ j
; S# x3 }2 T8 Q
20200303210823442.png
  G! F0 o: X- y/ n  p. z
  T9 s, p% c. Q, K- Y+ J
2020030321134430.jpg
8 p4 }; H  B, Z# {7 s
" s" z  W" [8 I5 N& x* `; z# ~# q
会不会是目标产品加了外部上拉导致拉过强从而无法软件复位呢,尝试加大外部上拉电阻甚至去掉上拉电阻,但是问题并没有解决,同时用示波器观察复位脚,发现软件复位后芯片复位脚已经产生复位脉冲,且电平宽度也是足够的, 那就应该不是复位问题了。) y8 O4 U5 ]) X: m
* Q( _( y8 r3 b7 \
既然不是复位问题,而程序是一样的,猜测可能是option byte中某些设定不一样。分别读出NUCLEO-G474RE 和目标产品上STM32G4xx芯片的option byte,对比有4 byte差异,如下:  
6 ^9 M( l8 m. g8 X' l1 {+ T5 I* V6 F, x
NUCLEO-G474RE:
! S2 ?6 x; q8 h, h
# k2 E+ Q9 B; X# {
L9~)PI)[}U4QN7DBGXEQSIN.png

- c" c9 z- z) d; B& c( u
, p9 c2 J  p8 R首先先来看看USERConfig的差异,发现其第26 bit有差异,查手册得知该位为 Software BOOT0选项。对照手册,NUCLEO-G474RE是设置成了Software BOOT0, 而目标产品是硬件BOOT0 (PA8)。恍然大悟, 此前产品硬件设计PA8连接了电路,后来断开成悬空了,上电时候该PIN脚没电,启动检测为0, 所以程序正常运行。 但程序运行后,将该脚初始化为输出脚并设置成了高电平,由于没有放电回路,软复位后检测到该PIN脚是高电平, 从而进入了ISP模式。
* L+ S3 z1 K% T% a, R# A
: C* R/ y* w8 a7 I3. 解决办法
7 L1 }4 _4 W1 _, @) L; H0 U. h" |- t原因已经明朗了,那么分别尝试两种解决办法。
) w6 Q+ I: q/ K5 q
" r3 S3 x- j0 W) M6 @方法一是将目标产品的MCU的USERConfig option byte的26bit同样配置为0.
, h) m% u7 {$ L
- N- D3 E. [1 J- d3 K( f方法二是程序运行后将PA8电平置低。! X! L. l7 E+ Y( I+ W
/ b/ l3 k0 t7 E0 b+ @5 R5 B
经验证,两种方法都可解决现在的问题。更可靠的办法是下一版本硬件PA8拉地。
3 R) C4 H, g( v) X4 |; ~2 ]/ O7 }: ]8 [2 n" C" l% ^
4. 总结6 w, O) \0 G$ V; ?! Y& Z
总的来说,这是个比较低级的问题,前期没有认真审核原理图,导致后续连串判断错误,走了弯路。
" N: v& l3 z# D* v$ k0 N9 G* w: B6 h  A$ n

! F: l9 ]. O$ N. n4 ]
收藏 评论0 发布时间:2021-12-8 22:00

举报

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