废话不多说,我们进入正题,说说STM32最小系统的基本组成吧!
1、STM32的最小系统硬件组件是什么?
STM32最小系统的硬件组成主要包括:电源电路、复位电路、时钟电路、调试接口电路、启动电路。
电源:一般采用3.3V输入作为STM32芯片的工作电压。 实际中,很多使用LDO将5V转换为3.3V供电。 另外电路中还加入了多个0.01uf的去耦电容,对输入电压进行滤波,稳定输入电压。 。
复位:STM32中有三种复位方式,分别是:上电复位、手动复位、程序自动复位。 上电复位是指芯片上电时基于外部复位电路的复位; 手动复位是指通过外部复位电路进行手动复位; 程序复位是指通过软件中的代码对STM32芯片进行复位。 。
2. 复位电路
STM32单片机的复位电路的作用是在复位时将单片机的程序计数器返回到地址0000H,从而使程序能够从头开始重新执行。
复位操作还会将一些寄存器和存储单元的值复位到初始设定值,让单片机重新开始执行。
STM32单片机的三种复位方式的区别:
1)上电复位:单片机上电时复位,不需要人为干预。 复位自动完成;
2)手动复位:通过外部复位电路,如按钮、开关等进行手动复位;
3)程序复位:通过程序内部的程序复位。 一般有内核复位功能、看门狗复位等软件复位方式。
(1) 上电复位:
上电复位需要外部电容。
上图中的电路中,上电复位电路由VCC、C1、R2组成。
假设单片机在RESET端输入高电平时复位,则上电复位的原理是:上电瞬间,C1电容的充电电流很大,该电容相当于一个短路。 RESET 有一个短暂的高电平。 这个高电平会使单片机复位。 当电容C1两端的电压达到VCC时,充满电的电容C1相当于开路,RESET端变为低电平,单片机开始运行。 从而实现自动上电复位。
有一个问题需要注意:在自动复位电路中,RESET端的高电平必须保持一定的时间才能完成复位。 这个时间一般需要1ms左右。
高电平持续时间由上电复位电路中的电阻和电容决定。 计算公式如下:
t = 1.1RC(电平持续时间计算公式)
上图中,高电平持续时间为:t = 1.1*10K*0.1uF = 1.1ms。 要求高电平复位信号持续时间大于1ms,才能实现复位操作。
(2)硬件复位:
还是可以参考图片进行硬件复位:
当按下按钮S5时,RESET端为高电平,从而使单片机复位。 松开按钮S5,单片机正常工作。
3、时钟(晶振)电路
3.1. 时钟电路简介
一个简单的时钟电路如下:
时钟电路的组成为:晶振+启动电容+反馈电阻(MΩ级)
晶振:一般选择8MHZ,方便倍频。 常见的晶体振荡器包括:
主动:更稳定、性价比更高。 需要连接电源,不需要外围电路。 3针单线输出
被动式:基本够准确、方便、灵活、便宜
两者最大的区别在于是否需要单独供电。
无源晶振不需要电源,但需要外接启动电容; 有源晶振需要提供工作电压。
(1)晶振两端电容的作用:
1、使晶振两端的等效电容等于或接近负载电容;
2、起到一定的滤波作用,滤除晶振波形中的高频杂波;
启动电容的大小一般为10~40pF。 当然,您可以根据不同单片机的手册进行检查。 如果说明书没有说明,一般选择20pF或30pF。 这是一个经验值。
调整电容可以微调振荡频率:
一般来说,增大电容会降低振荡频率,减小电容会提高振荡频率;
()反馈电阻:1M 负反馈还起到限流作用。
晶振电路主要分析如下:
1、连接晶振的芯片内部是线性运算放大器,将输入反转180度后输出。 晶体振荡器处的负载电容和电阻组成的网络提供了另外180度的相移; 整个环路的相移为360度,满足振荡的相位条件;
2、晶振输入输出连接的电阻产生负反馈,保证放大器工作在高增益线性区,一般为M欧级;
3、限流功能,防止逆变器输出过驱动晶振,损坏晶振。 有些晶振不需要它,因为这个电阻已经集成到晶振中了。
3.2. 时钟电路应用
STM32时钟树:
可以使用三种不同的时钟源来驱动系统时钟(SYSCLK):
1) HSI 振荡器时钟
2) HSE 振荡器时钟
3) 锁相环时钟
这些器件具有以下 2 个辅助时钟源:
1)40kHz低速内部RC,可用于驱动独立看门狗,并通过程序选择驱动RTC。 RTC 用于自动将系统从关机/待机模式唤醒。
2) 也可以通过程序选择使用32.768kHz低速外部晶振来驱动RTC(RTCCLK)。
不使用时,任一时钟源都可以独立启用或禁用,从而优化系统功耗。
3.2.1. STM32的三个内部时钟
恒生指数时钟:
HSI 时钟信号由内部 8MHz RC 振荡器产生,可直接用作系统时钟,也可经 2 分频后用作 PLL 输入。HSI RC 振荡器提供系统时钟,无需任何外部元件。 其启动时间比HSE晶振短。 然而,即使经过校准,其时钟频率精度也很差。 当HSI作为PLL时钟的输入时,系统时钟可以获得的最大频率为64MHz。
LSI时钟:LSI RC起到低功耗时钟源的作用,可以在关机和待机模式下保持运行,为独立看门狗和自动唤醒单元提供时钟。 LSI 时钟频率约为 40kHz(30kHz 至 60kHz 之间)。
PLL时钟:内部PLL可用于倍频HSI RC的输出时钟或HSE晶振的输出时钟。
3.2.2. 两个外部时钟
HSE时钟:高速外部时钟信号(HSE)由以下两个时钟源产生:
1) HSE 外部晶体/陶瓷谐振器
2) HSE用户外部时钟
为了减少时钟输出的失真并缩短启动稳定时间,晶体/陶瓷谐振器和负载电容器必须尽可能靠近振荡器引脚放置。 负载电容值必须根据所选振荡器进行调整。
LSE 时钟:LSE 晶体是 32.768kHz 低速外部晶体或陶瓷谐振器。 它为实时时钟或其他计时功能提供低功耗且精确的时钟源。
4.启动(BOOT)电路
可以选择STM32芯片的启动模式。 通过启动模式选择端口(BOOT)来选择模式。 有两个选项:BOOT(B1)和BOOT2(B2)。 启动模式选择方法如下图所示:
STM32的三种启动模式对应的存储介质均内置于芯片内。 他们是:
1) 用户闪存=芯片内置的闪存。
2) SRAM = 芯片内置的RAM区域就是存储器。
3)系统内存=芯片内部的特定区域。 芯片出厂时,在该区域预设了一个Bootloader,即俗称的ISP程序。 芯片出厂后,任何人都无法修改或擦除该区域的内容,即该区域是一个ROM区域,使用USART1作为通信口。
5. 电路调试与下载
STM32有两个调试接口,JTAG是5针,SWD是2线串口(共四线)。 下载电路除前两种外,还有串口下载和ISP下载。
例如常用的JTAG程序下载和电路调试:
关于作者:
我是一名1995年出生的技术人,从事嵌入式软件开发,注重技术成长和技术分享。 目标是每天进步一点点,通过科技改变生活,创造属于自己的美好未来! 如果您也对嵌入式感兴趣,请关注我!