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

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

[复制链接]
STMCU小助手 发布时间:2021-12-19 16:00
14.STM32H7的电源,复位和时钟系统2 W5 @$ ~' `/ O2 \4 d3 m3 O
1)STM32的最小系统主要有五个部分组成:8 k# c9 B3 o2 x) d5 R" r% d4 w3 h( L- j
电源电路、时钟源电路、BOOT启动电路、调试接口电路、复位电路
3 k+ h; O& w$ ]1 _; u  _; t3 vSTM32最小系统介绍& s. F+ j, g6 V3 x; n# v
$ g5 j2 q8 I) G4 h
2)供电(别搞晕了哟)
" S! Y2 w) Z8 g) Y2 y+ V4 ?- a
5 {, W& N  P/ ^# S0 t, P9 |) l1 F
20200108085640298.png
* x2 o' j1 R& s7 f' e. O  w, A* s
7 [$ r' i( Q9 D, P$ ?1 X
3)上电启动过程
8 ?; t& G# t! @# w+ k2 M' e当系统上电后,POR(Power on reset 上电复位)会检测VDD供电,当VDD大于POR设置的阀值时,将使能电压稳压器,注意看VDD那条线的变化。) K( ]; z' {: \% l9 i( V6 o1 s
看VCORE那条曲线,只要VOSRDY未就绪,就会一直处于复位状态。
: E+ o. `; {8 O) |+ I9 T& K一旦VCORE正常输出,系统将走出复位状态,内部高速RC振荡器HSI将使能。* T9 c$ ~% Z; F8 v4 X
HSI稳定后,将开始系统初始化,主要是Flash和可选字节的加载,这些都是由硬件完成的,CPU也将以受限的方式运行(主要是指不允许对RAM进行写操作)。
8 R0 \* p# @6 D  m软件程序初始化系统,包括供电配置。当供电配置完成后,等待ACTVOSRDY位置1,完成置1后,CPU就进入正常的运行的模式,允许读写RAM了。. @; `2 L+ d  v8 F8 t6 G- }- l/ [

( q6 P5 u8 e; N8 M$ @* o& m4)为了实现各种低功耗模式,CPU和D1,D2,D3域支持的各种模式
/ n& n! J/ K% |1 F2 H( H) x0 K; w+ o% ]( I+ l3 u0 ]
20200108092123480.png
: j2 R, a1 h9 {) n1 T

1 X& T* z) E  u0 S0 q3 N  M5)电源去耦电容的选择
3 e# K" z3 |) E3 }, E! U& S每个电源对 (VDD/VSS, VDDA/VSSA …)必须使用下述的滤波陶瓷电容去耦。这些电容必须尽量靠近芯片引脚,以确保器件正常工作。不建议去掉滤波电容来降低PCB 尺寸或成本,这可能导致器件工作不正常。3 S* I7 C) [3 d3 p/ c" p

% @0 j8 P5 ]3 M/ u2 a* ^总结:电源去耦的最终目标是为了负载能够正常工作,使电源特性更加接近理想电源——能快速响应负载的电流需求、电压稳定、干净无噪声。使电路各部分之间通过电源产生的耦合干扰降至最小。3 I- J# _7 k* z

- o: i  X+ v1 k- J+ ]. _9 _* B
2020010814361752.png
  p3 U4 F1 ^7 x- f* w0 s
. R9 N0 W! T: J: Y6 |3 \% \5 e
8 k3 K0 Q% n" l7 \
6)硬件复位
2 p% r1 _* V! g* d' N! Z4 _6 y; _5 {0 B[1] 51单片机上电复位 (阻容复位) ,按键复位
6 n  }+ c% C; d$ X1 Z4 D3 V' Z所以,51一般都使用阻容复位来让其cpu在上电后在复位重启一次。如下图,去掉SW-PB和R6就是一个普通的51阻容复位,上电瞬间因为电容的压降不可突变的原理,电容等同导通。电容C23和电阻R27之间RESET点的电位就是VC5的电压,一直使能复位端。上电后VC5对C23充电,RESET点的电位降低趋近于GND的电平,后复位解除CPU开始正常工作。(其实这图的R27有点大,C23有点小)
& K" H) B; i8 m
+ o& X2 l# _3 j) D; r4 e; A& k
0e1937c02a27e284d534d6a541fa675e_hd.jpg
) m% e; g. ^% J. F. `8 I& k( D& l

1 O) g  Z' A3 x' ]- s% f作者:陈俊直
/ E! x' T9 c( n! Y4 Z4 Q来源:知乎/ {- v2 f# h! V  {9 r5 T
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
6 e* V7 h# }$ D2 t
& ?, @  S' S* C# Q+ B[2] STM32H7开发板的硬件复位原理图如下:
; W3 W) \6 V$ I7 k6 h
20200108112004200.png

) y2 k! s. `# P) J( m2 @& ]6 `! Y1 ]- Y: o# e- q
STM32这款CPU的复位引脚是低电平有效,即NRST为低电平时,CPU处于复位状态。0 ?2 \3 H# b4 r) s
R173单的RC复位电路。当系统上电瞬间,C114电容两端电压可以认为是0,CPU处于复位状态。3.3V电源通过R173给C114充电,当C114的电压升到CPU的高电平门槛电压时,CPU退出复位状态转入运行状态。; d) M4 l* p" H3 z3 p- l& @
在设计电路时,需要选择适当的R值和C值,以保证NRST低电平持续时间满足CPU复位最小脉宽的要求。
4 b, D* o; u8 b, [& T" ^2 a3 `当按下S4轻触开关时,C114两端被短路接地,可实现手动复位CPU。4 e' ]1 [" ^2 a/ D

; c7 Z  S9 O! h/ q/ ^; d- y3 B4 j7 \: \5 z* v8 N0 X# F
7)复位序列
5 L* {: \. O4 L" O- H' M# M0 t硬件复位之后,CPU 内的时序逻辑电路首先完成如下两个工作(程序代码下载到内部flash为例,flash首地址0x0800 0000)
8 J1 Y' b9 P) Z( E3 b2 ^& F. E
5 `3 D8 _0 r; i' d5 c& a将0x08000000位置存放的堆栈栈顶地址存放到SP中(MSP)。
4 c4 K4 \! h4 F; e' U) G将0x08000004 位置存放的向量地址装入 PC 程序计数器。% g5 Y0 C8 K6 z) V5 P+ u. g
CPU 从 PC 寄存器指向的物理地址取出第 1 条指令开始执行程序,也就是开始执行复位中断服务程序 Reset_Handler。! p. B; _$ z/ P4 ]7 p

( A9 h, R# X. \. |
20200108113830739.png
& V0 z0 E; G0 l$ n8 ?
" X9 \/ R# z, `& `  Q) w
复位中断服务程序会调用SystemInit()函数来配置系统时钟、配置FMC总线上的外部SRAM/SDRAM,然后跳转到C 库中__main 函数。由C库中的__main 函数完成用户程序的初始化工作(比如:变量赋初值等),最后由__main 函数调用用户写的 main()函数开始执行 C 程序。
$ d7 v# h$ R" G& K1 l- c  l
& G5 a% ^4 t, h' }- J& n
5 G% x# E2 Y0 J, Z1 a5 h3 y8)软件复位) w; P3 _& ^9 x4 l
除了上电和手动复位,程序设计设置中还经常要用到软件复位,即调用一条函数就可以实现复位功能。此函数已经由CMSIS软件包中的core_cm7.h文件提供,函数如下:
, x) W9 d3 {9 F9 k
! b2 F) \  d* G
  1. /**
    8 _1 W2 b+ L: H( h! E
  2. \brief System Reset
    * N5 R  ]' @+ Y) @$ b" \5 `% E/ y
  3. \details Initiates a system reset request to reset the MCU.( V3 l! }, b! V/ d. S0 r" ?
  4. /. Q) @2 l3 N- V" I6 h+ r4 u
  5. __STATIC_INLINE void __NVIC_SystemReset(void)
    ! I6 c2 K* n9 G
  6. {9 o6 k2 s3 S8 {* D7 d# M
  7. __DSB(); / Ensure all outstanding memory accesses included
    ; p$ s+ p! h- c5 W
  8. buffered write are completed before reset /
    4 r% W8 A$ W$ Y5 G4 ^) A
  9. SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |" l" n5 W2 O. Q( t
  10. (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |! x+ M% p% ]( j* m7 r( v0 L
  11. SCB_AIRCR_SYSRESETREQ_Msk ); / Keep priority group unchanged /
    - J# f: K$ p; v9 L$ f
  12. __DSB(); / Ensure completion of memory access */8 p& y! y8 R; P  E7 I% E
  13. <font face="Tahoma" size="2">" C9 c# ]$ d9 {9 }
  14. for(;<span style="color: rgb(77, 77, 77);">/* wait until reset */</span></font>
复制代码

% Z8 }0 N$ _" R* d" n6 c软件复位反映到实际硬件上,就是给硬件复位部分发一个复位信号:
收藏 评论0 发布时间:2021-12-19 16:00

举报

0个回答

所属标签

相似分享

官网相关资源

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