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

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

[复制链接]
STMCU小助手 发布时间:2021-12-19 16:00
14.STM32H7的电源,复位和时钟系统
. l& {9 s' n& v& H; N, I1)STM32的最小系统主要有五个部分组成:: p. u  K+ O: |5 p5 g* X& ~
电源电路、时钟源电路、BOOT启动电路、调试接口电路、复位电路+ g, ^- K( A" ^1 m' A+ F
STM32最小系统介绍) g0 F# h9 W+ W( [/ f2 M

: ]" v; l: Z- ~+ b1 s9 |  y2)供电(别搞晕了哟)
! y( ^+ g, r; ?& z. v& s+ W0 v0 n* z& Q3 \, F$ N
20200108085640298.png
+ U$ b# G1 P$ M" P/ v/ g
! x! c3 g( u0 z6 @  [7 A
3)上电启动过程; @$ ], U' r8 k1 O5 d
当系统上电后,POR(Power on reset 上电复位)会检测VDD供电,当VDD大于POR设置的阀值时,将使能电压稳压器,注意看VDD那条线的变化。/ K, H- e& P! @/ t$ l( ]) W
看VCORE那条曲线,只要VOSRDY未就绪,就会一直处于复位状态。
6 |- X2 i1 c1 a. l$ m: }/ v) K一旦VCORE正常输出,系统将走出复位状态,内部高速RC振荡器HSI将使能。
( W) B' E; j8 Q: a4 }- Y+ iHSI稳定后,将开始系统初始化,主要是Flash和可选字节的加载,这些都是由硬件完成的,CPU也将以受限的方式运行(主要是指不允许对RAM进行写操作)。5 a, M7 C3 N; U
软件程序初始化系统,包括供电配置。当供电配置完成后,等待ACTVOSRDY位置1,完成置1后,CPU就进入正常的运行的模式,允许读写RAM了。, v) @6 }; |) Y9 N
" n" u/ Q" o. ?) K; _2 F0 O
4)为了实现各种低功耗模式,CPU和D1,D2,D3域支持的各种模式
; X8 n9 D# q9 l$ @* `3 g
" q# G: N7 s2 ]; P/ K( X
20200108092123480.png

# }( Q, f9 m6 M/ C- O% o! N- F+ f5 u# Q, h9 Z
5)电源去耦电容的选择
( g" L0 E3 P0 R8 b9 ?5 t/ ?每个电源对 (VDD/VSS, VDDA/VSSA …)必须使用下述的滤波陶瓷电容去耦。这些电容必须尽量靠近芯片引脚,以确保器件正常工作。不建议去掉滤波电容来降低PCB 尺寸或成本,这可能导致器件工作不正常。- s0 f% G6 G4 P4 X/ n

4 j4 L4 R  }& e# L总结:电源去耦的最终目标是为了负载能够正常工作,使电源特性更加接近理想电源——能快速响应负载的电流需求、电压稳定、干净无噪声。使电路各部分之间通过电源产生的耦合干扰降至最小。
% a! |* e6 ~" U/ a) z/ P- h* i' I$ _3 Q) \7 k8 G8 x- d& e$ ^" _# @* }7 e- o
2020010814361752.png
- b( o' O0 v. P9 y2 B# }) C
" O5 x3 k! U) `# A$ B+ Q4 @
/ i, w. p  i! \$ r8 F+ x$ w
6)硬件复位
$ O4 R, V  X2 V9 C[1] 51单片机上电复位 (阻容复位) ,按键复位+ ]) W( h3 U7 f7 |2 A
所以,51一般都使用阻容复位来让其cpu在上电后在复位重启一次。如下图,去掉SW-PB和R6就是一个普通的51阻容复位,上电瞬间因为电容的压降不可突变的原理,电容等同导通。电容C23和电阻R27之间RESET点的电位就是VC5的电压,一直使能复位端。上电后VC5对C23充电,RESET点的电位降低趋近于GND的电平,后复位解除CPU开始正常工作。(其实这图的R27有点大,C23有点小)
  X: x& Q6 O9 I
/ O: l* ]! l( ?' [- o
0e1937c02a27e284d534d6a541fa675e_hd.jpg

0 @7 _+ `& T2 Z% J
- \$ t9 k" ?1 N+ k) a) ~3 F2 ^作者:陈俊直# w* ?* K1 Z# q
来源:知乎
. P3 |/ _$ ~+ ?) _/ n  R著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
' y) @6 \( j; L/ v( H/ s4 u- B) `' ~$ s
* \! q2 @& k0 Z7 X* D[2] STM32H7开发板的硬件复位原理图如下:0 W: V6 O; t' |) ~/ ?
20200108112004200.png

# S! Y8 |/ p0 \  R9 H( F
. R0 l: c( {4 u# C+ {' x0 |; qSTM32这款CPU的复位引脚是低电平有效,即NRST为低电平时,CPU处于复位状态。! T6 L7 a) i* r0 Z! {* S) y
R173单的RC复位电路。当系统上电瞬间,C114电容两端电压可以认为是0,CPU处于复位状态。3.3V电源通过R173给C114充电,当C114的电压升到CPU的高电平门槛电压时,CPU退出复位状态转入运行状态。
; m; y1 W( R9 K7 |5 E4 k在设计电路时,需要选择适当的R值和C值,以保证NRST低电平持续时间满足CPU复位最小脉宽的要求。
& L2 q8 A* e+ s$ Q3 T- l当按下S4轻触开关时,C114两端被短路接地,可实现手动复位CPU。4 @& v7 Y0 {% B- |8 }4 J$ L

- [+ s0 s4 f/ _2 O* @; D! z
3 |3 n* O. l  k0 b2 H! g- o7)复位序列0 v9 d- D* ^1 O" P3 m; ^: [" f
硬件复位之后,CPU 内的时序逻辑电路首先完成如下两个工作(程序代码下载到内部flash为例,flash首地址0x0800 0000)
2 r8 ?  X- l7 o. D2 ]" K
) {8 C& O7 p/ `' J, a将0x08000000位置存放的堆栈栈顶地址存放到SP中(MSP)。
9 o3 s7 ^* }3 x( m4 y, [4 ^' d将0x08000004 位置存放的向量地址装入 PC 程序计数器。; g. g2 M' i5 _2 W9 {$ Y
CPU 从 PC 寄存器指向的物理地址取出第 1 条指令开始执行程序,也就是开始执行复位中断服务程序 Reset_Handler。
. N( N8 ]0 M# ?/ [( B/ z" d5 s. b$ z% k& z, a* p  P
20200108113830739.png
8 \3 ]2 B0 q- z: {+ v. p; V+ S
' G" o/ l) ^3 C- D$ }$ o% F
复位中断服务程序会调用SystemInit()函数来配置系统时钟、配置FMC总线上的外部SRAM/SDRAM,然后跳转到C 库中__main 函数。由C库中的__main 函数完成用户程序的初始化工作(比如:变量赋初值等),最后由__main 函数调用用户写的 main()函数开始执行 C 程序。% F/ S8 q8 ]2 |) U

: w$ L$ D. a3 e, D) I6 m' P$ u) c6 M5 ]1 j. F/ r
8)软件复位
6 Z/ Q7 N) ^' @' Q除了上电和手动复位,程序设计设置中还经常要用到软件复位,即调用一条函数就可以实现复位功能。此函数已经由CMSIS软件包中的core_cm7.h文件提供,函数如下:
. {, i0 D" ^% u& }1 ?& W, j% f' {
  1. /**
    : x( g6 T$ @$ }/ `2 n% x
  2. \brief System Reset7 s* U- l% }$ Z3 Q, U
  3. \details Initiates a system reset request to reset the MCU., q) c7 |1 Q3 d) y% C# N* c! Q4 e
  4. /9 P$ K4 |; q. }6 Z: e. b7 A, s5 H4 T
  5. __STATIC_INLINE void __NVIC_SystemReset(void)
    ( o( d. Y+ N- Q3 J
  6. {. h; `6 z( n0 W
  7. __DSB(); / Ensure all outstanding memory accesses included
    & L  _0 q; [" G* o
  8. buffered write are completed before reset /2 v; a+ X+ l# d7 V! M
  9. SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
    ( s0 x8 d* c3 p5 C( B% U- z, D
  10. (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |$ X3 p1 |6 V4 Q7 y5 j/ {& m) y
  11. SCB_AIRCR_SYSRESETREQ_Msk ); / Keep priority group unchanged /, o5 \# P* T* z* y* M
  12. __DSB(); / Ensure completion of memory access */, m% f! ~7 I7 j7 n3 A
  13. <font face="Tahoma" size="2">
    , b% `, W/ X8 B# j8 j4 X
  14. for(;<span style="color: rgb(77, 77, 77);">/* wait until reset */</span></font>
复制代码

- v0 k; A. l4 T8 }软件复位反映到实际硬件上,就是给硬件复位部分发一个复位信号:
收藏 评论0 发布时间:2021-12-19 16:00

举报

0个回答

所属标签

相似分享

官网相关资源

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