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

【经验分享】STM32H7学习之路继续(stm32H7系列2) STM32最小系统

[复制链接]
STMCU小助手 发布时间:2021-12-19 16:00
14.STM32H7的电源,复位和时钟系统
1 D* y; W" U8 M1 z7 b% P1)STM32的最小系统主要有五个部分组成:
- J8 b2 q* \/ F* b: n电源电路、时钟源电路、BOOT启动电路、调试接口电路、复位电路+ T- u6 u3 r0 D; g4 r. z
STM32最小系统介绍) Z7 h9 x3 q. g: y3 ?6 J# L

  u, U. W2 i9 V% P2)供电(别搞晕了哟)
1 Y9 T: D) K7 p5 E; P, t
9 F* s, F3 ]$ J5 l
20200108085640298.png

& Y/ m3 b" h. F( L& k' y
" ~5 p: c8 c+ F3)上电启动过程
( p# Y. U6 n( H: s/ {当系统上电后,POR(Power on reset 上电复位)会检测VDD供电,当VDD大于POR设置的阀值时,将使能电压稳压器,注意看VDD那条线的变化。
2 N+ V$ R  K; s# l看VCORE那条曲线,只要VOSRDY未就绪,就会一直处于复位状态。, r# b5 C0 W) {3 n7 T/ I- E+ P
一旦VCORE正常输出,系统将走出复位状态,内部高速RC振荡器HSI将使能。
2 _) ~0 a. [+ ~HSI稳定后,将开始系统初始化,主要是Flash和可选字节的加载,这些都是由硬件完成的,CPU也将以受限的方式运行(主要是指不允许对RAM进行写操作)。
$ y5 }( Y  X' \7 A. w6 w7 Y8 C软件程序初始化系统,包括供电配置。当供电配置完成后,等待ACTVOSRDY位置1,完成置1后,CPU就进入正常的运行的模式,允许读写RAM了。+ A9 S; K# s! t/ O" G. {  {! n& p. p

) M# j# L, O( |# ~3 M9 K4)为了实现各种低功耗模式,CPU和D1,D2,D3域支持的各种模式* {- e; {! O, x( x8 R$ G! t7 O

# Q* P9 Q( O% r: O
20200108092123480.png

1 z5 A2 |+ f( R. c! h" r$ D% A( S
5)电源去耦电容的选择
3 G" L& s) X4 q9 f# G每个电源对 (VDD/VSS, VDDA/VSSA …)必须使用下述的滤波陶瓷电容去耦。这些电容必须尽量靠近芯片引脚,以确保器件正常工作。不建议去掉滤波电容来降低PCB 尺寸或成本,这可能导致器件工作不正常。
& u* S8 ?% [7 D2 e5 Z6 K/ }; I5 L* Z9 o: F' a; F+ C) b1 h2 l
总结:电源去耦的最终目标是为了负载能够正常工作,使电源特性更加接近理想电源——能快速响应负载的电流需求、电压稳定、干净无噪声。使电路各部分之间通过电源产生的耦合干扰降至最小。  T2 k  }3 a4 J; ~* Z

, g$ G4 q2 Q( Y' I9 @1 B( c* U
2020010814361752.png
! [" [( ?' q) @/ Z

6 u! |4 {+ X: q) w" \) U2 O  Z( d
' v$ d2 E0 @# p  D) [6)硬件复位/ Z2 G9 r$ c# E" O* \
[1] 51单片机上电复位 (阻容复位) ,按键复位3 u/ O$ A+ {+ U# s' r
所以,51一般都使用阻容复位来让其cpu在上电后在复位重启一次。如下图,去掉SW-PB和R6就是一个普通的51阻容复位,上电瞬间因为电容的压降不可突变的原理,电容等同导通。电容C23和电阻R27之间RESET点的电位就是VC5的电压,一直使能复位端。上电后VC5对C23充电,RESET点的电位降低趋近于GND的电平,后复位解除CPU开始正常工作。(其实这图的R27有点大,C23有点小)
# S- F# H6 Y; }+ [8 c; }( W- y; \, B0 S
0e1937c02a27e284d534d6a541fa675e_hd.jpg

% a/ u: J3 h7 E3 P2 Y
( Y( {8 c, p* U作者:陈俊直* h. Q' i# t$ Y) N# U4 n8 e9 i
来源:知乎: x( K- [: l9 V3 |( \
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。% @' a( E$ S' [2 o
6 o# \' U4 e( T/ |! {
[2] STM32H7开发板的硬件复位原理图如下:
, I7 m; I' N, }" X& c7 [
20200108112004200.png
# P7 h/ a: w3 w' B
+ X+ H( i3 h- ~& s) F5 T5 f0 c
STM32这款CPU的复位引脚是低电平有效,即NRST为低电平时,CPU处于复位状态。. C* A. ?- M% B9 ], y7 p& r; k
R173单的RC复位电路。当系统上电瞬间,C114电容两端电压可以认为是0,CPU处于复位状态。3.3V电源通过R173给C114充电,当C114的电压升到CPU的高电平门槛电压时,CPU退出复位状态转入运行状态。5 w2 C$ b" U3 w
在设计电路时,需要选择适当的R值和C值,以保证NRST低电平持续时间满足CPU复位最小脉宽的要求。
7 ^2 q) ~! u8 |: ?7 \4 F. S当按下S4轻触开关时,C114两端被短路接地,可实现手动复位CPU。
. I, s7 J6 r+ r8 ?) m1 z0 Z/ \( d  I5 T8 m
) O4 D+ }6 U: s" b
7)复位序列4 _0 V5 t# J  i1 h8 f$ a. q& n3 i+ f
硬件复位之后,CPU 内的时序逻辑电路首先完成如下两个工作(程序代码下载到内部flash为例,flash首地址0x0800 0000)
, h8 P5 A' D" A8 E5 k  O4 }
$ c  @' W; c) d$ E" A* b. ^( {将0x08000000位置存放的堆栈栈顶地址存放到SP中(MSP)。2 a6 ~7 {. |7 J; O; M0 C% U
将0x08000004 位置存放的向量地址装入 PC 程序计数器。6 e3 o; T4 e8 x6 w
CPU 从 PC 寄存器指向的物理地址取出第 1 条指令开始执行程序,也就是开始执行复位中断服务程序 Reset_Handler。0 Z2 T+ O) }  E- i4 {
' a, y9 e; J( ]* a+ k, t
20200108113830739.png
' {+ u" }2 r5 |$ {3 }( p

/ {/ o1 W1 L) l& B复位中断服务程序会调用SystemInit()函数来配置系统时钟、配置FMC总线上的外部SRAM/SDRAM,然后跳转到C 库中__main 函数。由C库中的__main 函数完成用户程序的初始化工作(比如:变量赋初值等),最后由__main 函数调用用户写的 main()函数开始执行 C 程序。
8 P8 |' n. O! b7 Q) K& h' @; q% p& U6 M3 [2 H4 w+ u4 M" Q, Q6 E

8 m4 X1 h8 H. t# l, R, f3 }3 N8)软件复位. C4 |, }; M" ~$ q. n! I( V. I
除了上电和手动复位,程序设计设置中还经常要用到软件复位,即调用一条函数就可以实现复位功能。此函数已经由CMSIS软件包中的core_cm7.h文件提供,函数如下:( g* [  x! _) b+ B

: O9 j* q2 G, p* C; B& V( P
  1. /**6 l' F* v6 ^$ C2 M
  2. \brief System Reset- o; F8 m3 C: m) l! T2 L5 }$ k
  3. \details Initiates a system reset request to reset the MCU.
    9 B$ s; H1 g0 b  g
  4. /3 t) ^  _% V3 Q! ]/ b3 `4 s
  5. __STATIC_INLINE void __NVIC_SystemReset(void)
    - Z8 ?  |; r+ G) z( v3 L# I4 e
  6. {
    6 x% P7 V7 `- a' \/ Q# P
  7. __DSB(); / Ensure all outstanding memory accesses included, K( _/ T' t$ Y8 u4 s
  8. buffered write are completed before reset /
    6 D! n" D  k# h( p5 |. M* O( T
  9. SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
    & ?; Z; R/ q6 C1 t: }7 N
  10. (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |2 d" I; E  x2 ~% A
  11. SCB_AIRCR_SYSRESETREQ_Msk ); / Keep priority group unchanged /
    6 i3 }0 p0 f( a6 j. M3 R4 q5 f
  12. __DSB(); / Ensure completion of memory access */
    * y2 [+ b  }0 X7 V6 o( ^0 G
  13. <font face="Tahoma" size="2">
    6 {5 f8 g" m1 J& a  N3 n6 R
  14. for(;<span style="color: rgb(77, 77, 77);">/* wait until reset */</span></font>
复制代码

# k' {* s  C0 t, _软件复位反映到实际硬件上,就是给硬件复位部分发一个复位信号:
收藏 评论0 发布时间:2021-12-19 16:00

举报

0个回答

所属标签

相似分享

官网相关资源

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