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

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

[复制链接]
STMCU小助手 发布时间:2021-12-19 16:00
14.STM32H7的电源,复位和时钟系统' g4 ]) D8 C+ ]. L) q2 y
1)STM32的最小系统主要有五个部分组成:
: f( M& x( j$ i0 _% ?电源电路、时钟源电路、BOOT启动电路、调试接口电路、复位电路
- C3 Q* f" p) K# x4 C) M$ [; w7 xSTM32最小系统介绍2 c1 E. J- _0 a! g6 f' w4 {
2 i2 ~. B* H0 m  y
2)供电(别搞晕了哟)
9 m* x$ }6 ~4 m2 i5 p; N" u( F- D
20200108085640298.png

" V# G2 {( e8 [0 I& H3 Z
# J1 s4 b6 S+ _; [3 C3)上电启动过程
. u2 H  T4 W9 ^# n& \. w5 b+ I# k- v当系统上电后,POR(Power on reset 上电复位)会检测VDD供电,当VDD大于POR设置的阀值时,将使能电压稳压器,注意看VDD那条线的变化。  g- o* z0 u3 w4 j. S: N
看VCORE那条曲线,只要VOSRDY未就绪,就会一直处于复位状态。
3 w9 U6 z5 u( z: b1 q) z. K一旦VCORE正常输出,系统将走出复位状态,内部高速RC振荡器HSI将使能。. G7 @% T- s, h5 @; R
HSI稳定后,将开始系统初始化,主要是Flash和可选字节的加载,这些都是由硬件完成的,CPU也将以受限的方式运行(主要是指不允许对RAM进行写操作)。4 P, v# f* k$ g% I" P0 i) ^
软件程序初始化系统,包括供电配置。当供电配置完成后,等待ACTVOSRDY位置1,完成置1后,CPU就进入正常的运行的模式,允许读写RAM了。
( L$ L" F- p1 M; V3 k0 L* c
6 D) q+ U5 o' [' t" S4)为了实现各种低功耗模式,CPU和D1,D2,D3域支持的各种模式% y0 Z) n. ^  q
+ h4 V; X$ p# X4 \
20200108092123480.png

  b+ O) @0 i& b0 s4 _+ K7 q) M) @7 y2 o: R; V/ m8 E' b
5)电源去耦电容的选择% j' n9 |9 P9 U' Z6 Q7 ?2 g
每个电源对 (VDD/VSS, VDDA/VSSA …)必须使用下述的滤波陶瓷电容去耦。这些电容必须尽量靠近芯片引脚,以确保器件正常工作。不建议去掉滤波电容来降低PCB 尺寸或成本,这可能导致器件工作不正常。
9 ]1 q6 n2 O; r! ~& A. x; a$ }9 q, y3 s( O* V
总结:电源去耦的最终目标是为了负载能够正常工作,使电源特性更加接近理想电源——能快速响应负载的电流需求、电压稳定、干净无噪声。使电路各部分之间通过电源产生的耦合干扰降至最小。
8 d& |  L$ w+ ^: H! K9 x
! h# C* D* o  u0 L) Y7 g* Q8 C" u
2020010814361752.png

: }8 \5 A/ @7 x$ |; t3 n4 n! ]! Z8 c
  m) o% _* T+ t
9 g, ~. o( W% W7 I$ \4 v9 Q% L6)硬件复位4 K# z" h* X5 }' I2 Q
[1] 51单片机上电复位 (阻容复位) ,按键复位
8 e1 u7 c7 U& d8 N- j8 {' \所以,51一般都使用阻容复位来让其cpu在上电后在复位重启一次。如下图,去掉SW-PB和R6就是一个普通的51阻容复位,上电瞬间因为电容的压降不可突变的原理,电容等同导通。电容C23和电阻R27之间RESET点的电位就是VC5的电压,一直使能复位端。上电后VC5对C23充电,RESET点的电位降低趋近于GND的电平,后复位解除CPU开始正常工作。(其实这图的R27有点大,C23有点小)
& s4 W1 O9 ?( G9 c" E7 z' s+ M2 i  p8 @; ^
0e1937c02a27e284d534d6a541fa675e_hd.jpg
/ ?% O6 N4 [5 Z# p% [1 M

( t: }5 a0 d. R( i5 {作者:陈俊直
" g( w9 t/ ]7 V- o* ~. ]来源:知乎
* r7 [& ]9 M- z$ I3 p著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。! x* c2 D/ m: `7 n
& o% z9 f' f9 F$ x6 _
[2] STM32H7开发板的硬件复位原理图如下:
+ l% x$ \* u4 \4 u, J' E! y# K
20200108112004200.png
3 d9 I' o: n, P, S
- [- T) I! o" j9 a- j* i# H4 z
STM32这款CPU的复位引脚是低电平有效,即NRST为低电平时,CPU处于复位状态。
5 y5 o$ d+ x$ d5 T7 B- p: IR173单的RC复位电路。当系统上电瞬间,C114电容两端电压可以认为是0,CPU处于复位状态。3.3V电源通过R173给C114充电,当C114的电压升到CPU的高电平门槛电压时,CPU退出复位状态转入运行状态。. s. s: b. h+ B5 ^
在设计电路时,需要选择适当的R值和C值,以保证NRST低电平持续时间满足CPU复位最小脉宽的要求。8 F" P2 J% Y/ `( o- H
当按下S4轻触开关时,C114两端被短路接地,可实现手动复位CPU。
1 H! ~' z4 s7 a/ r$ }0 J; F8 ~
; `/ \1 Q7 x" u4 n# h/ z6 b9 }9 ?
' O4 v/ k: R6 ]+ i0 b& J" h, ^, D( g7)复位序列
; E5 ]! W% a7 P' X4 [$ {硬件复位之后,CPU 内的时序逻辑电路首先完成如下两个工作(程序代码下载到内部flash为例,flash首地址0x0800 0000)$ K, R0 Q  e5 R4 k0 \  D; ?

% h% P+ ?/ t0 [5 a" V将0x08000000位置存放的堆栈栈顶地址存放到SP中(MSP)。
) Q6 Y9 S5 f, _( ~. v6 o% {6 V将0x08000004 位置存放的向量地址装入 PC 程序计数器。
" L: J( Y. f3 [- H  S/ OCPU 从 PC 寄存器指向的物理地址取出第 1 条指令开始执行程序,也就是开始执行复位中断服务程序 Reset_Handler。8 s3 h6 ^% \$ Z, b

; I2 e1 o: V/ n# h, n5 k
20200108113830739.png
9 o9 V% a  I$ I9 f: ], B- b. G
- `8 `9 i. r6 j* l- J
复位中断服务程序会调用SystemInit()函数来配置系统时钟、配置FMC总线上的外部SRAM/SDRAM,然后跳转到C 库中__main 函数。由C库中的__main 函数完成用户程序的初始化工作(比如:变量赋初值等),最后由__main 函数调用用户写的 main()函数开始执行 C 程序。
% ~8 K+ e/ T& P% ^) K6 n1 a& F1 e0 N- z5 a
3 Y9 Q1 l8 A. t" L) y
8)软件复位
4 c" n" s% _0 c* @7 r$ E7 {! C除了上电和手动复位,程序设计设置中还经常要用到软件复位,即调用一条函数就可以实现复位功能。此函数已经由CMSIS软件包中的core_cm7.h文件提供,函数如下:
+ C6 W6 q6 J: g# P& {/ ?3 K9 C9 }0 n- }
  1. /**. a0 M: A* u4 B' q
  2. \brief System Reset
    % B: L; _0 s3 u8 A$ _' y
  3. \details Initiates a system reset request to reset the MCU./ |/ p+ g" ]; y( ~
  4. /
    " r+ I( E1 s: a# e+ s5 U) Z
  5. __STATIC_INLINE void __NVIC_SystemReset(void)
    / I! G0 I5 }# m; W! @" T4 _. v6 T/ j
  6. {
    4 G$ ?' s3 J  y( F; y( {
  7. __DSB(); / Ensure all outstanding memory accesses included
    $ Y% g. E$ B  B" V+ Z5 {
  8. buffered write are completed before reset /
    " C0 l- p# u, v
  9. SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
    ' e0 `$ j9 G9 ^) k* ^
  10. (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |2 t7 z& R) a" l
  11. SCB_AIRCR_SYSRESETREQ_Msk ); / Keep priority group unchanged /
    - Y% v' o: q7 V) j/ }, G7 l5 Z6 x
  12. __DSB(); / Ensure completion of memory access */7 M* H; [- l3 C% x# w$ R$ U
  13. <font face="Tahoma" size="2">
    + Q/ h4 t# d* b
  14. for(;<span style="color: rgb(77, 77, 77);">/* wait until reset */</span></font>
复制代码

2 }' {* X  o* t3 ^* E/ g5 e( ]$ r$ \软件复位反映到实际硬件上,就是给硬件复位部分发一个复位信号:
收藏 评论0 发布时间:2021-12-19 16:00

举报

0个回答

所属标签

相似分享

官网相关资源

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