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

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

[复制链接]
STMCU小助手 发布时间:2021-12-8 22:00
1.前言! ?2 |( k3 W6 K: g# |
最近在做一个项目,使用STM32G474芯片。
6 r( w$ o7 r+ Q- B, |* i- {! {0 ], y7 L
程序包含三个APP , 当运行其中1个APP时, 有时候需要软件复位跳转到其它APP。/ Q+ E1 \$ ?1 L' j1 P9 ~2 _
7 S  w, V. C4 W4 n0 d, ^
发现调用NVIC_SystemReset() 程序无法启动并跳转到其它APP。6 @0 M( g# C3 r  M! Z  s2 @, }
, h% j- u* i; B% D9 X
2. 原因分析5 g' q$ c; z' h/ F$ W# |
因为同样的跳转方式,已经在其它ARM MCU上验证且已经成熟,所以先入为主认为是硬件差异。
; p6 N# I3 B+ `5 O+ S' Q* d: m, p: w
相同的程序烧录到NUCLEO-G474RE可以正常复位和跳转,所以首先怀疑复位电路。
' i9 U4 e. N  t9 c' F+ o: @8 m
: B9 @8 D" g& g! Z对比NUCLEO-G474RE 和目标产品的复位电路,目标产品加了外部上拉, 而NUCLEO-G474RE并没有加外部上拉。查阅STM32G4xx手册,发现芯片复位脚已经自带内部上拉, 而之前用其它MCU并没有加内部上拉,硬件工程师设计原理图习惯性加外部上拉了。
( a2 V  _3 J% t, N4 n2 z. c+ E1 z/ ]# `# q+ X5 ^
20200303210823442.png

/ _5 [+ C' r: H+ {
! ~& T6 @9 ]: T+ @! u
2020030321134430.jpg

+ P6 [9 b; A- y$ y; [' Z
- T! ]6 F! @0 w, j" N5 h- c9 v会不会是目标产品加了外部上拉导致拉过强从而无法软件复位呢,尝试加大外部上拉电阻甚至去掉上拉电阻,但是问题并没有解决,同时用示波器观察复位脚,发现软件复位后芯片复位脚已经产生复位脉冲,且电平宽度也是足够的, 那就应该不是复位问题了。
& b9 G* Q: Z: V; J" ~
8 G0 [% N; U' j" C既然不是复位问题,而程序是一样的,猜测可能是option byte中某些设定不一样。分别读出NUCLEO-G474RE 和目标产品上STM32G4xx芯片的option byte,对比有4 byte差异,如下:  
3 q1 _8 I: y5 |* T  K, [* b8 {2 F# `2 `( C2 q
NUCLEO-G474RE:
4 c* K- }  |; J8 {! V4 q2 i9 }. D! l; E, T
L9~)PI)[}U4QN7DBGXEQSIN.png
6 f9 ^; `9 `8 M% O/ b% R0 k4 R* d  k

9 |1 G% l2 i* M9 p! ^  N, Y首先先来看看USERConfig的差异,发现其第26 bit有差异,查手册得知该位为 Software BOOT0选项。对照手册,NUCLEO-G474RE是设置成了Software BOOT0, 而目标产品是硬件BOOT0 (PA8)。恍然大悟, 此前产品硬件设计PA8连接了电路,后来断开成悬空了,上电时候该PIN脚没电,启动检测为0, 所以程序正常运行。 但程序运行后,将该脚初始化为输出脚并设置成了高电平,由于没有放电回路,软复位后检测到该PIN脚是高电平, 从而进入了ISP模式。5 _) Q7 N  J/ t  N4 P8 O: T! }
& u0 ]( U8 l) D# j# B7 g" J" M
3. 解决办法
8 |  L7 t; G7 U: \原因已经明朗了,那么分别尝试两种解决办法。, I+ g$ `/ G+ ?4 R

! M7 `) r# {/ j$ ^) y方法一是将目标产品的MCU的USERConfig option byte的26bit同样配置为0.
5 C, q! z# w: k$ G" h
+ T, K9 D/ c& g& A% r: l方法二是程序运行后将PA8电平置低。
8 E1 `' r$ ]/ }  @. q' w( ^# d: ^, y0 ~7 z0 A6 I/ ~! b
经验证,两种方法都可解决现在的问题。更可靠的办法是下一版本硬件PA8拉地。' \4 K0 m! Y6 [2 Z, E
9 I9 Z1 M0 l1 Q; \" Q- H$ T* ~
4. 总结9 h! s& t* U1 A# r. M7 E
总的来说,这是个比较低级的问题,前期没有认真审核原理图,导致后续连串判断错误,走了弯路。
  W9 L2 s  X5 ^; i6 ~& }6 g1 w- b8 |8 P" I9 X" w  w
3 a) R+ ?5 f' \
赞 收藏 评论0 发布时间:2021-12-8 22:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版