STM32之最小系统设计详解

STM32最小系统可分为以下几个部分:电源电路、复位电路、时钟电路、BOOT启动电路、SWD调试电路。
1、电源电路
对于硬件产品,稳定可靠的电源供电是整个系统能够运行的前提。STM32芯片要求2.0~3.6V的操作电压,在实际工作中,硬件会通过串口连接线与PC相连,PC的USB接口电压是5V,所以需要设计一个5V转3.3V的电路。
在《STM32F10xxx硬件开发指南》手册中有如下要求:
R<code>V5GT9H1TYV8</code>P[M[PBZIH.png

如下图,5V电压通过AMS1117稳压电路后,输出3.3V的电压VDD,根据要求VDD要连接到外部稳定电容。
}A2W(@J3MI8ZGGD%7%3RRJE.png

2、复位电路
STM32集成了一个上电复位(POR)和掉电复位(PDR电路),当供电电压达到2V时就能正常工作,如果VDD低于特定的阈值(VPOR/VPDR),不需要外部电路STM32就一直处于复位模式。通常是低电平复位,上电复位就是在上电瞬间,电容充电,RESET出现短暂的低电平,低电平持续时间由电阻和电容共同决定。低电平持续时间计算方式:t=1.1RC,这里即为:t=1.1×10K×0.1uF=1.1ms,一般需求的复位信号持续时间在1ms左右。手动复位即如下图:按键按下时,RESET和地导通,RESET置低,实现复位。
TH3A2MYN9{KMJ}OYV%$PFHC.png

3、时钟电路
时钟对于STM32来说是及其重要的,下面是STM32的时钟树。STM32的系统时钟可以被三个不同的时钟源驱动:

HIS晶振时钟(高速内部时钟信号)
HSE晶振时钟(高速外部时钟信号)
PLL时钟

STM32还有两个二级时钟源:低速内部时钟LSI,40kHz频率,可以用来驱动独立看门狗和实时时钟RTC,用于从停机/待机模式下自动唤醒系统;低速外部时钟LSE,使用32.768kHz的石英晶体,用来驱动RTC时钟。
JJ2_4@UVHVQ72Y9H31D_}X4.png

对于100脚的产品,如果使用内部时钟,OSC_IN应该接地,OSC_OUT应该悬空。在下面的电路图中,主频时钟的选择用8MHz的原因是方便倍频,32.768kHz时钟的作用是用于精准计时电路和万年历。晶振两端的等效电容等于或接近负载电容,可以起到一定的滤波作用,滤除晶振波形中的高频杂波。电容大小可以选择10~40pF,在一定范围内增大电容会使震荡频率下降,减小电容会使震荡频率升高。晶振输入输出之间连接的电阻大小为1M,可以产生负反馈,保证放大器工作在高增益的线性区,同时电阻还起到限流作用,防止反相器驱动过载损坏晶振。
clock.png

4、BOOT启动电路

STM32F10xxx有三种启动模式,由BOOT[1:0]引脚决定,启动模式见下表。

M3I1A1SBMJ~C901W66ED{%B.png

这些选择将每个启动模式下的物理存储区域映射到存储块0(启动存储块),BOOT引脚的值在复位后SYSCLK的第四个上升沿时被锁定。通过设置BOOT1和BOOT0引脚的电平,选择在复位后需要启动的模式。当退出待机模式时,也需要监测BOOT引脚的值,因此在待机模式下,BOOT引脚也应该保持需要的启动模式所需的电平。

Q08YV%RA5}`[UP(6MQX88VT.png

SWD调试电路

STM32F10xxx使用了Cortex-M3内核,该内核内部已经拥有一个硬件调试模块,支持各种调试操作。硬件调试模块允许指令断点和数据断点,可以查询内核停止时的内外部状态,查询完成后内核与外设复原,程序继续执行,当使用调试器对STM32进行调试时,调试器会使用Cortex-M3内核的调试模块进行调试操作。
![V1N[]}Y(H}6EL17J}3OAM$T.png][9]

常用的调试下载方式有JTAG和SWD,SWD只需要连接四根线:SWCLK、SWDIO、GND和3.3V引脚。相比JTAG,SWD所需引脚更少,JTAG需要20管脚,SWD只需要两个引脚,不过为了避免浪费接口占用,调试接口和GPIO是可以复用的。在高速模式下,相比JTAG,SWD模式更加可靠,在大量数据的模式下,JTAG下载程序会失败,但SWD发生程序下载失败的几率会小很多。
SWD.png

本文链接:

https://www.veryxs.com/index.php/archives/67/
1 + 3 =
3 评论
    IdelManChrome 79Windows 10
    2020年01月30日 回复

    您好,我想问一下,您这一篇帖子中的电源设计的一部分问题:vbat不接电池的时候应该和100nf的电容一块接到vdd上,但是电容的是不是应该串接在vbat与vdd之间而不是将电容串接到vbat和vdd之间?

      IdelManChrome 79Windows 10
      2020年01月30日 回复

      @IdelMan 打错了应该是抱歉,vbat不接电池的时候应该和100nf的电容一块接到vdd上,但是电容的是不是应该串接在vbat与gnd之间而不是将电容串接到vbat和vdd之间?

        fswEdge 18Windows 10
        2020年02月03日 回复

        @IdelMan 可能我搞错了,应该是并联到VDD上吧,或者可以干脆悬空,只会影响备份寄存器的使用