STM32之最小系统设计详解

@fsw  April 25, 2019

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

阅读量:390

添加新评论