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

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

[复制链接]
STMCU小助手 发布时间:2021-12-19 16:00
14.STM32H7的电源,复位和时钟系统
) S6 T: r, z  o1)STM32的最小系统主要有五个部分组成:! u  m: u1 p9 l" J" i2 \
电源电路、时钟源电路、BOOT启动电路、调试接口电路、复位电路
* @5 u+ o. i! DSTM32最小系统介绍# \( c+ F, }+ ^5 F: H- T

& K6 @/ W( u- K# G4 q2)供电(别搞晕了哟)0 t7 o/ m* J3 z4 @  F3 F2 l) l
% q$ B  a& h7 E& n) p; o
20200108085640298.png
; }9 ]" o3 {% k  h0 W5 p" h# Q# {

; E( `7 Z4 W1 ]; D, o' o3)上电启动过程8 |$ `/ x4 O9 e$ F2 k  {6 M  O' C
当系统上电后,POR(Power on reset 上电复位)会检测VDD供电,当VDD大于POR设置的阀值时,将使能电压稳压器,注意看VDD那条线的变化。
( Q# h* c4 ]( ~8 F3 k看VCORE那条曲线,只要VOSRDY未就绪,就会一直处于复位状态。6 e$ D2 a9 x1 B. s8 f+ `1 T
一旦VCORE正常输出,系统将走出复位状态,内部高速RC振荡器HSI将使能。
5 R1 e7 `4 s6 A& EHSI稳定后,将开始系统初始化,主要是Flash和可选字节的加载,这些都是由硬件完成的,CPU也将以受限的方式运行(主要是指不允许对RAM进行写操作)。
0 ~; i0 Q( j& q/ @# r3 x, v软件程序初始化系统,包括供电配置。当供电配置完成后,等待ACTVOSRDY位置1,完成置1后,CPU就进入正常的运行的模式,允许读写RAM了。
" M; d5 B6 N! D4 h3 [( C7 P
* a5 V. W& y& L; }, F% ~6 D% H5 T4)为了实现各种低功耗模式,CPU和D1,D2,D3域支持的各种模式
4 r5 b# l8 Z3 O& h" x( [9 T: o
3 x5 P0 ]$ X4 K7 l0 e- q( w+ x& _
20200108092123480.png

6 O0 i7 q7 j! e, D$ j" b3 _& Q2 c( W7 P
5)电源去耦电容的选择
3 n% u( j1 s, a! T: t. D每个电源对 (VDD/VSS, VDDA/VSSA …)必须使用下述的滤波陶瓷电容去耦。这些电容必须尽量靠近芯片引脚,以确保器件正常工作。不建议去掉滤波电容来降低PCB 尺寸或成本,这可能导致器件工作不正常。
) ~8 z8 N5 s- L; j+ P/ V, ~% f# B2 u( I/ ^8 w
总结:电源去耦的最终目标是为了负载能够正常工作,使电源特性更加接近理想电源——能快速响应负载的电流需求、电压稳定、干净无噪声。使电路各部分之间通过电源产生的耦合干扰降至最小。4 G! E5 D0 Z. ~0 Q0 h" {1 C/ b9 e
: U& U. c; f; ^& j6 q% I
2020010814361752.png

  ^- c) [3 {6 J7 [9 |' c
4 h# Q8 y& C5 b- W- Y7 T9 Y  q' F# y! I  z  n7 b: q
6)硬件复位
" N% a8 K: v' p2 O% a' f7 i( g[1] 51单片机上电复位 (阻容复位) ,按键复位! F& u( W, w- I/ d9 ?/ i  [
所以,51一般都使用阻容复位来让其cpu在上电后在复位重启一次。如下图,去掉SW-PB和R6就是一个普通的51阻容复位,上电瞬间因为电容的压降不可突变的原理,电容等同导通。电容C23和电阻R27之间RESET点的电位就是VC5的电压,一直使能复位端。上电后VC5对C23充电,RESET点的电位降低趋近于GND的电平,后复位解除CPU开始正常工作。(其实这图的R27有点大,C23有点小)0 c9 b8 P1 e( O& v2 g

9 M" l* D+ b. r& u0 _. ?
0e1937c02a27e284d534d6a541fa675e_hd.jpg

4 f6 E2 z- f0 V% h5 H& N
. f6 R* m  {1 l6 h' M作者:陈俊直
" d; h; `7 ^" P# n/ w; {8 F来源:知乎
3 y0 _  t, }3 q! i6 N3 f' i) Z著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
4 ^% L3 p9 G" V) ]" b8 w* O* {( x0 S5 u8 L* B9 v& f- ~5 B
[2] STM32H7开发板的硬件复位原理图如下:$ \" x) E( B7 h$ E
20200108112004200.png
6 R; y4 G& _: D/ t4 b# K

) i2 ?1 c8 m; D# ]$ X7 Q: V6 wSTM32这款CPU的复位引脚是低电平有效,即NRST为低电平时,CPU处于复位状态。0 z) m) C6 H9 {) ^* H
R173单的RC复位电路。当系统上电瞬间,C114电容两端电压可以认为是0,CPU处于复位状态。3.3V电源通过R173给C114充电,当C114的电压升到CPU的高电平门槛电压时,CPU退出复位状态转入运行状态。0 T/ ?9 P5 R3 h/ `: h
在设计电路时,需要选择适当的R值和C值,以保证NRST低电平持续时间满足CPU复位最小脉宽的要求。
, A8 D  ~4 q3 C当按下S4轻触开关时,C114两端被短路接地,可实现手动复位CPU。
, b! ~, g2 V: a8 G* M! Y( G. j% ~: I  C2 l8 F
" t" Q' Q5 n: C/ |4 j
7)复位序列4 [6 z1 u8 c% c
硬件复位之后,CPU 内的时序逻辑电路首先完成如下两个工作(程序代码下载到内部flash为例,flash首地址0x0800 0000)
4 x4 O- J- \( t
& N; e' L- w4 S将0x08000000位置存放的堆栈栈顶地址存放到SP中(MSP)。
  b  v/ F4 f: C: i" V将0x08000004 位置存放的向量地址装入 PC 程序计数器。& O, ^/ {6 O, W2 B
CPU 从 PC 寄存器指向的物理地址取出第 1 条指令开始执行程序,也就是开始执行复位中断服务程序 Reset_Handler。
# r. D) z0 w6 s) p) I( `, D# B% f1 U6 ]6 O: z5 M5 t
20200108113830739.png

* y+ {% h9 H$ x6 N; W2 ~; I
9 K5 Y6 \2 G$ Q9 e1 X" E复位中断服务程序会调用SystemInit()函数来配置系统时钟、配置FMC总线上的外部SRAM/SDRAM,然后跳转到C 库中__main 函数。由C库中的__main 函数完成用户程序的初始化工作(比如:变量赋初值等),最后由__main 函数调用用户写的 main()函数开始执行 C 程序。
1 ~3 d$ t. M( E7 T: }; i  C1 T3 s( y  ^

  D  a% s* ^" S; l, C8)软件复位
0 y) ^, O" G1 \除了上电和手动复位,程序设计设置中还经常要用到软件复位,即调用一条函数就可以实现复位功能。此函数已经由CMSIS软件包中的core_cm7.h文件提供,函数如下:! k7 j' n$ R* J1 ~: E" k
7 k+ P6 u$ b( k; k/ H1 u
  1. /**
    : b& M; O5 o4 m7 q) I1 f
  2. \brief System Reset4 S5 f+ Z! A( l
  3. \details Initiates a system reset request to reset the MCU.- ^/ X2 c% P7 i
  4. /* G8 G+ ~: w, d
  5. __STATIC_INLINE void __NVIC_SystemReset(void)$ i) B  i1 \2 T: z0 {" T
  6. {
    # p; a( o. Z. `- @' O5 P" u
  7. __DSB(); / Ensure all outstanding memory accesses included- c" A4 E# S0 _% P& i
  8. buffered write are completed before reset // r9 S# |& J) ?, Y3 S
  9. SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |0 m; B% j  h( d8 z: E& [
  10. (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |
    6 p5 J% G  ?( I' D  F8 n/ c
  11. SCB_AIRCR_SYSRESETREQ_Msk ); / Keep priority group unchanged /2 K; G; |: E3 ?) x! I! R
  12. __DSB(); / Ensure completion of memory access */& Q- j* c8 J" d9 s- a# A
  13. <font face="Tahoma" size="2">3 T7 i. Q! s  V. y# N. l( m( b) u5 E
  14. for(;<span style="color: rgb(77, 77, 77);">/* wait until reset */</span></font>
复制代码
1 e8 S# {/ r4 G- t
软件复位反映到实际硬件上,就是给硬件复位部分发一个复位信号:
收藏 评论0 发布时间:2021-12-19 16:00

举报

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