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

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

[复制链接]
STMCU小助手 发布时间:2021-12-19 16:00
14.STM32H7的电源,复位和时钟系统
% j4 k+ G) W- N: I* R) j0 a1)STM32的最小系统主要有五个部分组成:+ s1 |% v+ M9 E& p
电源电路、时钟源电路、BOOT启动电路、调试接口电路、复位电路
# d2 t) R1 u1 k; Z- c' `# eSTM32最小系统介绍
' ?+ H' X/ S3 n$ n$ y0 s9 I6 ]: c' t  `, E2 R6 @: b
2)供电(别搞晕了哟)
: J# k# z6 e( q1 ]- r( X0 r8 K. `9 b( t
20200108085640298.png

6 ?# J0 R0 ~5 o2 y. [1 @; P
/ Z, H6 v5 q0 H4 K% P3)上电启动过程8 m5 I! V, x# O. Z
当系统上电后,POR(Power on reset 上电复位)会检测VDD供电,当VDD大于POR设置的阀值时,将使能电压稳压器,注意看VDD那条线的变化。
  \2 z) @4 s; t1 v看VCORE那条曲线,只要VOSRDY未就绪,就会一直处于复位状态。9 _9 d! |2 Q8 g8 ?" g: i/ H% g( V7 U
一旦VCORE正常输出,系统将走出复位状态,内部高速RC振荡器HSI将使能。
/ u9 f6 a5 M+ A  U: U$ zHSI稳定后,将开始系统初始化,主要是Flash和可选字节的加载,这些都是由硬件完成的,CPU也将以受限的方式运行(主要是指不允许对RAM进行写操作)。
  d0 x& H6 @0 Z7 n: l" M* J软件程序初始化系统,包括供电配置。当供电配置完成后,等待ACTVOSRDY位置1,完成置1后,CPU就进入正常的运行的模式,允许读写RAM了。
, w4 u) P4 @1 \' n- \0 C; @6 R+ M' O' h9 S0 u1 r7 e* H
4)为了实现各种低功耗模式,CPU和D1,D2,D3域支持的各种模式
8 T7 x4 q9 }4 P- p- p9 Y( n) u# g2 j$ r$ i' Q7 S* v) s
20200108092123480.png

0 J& p# t& c, w# s8 I7 O6 B: q& P& H1 ?8 ~; M' S
5)电源去耦电容的选择1 v  E1 v8 [' E
每个电源对 (VDD/VSS, VDDA/VSSA …)必须使用下述的滤波陶瓷电容去耦。这些电容必须尽量靠近芯片引脚,以确保器件正常工作。不建议去掉滤波电容来降低PCB 尺寸或成本,这可能导致器件工作不正常。0 a8 p& a; Y9 Q( y9 C
2 W0 Z, @- N/ f
总结:电源去耦的最终目标是为了负载能够正常工作,使电源特性更加接近理想电源——能快速响应负载的电流需求、电压稳定、干净无噪声。使电路各部分之间通过电源产生的耦合干扰降至最小。
: _+ C3 O0 `0 h. r5 x5 s! ], r  i
3 x; {7 ?  C1 L* w7 z7 `: T* W. \- j
2020010814361752.png

& q; Z' ?  a7 }3 l) E
- {7 p3 {: y$ R
! W1 G: f. b9 H! M* t) r6)硬件复位
" b) H$ l8 B  v) w$ T- [( G8 X" n[1] 51单片机上电复位 (阻容复位) ,按键复位
5 a, z; b- _" W( U. l' P所以,51一般都使用阻容复位来让其cpu在上电后在复位重启一次。如下图,去掉SW-PB和R6就是一个普通的51阻容复位,上电瞬间因为电容的压降不可突变的原理,电容等同导通。电容C23和电阻R27之间RESET点的电位就是VC5的电压,一直使能复位端。上电后VC5对C23充电,RESET点的电位降低趋近于GND的电平,后复位解除CPU开始正常工作。(其实这图的R27有点大,C23有点小)4 r: B0 H# \+ @$ M8 A8 p: b5 Z
" ]; K1 i5 q1 n2 ~9 _. ^
0e1937c02a27e284d534d6a541fa675e_hd.jpg

% G4 x/ v7 K1 c! `+ w
! R- P5 s, {' z  U" e' w7 c作者:陈俊直* s; W+ Z7 p  a6 V( P, k: T
来源:知乎
! H: n0 k1 V5 r) T3 X: j  O6 o2 O. x著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。/ c; R# ~* D! e# b

# M/ E6 D1 F! S: t# D! ?, i[2] STM32H7开发板的硬件复位原理图如下:% X2 l0 W) O4 ~0 T& F
20200108112004200.png

6 s$ ~! d& ]' H4 u, q
/ n5 c9 n' ^* M, CSTM32这款CPU的复位引脚是低电平有效,即NRST为低电平时,CPU处于复位状态。
' R1 u8 F. |2 c' s8 [+ ]# MR173单的RC复位电路。当系统上电瞬间,C114电容两端电压可以认为是0,CPU处于复位状态。3.3V电源通过R173给C114充电,当C114的电压升到CPU的高电平门槛电压时,CPU退出复位状态转入运行状态。
4 y0 X7 w! F) d' [" v在设计电路时,需要选择适当的R值和C值,以保证NRST低电平持续时间满足CPU复位最小脉宽的要求。
% d! K0 ^8 X/ P+ X当按下S4轻触开关时,C114两端被短路接地,可实现手动复位CPU。
& Q# L  v3 m! a3 V+ p" ]8 o8 p+ w# u* Y0 Q( \
+ @+ i6 @6 ]- i) c$ Q
7)复位序列0 ~3 t% q0 @& ^( Y, I  d
硬件复位之后,CPU 内的时序逻辑电路首先完成如下两个工作(程序代码下载到内部flash为例,flash首地址0x0800 0000). h% j& a; I2 T. d$ \0 x

' _4 B1 c! `: d5 q, ?- r将0x08000000位置存放的堆栈栈顶地址存放到SP中(MSP)。
* O3 D9 O! ^7 [- P+ m; D将0x08000004 位置存放的向量地址装入 PC 程序计数器。
( n; t9 `  n3 x' _! S: CCPU 从 PC 寄存器指向的物理地址取出第 1 条指令开始执行程序,也就是开始执行复位中断服务程序 Reset_Handler。/ B$ `+ M: C: f. `: A$ o
8 I8 m) P" f! h
20200108113830739.png
8 r8 b9 \# t. e9 K4 q' ~* s/ v
& S* C# ]1 D, a" l; D# W
复位中断服务程序会调用SystemInit()函数来配置系统时钟、配置FMC总线上的外部SRAM/SDRAM,然后跳转到C 库中__main 函数。由C库中的__main 函数完成用户程序的初始化工作(比如:变量赋初值等),最后由__main 函数调用用户写的 main()函数开始执行 C 程序。: t/ L# C& M+ e) k

! I# p6 o* K5 c' t+ y; s, {$ C; P) m+ q. _& i1 s7 ]( k
8)软件复位" f6 U- ^; R0 W
除了上电和手动复位,程序设计设置中还经常要用到软件复位,即调用一条函数就可以实现复位功能。此函数已经由CMSIS软件包中的core_cm7.h文件提供,函数如下:
- Y& J# f8 L7 j+ J6 s) [  |' E$ r* ~+ r( h$ o% n% l
  1. /**
    9 q' D/ t) f* P3 B
  2. \brief System Reset
    ' |; H7 w1 u5 j+ j+ f5 l& [8 z
  3. \details Initiates a system reset request to reset the MCU.- M2 U# |! s" @& r% G$ n; A
  4. /$ U. `3 L, z: K6 G/ O4 L9 p
  5. __STATIC_INLINE void __NVIC_SystemReset(void)
    # f; `, W! s! O
  6. {; N3 h& ?4 p0 M" k1 n7 K6 c" ?
  7. __DSB(); / Ensure all outstanding memory accesses included4 s6 v! ?: Q( N, X9 L2 g& T/ Z' [
  8. buffered write are completed before reset /% u. g8 `8 p/ [- D$ O
  9. SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
    - \2 m, W) m% t5 k: t: }
  10. (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |
      n1 {# k+ [5 ^1 c
  11. SCB_AIRCR_SYSRESETREQ_Msk ); / Keep priority group unchanged /% {2 Z1 G3 u+ o
  12. __DSB(); / Ensure completion of memory access */
    ; \  e% k) b7 P
  13. <font face="Tahoma" size="2">% R( k' m/ L* c9 e: ?( U3 c- z
  14. for(;<span style="color: rgb(77, 77, 77);">/* wait until reset */</span></font>
复制代码

8 K. a' r  c7 F; h软件复位反映到实际硬件上,就是给硬件复位部分发一个复位信号:
收藏 评论0 发布时间:2021-12-19 16:00

举报

0个回答

所属标签

相似分享

官网相关资源

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