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

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

[复制链接]
STMCU小助手 发布时间:2021-12-8 22:00
1.前言2 W* B4 ~# v: ?; X! L3 W
最近在做一个项目,使用STM32G474芯片。  v% N$ G2 F" z& w
+ g) l$ \9 m- J5 }( f5 O
程序包含三个APP , 当运行其中1个APP时, 有时候需要软件复位跳转到其它APP。
  U$ |* N/ e; r1 C( {7 j7 S
  B; Q; b8 N3 W; _2 G* h/ @发现调用NVIC_SystemReset() 程序无法启动并跳转到其它APP。
& C# s6 B2 {4 h# \, d# w% q
+ V7 D% d6 V4 Z1 ?0 ?$ l2. 原因分析- _5 v4 `1 ]$ T; {
因为同样的跳转方式,已经在其它ARM MCU上验证且已经成熟,所以先入为主认为是硬件差异。
3 Z8 e3 u+ P% j8 d- q3 m
- \8 i% G4 T! G0 P: R/ P相同的程序烧录到NUCLEO-G474RE可以正常复位和跳转,所以首先怀疑复位电路。
2 O) d8 S( l+ v  y- v2 F1 ^, B9 M5 q7 y, P6 J: C
对比NUCLEO-G474RE 和目标产品的复位电路,目标产品加了外部上拉, 而NUCLEO-G474RE并没有加外部上拉。查阅STM32G4xx手册,发现芯片复位脚已经自带内部上拉, 而之前用其它MCU并没有加内部上拉,硬件工程师设计原理图习惯性加外部上拉了。  ~  Y/ h2 S1 Z9 i$ E+ p5 V

5 V, j: j; a1 v" R, [  E9 X
20200303210823442.png
2 v; {9 l# M5 o

8 A, L4 L/ w! h5 d* M
2020030321134430.jpg

: L) b5 G- |7 L+ ^: y2 X1 G
  w$ H& K4 N1 V3 ]& B会不会是目标产品加了外部上拉导致拉过强从而无法软件复位呢,尝试加大外部上拉电阻甚至去掉上拉电阻,但是问题并没有解决,同时用示波器观察复位脚,发现软件复位后芯片复位脚已经产生复位脉冲,且电平宽度也是足够的, 那就应该不是复位问题了。
3 Q/ B) Y; t) {; u: m$ o: Z3 Z
  ~2 u. Z7 i1 h5 \既然不是复位问题,而程序是一样的,猜测可能是option byte中某些设定不一样。分别读出NUCLEO-G474RE 和目标产品上STM32G4xx芯片的option byte,对比有4 byte差异,如下:  ( [. P2 y- _- p2 Z' W+ _& z6 |' Y
: v& A. U8 ]7 V  G+ ^
NUCLEO-G474RE:
( W- r8 P8 r/ r) k+ E' m
6 }  {3 q6 P$ x5 R$ x0 e7 }
L9~)PI)[}U4QN7DBGXEQSIN.png
) {8 \8 h- N" f# q
; T4 |3 h! @8 L% L- _6 L
首先先来看看USERConfig的差异,发现其第26 bit有差异,查手册得知该位为 Software BOOT0选项。对照手册,NUCLEO-G474RE是设置成了Software BOOT0, 而目标产品是硬件BOOT0 (PA8)。恍然大悟, 此前产品硬件设计PA8连接了电路,后来断开成悬空了,上电时候该PIN脚没电,启动检测为0, 所以程序正常运行。 但程序运行后,将该脚初始化为输出脚并设置成了高电平,由于没有放电回路,软复位后检测到该PIN脚是高电平, 从而进入了ISP模式。
/ N) j9 t$ D, r4 y( S& a& d' G6 T
3 v, A( {  T' [5 ~3. 解决办法& j8 B% z) D, ~& ~8 \
原因已经明朗了,那么分别尝试两种解决办法。
8 x* V! e0 i5 ~" E( d
/ P. h, f0 J5 C8 V6 |方法一是将目标产品的MCU的USERConfig option byte的26bit同样配置为0.& _7 R" ~# n: p; M- x$ j3 y- p7 z
4 C1 R9 r# @# e8 H: @
方法二是程序运行后将PA8电平置低。
, ^- M, O) {- f' W3 b
2 R4 v) |" z- w5 Q; o2 h' V经验证,两种方法都可解决现在的问题。更可靠的办法是下一版本硬件PA8拉地。3 h! M% Z5 v, v1 x: R  M8 \8 s0 S
. u) u$ }) z- {, Y. j1 F: z
4. 总结! w  k% n6 r  r, C
总的来说,这是个比较低级的问题,前期没有认真审核原理图,导致后续连串判断错误,走了弯路。( X" X( d; ]! n$ z) Z
# g, B8 n4 b3 {. q
+ y! E- H, M4 W. y- B+ |8 {0 e
收藏 评论0 发布时间:2021-12-8 22:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版