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

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

[复制链接]
STMCU小助手 发布时间:2021-12-19 16:00
14.STM32H7的电源,复位和时钟系统7 k" {1 U& T6 M: |# u
1)STM32的最小系统主要有五个部分组成:% h- q7 |2 N2 ^+ `' A. s
电源电路、时钟源电路、BOOT启动电路、调试接口电路、复位电路3 R9 c/ i; _! H
STM32最小系统介绍
. q2 j5 n/ Q& M; `/ z% j( P) F
; M! Q+ u0 f0 w+ |* `2)供电(别搞晕了哟)8 r8 Z- {8 r; P8 _# l0 y- e0 _3 @
' \# D+ r7 h" N. `( X( ?5 ~) h# T1 |0 D
20200108085640298.png
: T8 y" L/ n, R- i
: H& g! E5 ?: f, A5 g1 ]* ~
3)上电启动过程
# B; y9 [7 T# D当系统上电后,POR(Power on reset 上电复位)会检测VDD供电,当VDD大于POR设置的阀值时,将使能电压稳压器,注意看VDD那条线的变化。" j; C1 H, C8 f  R0 L/ I
看VCORE那条曲线,只要VOSRDY未就绪,就会一直处于复位状态。
  H" m4 g0 J+ U# c一旦VCORE正常输出,系统将走出复位状态,内部高速RC振荡器HSI将使能。4 p9 y) F5 M  Q# q
HSI稳定后,将开始系统初始化,主要是Flash和可选字节的加载,这些都是由硬件完成的,CPU也将以受限的方式运行(主要是指不允许对RAM进行写操作)。
  L. U& B+ M% y1 {5 S% z1 j软件程序初始化系统,包括供电配置。当供电配置完成后,等待ACTVOSRDY位置1,完成置1后,CPU就进入正常的运行的模式,允许读写RAM了。& v: Z% |! z4 t

' f  K: Q9 O0 d0 A0 t  `3 m4)为了实现各种低功耗模式,CPU和D1,D2,D3域支持的各种模式9 o+ I7 I& D6 w2 s8 f8 ?3 T
; T/ T% ?* P2 ^+ Q& j+ y) e) n
20200108092123480.png
4 r1 m' T" w9 U. e; y% A, b- W3 t
9 z- l& D' U, z- C% d0 g: H! O
5)电源去耦电容的选择
" c  v. `8 h. O  L每个电源对 (VDD/VSS, VDDA/VSSA …)必须使用下述的滤波陶瓷电容去耦。这些电容必须尽量靠近芯片引脚,以确保器件正常工作。不建议去掉滤波电容来降低PCB 尺寸或成本,这可能导致器件工作不正常。6 _* O; Y8 E3 ]- R

0 x0 J5 [1 P. f5 n6 F( g' m总结:电源去耦的最终目标是为了负载能够正常工作,使电源特性更加接近理想电源——能快速响应负载的电流需求、电压稳定、干净无噪声。使电路各部分之间通过电源产生的耦合干扰降至最小。
' F% r0 X1 O+ g; w& J. y: x
3 C/ Z# F' I' h
2020010814361752.png

) k7 C; t0 V, o3 U& h# D$ n0 L; b1 X- w! j6 p" R% P* x7 Q4 s, P
- A3 t( S0 e9 I+ q6 c
6)硬件复位# G8 n; h  H0 C* n3 [3 c
[1] 51单片机上电复位 (阻容复位) ,按键复位+ Y* q4 |! D5 ~
所以,51一般都使用阻容复位来让其cpu在上电后在复位重启一次。如下图,去掉SW-PB和R6就是一个普通的51阻容复位,上电瞬间因为电容的压降不可突变的原理,电容等同导通。电容C23和电阻R27之间RESET点的电位就是VC5的电压,一直使能复位端。上电后VC5对C23充电,RESET点的电位降低趋近于GND的电平,后复位解除CPU开始正常工作。(其实这图的R27有点大,C23有点小)' f& h4 m% w" U, G8 u; u
" X7 s* h, o7 V( j4 k
0e1937c02a27e284d534d6a541fa675e_hd.jpg
- v+ ]: W& H  F$ e

- x, H/ u7 T  ^/ a$ E作者:陈俊直5 P) U7 G% ?" b9 @% R
来源:知乎6 e& ]9 T( D0 S0 ]- W
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
% ?+ Y/ @  F; Y/ `# R, e  D
9 z* v* h: H# R+ H% m; |[2] STM32H7开发板的硬件复位原理图如下:
/ D( Y( Y4 u7 x8 w. @) A
20200108112004200.png
7 }0 q) D( z5 w) B; ?) }& G% ^  @

8 T1 k( |8 k: U7 L* C% y( hSTM32这款CPU的复位引脚是低电平有效,即NRST为低电平时,CPU处于复位状态。
0 G& k# z& E/ X: K" Q* }% ZR173单的RC复位电路。当系统上电瞬间,C114电容两端电压可以认为是0,CPU处于复位状态。3.3V电源通过R173给C114充电,当C114的电压升到CPU的高电平门槛电压时,CPU退出复位状态转入运行状态。" G. E! Q) Z' r- `
在设计电路时,需要选择适当的R值和C值,以保证NRST低电平持续时间满足CPU复位最小脉宽的要求。
: G5 V  B: X* w& q当按下S4轻触开关时,C114两端被短路接地,可实现手动复位CPU。8 U3 O6 r8 a0 ]8 f
8 a6 z1 w4 s. u* q0 p
" ~" w9 h! [# n' t" u/ P
7)复位序列
9 z, j  }' O- k' ?9 J& U& C3 m' Q硬件复位之后,CPU 内的时序逻辑电路首先完成如下两个工作(程序代码下载到内部flash为例,flash首地址0x0800 0000)' d* n- Q1 ?4 l
- f+ h) Z. A) O8 [" E$ o3 b
将0x08000000位置存放的堆栈栈顶地址存放到SP中(MSP)。
4 _/ e6 L. k8 j+ l将0x08000004 位置存放的向量地址装入 PC 程序计数器。, H7 ^* j' f5 g. ^& H! S8 {
CPU 从 PC 寄存器指向的物理地址取出第 1 条指令开始执行程序,也就是开始执行复位中断服务程序 Reset_Handler。2 V0 k' P1 l, p

9 c8 P4 c8 W* A% d( }6 g  C. x' Y
20200108113830739.png

0 b4 s% w  H5 l/ g9 H+ K: F" Y$ A0 p! A2 W
复位中断服务程序会调用SystemInit()函数来配置系统时钟、配置FMC总线上的外部SRAM/SDRAM,然后跳转到C 库中__main 函数。由C库中的__main 函数完成用户程序的初始化工作(比如:变量赋初值等),最后由__main 函数调用用户写的 main()函数开始执行 C 程序。
  m  ^; j8 M; R- x; N' q% y! T6 _0 F% Y6 U' O, k: [
8 w" c) z' I9 j; A1 Z
8)软件复位2 H: O8 f5 [( k; T' l
除了上电和手动复位,程序设计设置中还经常要用到软件复位,即调用一条函数就可以实现复位功能。此函数已经由CMSIS软件包中的core_cm7.h文件提供,函数如下:
0 ?+ A" A; v# i! u  `3 m' A
' _$ R0 |2 x5 m; t4 x. E
  1. /**
    % B# p! j4 j- L% r2 S4 b
  2. \brief System Reset
    . I* [: Z8 ^) P' B  m
  3. \details Initiates a system reset request to reset the MCU.. {$ _( F2 ?& D
  4. /' i( f1 Q3 {+ B# d( }% |' I7 b+ Z
  5. __STATIC_INLINE void __NVIC_SystemReset(void), k* O1 J: F1 f) `9 e3 o7 G. S
  6. {
    5 y  D$ i+ \6 `' Z
  7. __DSB(); / Ensure all outstanding memory accesses included
    ( k* ]" T! e) y
  8. buffered write are completed before reset /
    6 c: Q1 O& T8 l; Y
  9. SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
    3 |; ]1 @; R1 w7 {. r! T: I
  10. (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |
    ) @; h8 k0 N) O0 ~! S
  11. SCB_AIRCR_SYSRESETREQ_Msk ); / Keep priority group unchanged /
    $ H+ ~9 x% m1 k% ?; x! H
  12. __DSB(); / Ensure completion of memory access */. r" ]9 W- S( s
  13. <font face="Tahoma" size="2">
    " R7 E  G- O$ O- [1 I7 h& g! `
  14. for(;<span style="color: rgb(77, 77, 77);">/* wait until reset */</span></font>
复制代码

* Q; [& t* D4 [$ |, z软件复位反映到实际硬件上,就是给硬件复位部分发一个复位信号:
收藏 评论0 发布时间:2021-12-19 16:00

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版