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

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

[复制链接]
STMCU小助手 发布时间:2021-12-19 16:00
14.STM32H7的电源,复位和时钟系统
0 I5 S  R# U( H/ m2 x1)STM32的最小系统主要有五个部分组成:
6 I- E: ]1 }) I- Y0 U6 E电源电路、时钟源电路、BOOT启动电路、调试接口电路、复位电路
- D- L# |: Y, |$ C3 p9 x. fSTM32最小系统介绍
& f# p" z7 s# X2 j  c, t/ {3 m, M' i( x  ^- l2 A3 e/ q( h
2)供电(别搞晕了哟)0 j, F% ?6 G9 b0 Z6 R) y0 o
6 k1 T/ A# g- Z- h( F$ r% J
20200108085640298.png

% m' Z8 P& ?, T- h
8 k9 N; w& q4 {6 e' k  L3)上电启动过程
* T4 c5 ~) d5 T8 U当系统上电后,POR(Power on reset 上电复位)会检测VDD供电,当VDD大于POR设置的阀值时,将使能电压稳压器,注意看VDD那条线的变化。1 p6 ~  w# E- V  e$ ?
看VCORE那条曲线,只要VOSRDY未就绪,就会一直处于复位状态。+ G0 Z6 c' T* {9 Z! Q5 P
一旦VCORE正常输出,系统将走出复位状态,内部高速RC振荡器HSI将使能。8 b* B; ~; a% Y
HSI稳定后,将开始系统初始化,主要是Flash和可选字节的加载,这些都是由硬件完成的,CPU也将以受限的方式运行(主要是指不允许对RAM进行写操作)。
9 S. N. p4 a  L! w' d6 l( S软件程序初始化系统,包括供电配置。当供电配置完成后,等待ACTVOSRDY位置1,完成置1后,CPU就进入正常的运行的模式,允许读写RAM了。
' n. Z" K( D* _( x# F; i1 @. Q
4 p1 A2 d" b* S' e4)为了实现各种低功耗模式,CPU和D1,D2,D3域支持的各种模式& {; H7 d# @* ]! A! }* g  Q0 r

! J- h2 z9 r# Y# m7 z, p9 z3 {
20200108092123480.png

& \1 E& a# d% Q" H$ c5 p& L! {' ^/ }- t, m
5)电源去耦电容的选择
6 Q, W: w+ ]  b( Q& h# L+ `2 [- b每个电源对 (VDD/VSS, VDDA/VSSA …)必须使用下述的滤波陶瓷电容去耦。这些电容必须尽量靠近芯片引脚,以确保器件正常工作。不建议去掉滤波电容来降低PCB 尺寸或成本,这可能导致器件工作不正常。4 F/ p1 _: p: k& _; j/ Q* j8 X

0 \& y8 Z" ~) j. @+ c总结:电源去耦的最终目标是为了负载能够正常工作,使电源特性更加接近理想电源——能快速响应负载的电流需求、电压稳定、干净无噪声。使电路各部分之间通过电源产生的耦合干扰降至最小。
( H0 X4 ?2 V" A/ F
8 |0 z, m+ M  K7 C' j" r- R
2020010814361752.png

! O% S3 M0 [& u' A
: l8 X/ M7 B) f- F% H4 b( S( z2 p) p$ C
. t; L. ]1 I) @" t! z0 o+ N6)硬件复位: S# W+ H& h" Q) I* v- J& B* B* M
[1] 51单片机上电复位 (阻容复位) ,按键复位
3 T# {5 h, {7 ?( K1 b  U+ [( m2 L所以,51一般都使用阻容复位来让其cpu在上电后在复位重启一次。如下图,去掉SW-PB和R6就是一个普通的51阻容复位,上电瞬间因为电容的压降不可突变的原理,电容等同导通。电容C23和电阻R27之间RESET点的电位就是VC5的电压,一直使能复位端。上电后VC5对C23充电,RESET点的电位降低趋近于GND的电平,后复位解除CPU开始正常工作。(其实这图的R27有点大,C23有点小)
' r* |0 O1 L" L6 `
" O2 Y2 }6 l  x5 X$ j( k) @
0e1937c02a27e284d534d6a541fa675e_hd.jpg

- @! r" R3 ~% ]9 `; L
# ?8 \; a/ i( X$ Q9 W$ M: \& L作者:陈俊直( ~4 K! s5 |. \+ _
来源:知乎
6 c6 ~8 A8 Q- o- H著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。- e! f: c1 r" z  p9 a, W6 [$ Q$ x" G

/ E" O# ?8 t/ F( p' r2 w6 w9 Y[2] STM32H7开发板的硬件复位原理图如下:. ^& ?! v% T9 v  I
20200108112004200.png

6 {/ L4 p; Y3 ^! j+ {' s9 B8 H* ~& {& F
STM32这款CPU的复位引脚是低电平有效,即NRST为低电平时,CPU处于复位状态。1 o& H' v$ F6 y( P, k3 b$ g
R173单的RC复位电路。当系统上电瞬间,C114电容两端电压可以认为是0,CPU处于复位状态。3.3V电源通过R173给C114充电,当C114的电压升到CPU的高电平门槛电压时,CPU退出复位状态转入运行状态。3 [3 F( `9 i7 I$ V3 P: E1 f- R& F
在设计电路时,需要选择适当的R值和C值,以保证NRST低电平持续时间满足CPU复位最小脉宽的要求。
: s# i0 k; G$ f7 O0 N4 o当按下S4轻触开关时,C114两端被短路接地,可实现手动复位CPU。
/ a, Q$ d! q! L1 ]* y3 p5 l# V- E9 i2 M0 X( b

$ m/ P7 I9 J: D! x7)复位序列
- L+ [5 @& N. j% e, X0 e# i: N硬件复位之后,CPU 内的时序逻辑电路首先完成如下两个工作(程序代码下载到内部flash为例,flash首地址0x0800 0000)1 I% E  A- W$ x1 j2 y  E
: i2 I2 X2 n" T- h4 m% U: \
将0x08000000位置存放的堆栈栈顶地址存放到SP中(MSP)。
+ T+ w) j, m7 Y" H将0x08000004 位置存放的向量地址装入 PC 程序计数器。/ v, ]) a3 A1 X! T5 G
CPU 从 PC 寄存器指向的物理地址取出第 1 条指令开始执行程序,也就是开始执行复位中断服务程序 Reset_Handler。. @' F1 e; Z. \2 ~2 i5 b* Y8 G, a
- K$ k, O) d+ |! m: m
20200108113830739.png
6 \1 r* E5 q% P3 V
/ h9 `3 l/ w% Z4 J
复位中断服务程序会调用SystemInit()函数来配置系统时钟、配置FMC总线上的外部SRAM/SDRAM,然后跳转到C 库中__main 函数。由C库中的__main 函数完成用户程序的初始化工作(比如:变量赋初值等),最后由__main 函数调用用户写的 main()函数开始执行 C 程序。
3 Z3 q. I0 O" l0 S, \, |- t/ D  I0 x
' t3 d& v: i3 C: z
8)软件复位. k+ l& Y# [9 `, O' t
除了上电和手动复位,程序设计设置中还经常要用到软件复位,即调用一条函数就可以实现复位功能。此函数已经由CMSIS软件包中的core_cm7.h文件提供,函数如下:
: |$ Z* T# W$ _4 a8 V& ~
" L$ P7 o; M6 i8 ?8 i
  1. /**) J! I: m. d/ P" W7 ^1 r& Y2 N
  2. \brief System Reset0 Z5 x% n6 `2 b; ~- u: p5 I: u* q
  3. \details Initiates a system reset request to reset the MCU.
    ; Y1 E" i0 w) k
  4. /
    . k% ?& p( A' k4 I: K* B0 m
  5. __STATIC_INLINE void __NVIC_SystemReset(void)
    , ]5 d) i$ t1 I0 B' O5 ^% `0 V
  6. {# ]$ B( [5 t% z! M
  7. __DSB(); / Ensure all outstanding memory accesses included# S" L, N4 g5 K
  8. buffered write are completed before reset /
    ; i' D$ m. ^7 T- d& W1 v( j
  9. SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
    4 O" e! T; X5 X1 Y
  10. (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |
    2 k  `% S9 n: ]; Q+ \
  11. SCB_AIRCR_SYSRESETREQ_Msk ); / Keep priority group unchanged /
    % F- A" L, {2 b8 R2 B% A
  12. __DSB(); / Ensure completion of memory access */
    & w4 x- s+ X: t7 u
  13. <font face="Tahoma" size="2">
    . p8 P$ m+ k. j, Z
  14. for(;<span style="color: rgb(77, 77, 77);">/* wait until reset */</span></font>
复制代码
, G$ z6 h. L' i$ X* J' m, Q- I
软件复位反映到实际硬件上,就是给硬件复位部分发一个复位信号:
收藏 评论0 发布时间:2021-12-19 16:00

举报

0个回答

所属标签

相似分享

官网相关资源

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