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

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

[复制链接]
STMCU小助手 发布时间:2021-12-8 22:00
1.前言
" H# r* `, q# V( K最近在做一个项目,使用STM32G474芯片。' B" U; u: o# j- q
* o3 `# v: s. |) V
程序包含三个APP , 当运行其中1个APP时, 有时候需要软件复位跳转到其它APP。
1 J$ }8 ?" t1 A6 k0 [  _1 I4 l6 K
发现调用NVIC_SystemReset() 程序无法启动并跳转到其它APP。) F2 e9 K+ D. R) b  z6 S

4 c3 l6 a9 `; B2 y* T: O, L# \2. 原因分析
5 b# S6 T1 A# N" S4 c因为同样的跳转方式,已经在其它ARM MCU上验证且已经成熟,所以先入为主认为是硬件差异。
3 L2 e% F! C) C5 K. M$ C4 l( [; S
+ Q3 b2 |3 b- v, J/ z0 C相同的程序烧录到NUCLEO-G474RE可以正常复位和跳转,所以首先怀疑复位电路。
7 a% x% y; `! m$ a$ U- U- I9 H& l( w+ _
对比NUCLEO-G474RE 和目标产品的复位电路,目标产品加了外部上拉, 而NUCLEO-G474RE并没有加外部上拉。查阅STM32G4xx手册,发现芯片复位脚已经自带内部上拉, 而之前用其它MCU并没有加内部上拉,硬件工程师设计原理图习惯性加外部上拉了。1 K6 d8 w" P  I+ U- ~) y$ t2 b
3 |: c7 t$ C/ ^- v2 r
20200303210823442.png

5 b  R, ^# e, ]: g' T3 p. f5 Z% Y& ~* O# @
2020030321134430.jpg

5 J4 F: X  J8 i! ^4 {
6 h8 U' ]0 H/ [" F( Y会不会是目标产品加了外部上拉导致拉过强从而无法软件复位呢,尝试加大外部上拉电阻甚至去掉上拉电阻,但是问题并没有解决,同时用示波器观察复位脚,发现软件复位后芯片复位脚已经产生复位脉冲,且电平宽度也是足够的, 那就应该不是复位问题了。
+ C, r: N) Z* m0 R* c# N3 l! X5 A, j  C$ U
既然不是复位问题,而程序是一样的,猜测可能是option byte中某些设定不一样。分别读出NUCLEO-G474RE 和目标产品上STM32G4xx芯片的option byte,对比有4 byte差异,如下:  
, \- s. Q+ G) v7 i4 m$ O( q9 ]
2 [' \5 q# e+ x+ NNUCLEO-G474RE:& Q* k: r. J, I' w8 X6 T% O
. r  V, J, W) d8 |+ G
L9~)PI)[}U4QN7DBGXEQSIN.png
3 u& I. L: ~; ]9 H: w/ B
. x7 Q3 K" j$ |
首先先来看看USERConfig的差异,发现其第26 bit有差异,查手册得知该位为 Software BOOT0选项。对照手册,NUCLEO-G474RE是设置成了Software BOOT0, 而目标产品是硬件BOOT0 (PA8)。恍然大悟, 此前产品硬件设计PA8连接了电路,后来断开成悬空了,上电时候该PIN脚没电,启动检测为0, 所以程序正常运行。 但程序运行后,将该脚初始化为输出脚并设置成了高电平,由于没有放电回路,软复位后检测到该PIN脚是高电平, 从而进入了ISP模式。
# A5 o9 B. O1 L9 v& o. N9 ?) R# x! Q- D
3. 解决办法
  U9 v% o! Y9 c+ B$ {2 B' G; ~原因已经明朗了,那么分别尝试两种解决办法。2 N: l9 p# U2 H2 \5 B' n7 f

4 Q! _+ b, |% m' t4 c方法一是将目标产品的MCU的USERConfig option byte的26bit同样配置为0.
2 u6 |( d; c; X6 u5 p
# W# p1 |" J6 a* O6 c, U+ [1 T方法二是程序运行后将PA8电平置低。- X: E. S1 k1 Y" A" B% {9 T( }

7 A2 Q# ]+ R$ S- T+ W# L$ F经验证,两种方法都可解决现在的问题。更可靠的办法是下一版本硬件PA8拉地。/ C1 y( l; a- J% G) y" Q2 R  b

; T, F1 G0 s; A2 F9 I4. 总结0 V) E4 P; X( F3 E8 k
总的来说,这是个比较低级的问题,前期没有认真审核原理图,导致后续连串判断错误,走了弯路。6 P' O# l: W: c( T! k
! w: ^  i9 j+ ^1 o3 t

3 Y, W# G; T. K8 r
收藏 评论0 发布时间:2021-12-8 22:00

举报

0个回答

所属标签

相似分享

官网相关资源

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