一,什么是STM32?
STM32是一款由意法半导体公司开发的32位微控制器;其中ST指意法半导体;M指MCU或MPU,32指32 位。
STM32覆盖了Cortex-M的多种系列,包括M0、M0+、M3、M7等。在分类上,STM32有很多系列,可以满足市场的各种需求,从内核上分有Cortex-M0、M3、M4 和 M7 这几种,每个内核又大概分为主流、高性能和低功耗。本系列基于高性能的Cortex-M4 内核。
二,最小系统
可以保证stm32正常工作的系统,我们称之为最小系统,它包含STM32主控芯片,电源电路,晶振电路,复位电路,BOOT启动电路,下载调试电路。
3.1 VDD/VSS引脚
在电子电路中,VDD和VSS是常见的术语,它们分别表示正电源和地。
VDD引脚表示正电源,为电路的正电位点。大多数集成电路和微控制器都需要一个稳定正电源电压来正常工作,而VDD引脚则是提供这种电压的主要来源。例如,STM32的工作电压为2.0~3.6V,通过内置的电压调节器提供所需的1.8V电源。当主电源VDD掉电后,通过VBAT脚为实时时钟(RTC)和备份寄存器提供电源。
VSS引脚通常表示地,也就是电路的零电位点。所有的电路信号参考都是相对于VSS引脚的电位。VSS引脚通常通过接地线连接到地,提供了一个参考电位,使得电路中的信号可以被正确地测量和处理。在编程中,VSS引脚的连接通常是在硬件设计和布线过程中完成的,但在某些特定的应用中,编程也可以涉及对VSS引脚的配置和控制。
3.2 VDDA/VSSA引脚
VDDA和VSSA是STM32中用于为模拟器件提供电源的引脚。
VDDA引脚表示模拟器件的工作电压。在STM32中,当需要使用ADC时,VDDA引脚通常绑定到VSSA,以确保所有模拟器件的参考都相对于VSSA。这有助于提高ADC转换的精确度。
VSSA引脚表示模拟器件的公共端地。它是模拟电路的地参考。在STM32中,ADC和其他模拟器件的供电和地参考都通过VSSA引脚实现。
3.3 VREF+/VREF-引脚
VREF+和VREF-是STM32中用于提供参考电压的引脚。
VREF+引脚可以连接一个单独的外部参考电压,范围在2.0V~VDDA,但不能超过VDDA,否则就超过了模拟器件的最大供电电压。在100引脚的封装中,VREF-是A/D的参考,当需要使用时,必须绑定到VSSA(使得所有模拟器件的参考都相对于VSSA)。
VREF-引脚是参考电压输入引脚负极。在64及更少的引脚中,VREF-和VREF+是不可用的,在内部被接到一个ADC电压提供源(VDDA)并接地(VSSA),此时参考电压就是AD的工作电压了。
3.4 VBAT引脚
VBAT在电路中代表电池工作模式专用引脚。它主要用作给内部RTC(实时时钟)供电,在主要电源(VDD)掉电的情况下,可以确保RTC的内部工作,通常采用钮扣式电池。在不需要使用RTC的情况下,VBAT引脚可以和VDD引脚接在一起。
3.5 NRST引脚
NRST引脚是STM32F的异步复位脚。当NRST输入低电平的时候,MCU处于复位状态,重设所有的内部寄存器,及片内几十KB的SRAM。当NRST从低电平变高时,PC指针从0地址开始。但是复位的回时候不会将STM32F片内RTC的寄存器以及后备存储器重置,因为它们是用电池通过专门的VBAT脚供电。
3.6 BOOT0/BOOT1引脚
BOOT0和BOOT1是STM32微控制器的两个重要引脚,它们在芯片复位时的电平状态决定了芯片复位后从哪个区域开始执行程序。
- BOOT0:这是一个普通输入/输出引脚,用于配置芯片的启动模式。当BOOT0引脚为低电平时,芯片将从Flash存储器中启动;当BOOT0引脚为高电平时,芯片将从系统引导加载器(System Bootloader)或其他外部存储器(如ROM或RAM)中启动(取决于芯片的配置)。
- BOOT1:这也是一个普通输入/输出引脚,用于定义额外的启动模式。
需要注意的是,一般不使用内置SRAM启动(BOOT1=1 BOOT0=1),因为SRAM掉电后数据就丢失。多数情况下,SRAM只是在调试时使用,也可以做其他一些用途。在ISP下载的情况下,BOOT0=1,BOOT1=0 ,下载完成后,把BOOT0的跳线接回0,也即BOOT0=0,BOOT1=0 。
3.7 OSC_IN和OSC_OUT引脚
OSC_IN和OSC_OUT是STM32单片机上的外部时钟输入和输出引脚。它们主要用于接入外部晶振,为系统提供时钟源。
- OSC_IN引脚:通常用来连接外部振荡器或晶振的输入端,以获取稳定的时钟信号。这个信号可以是任何频率的时钟源,但需要与单片机的工作频率相匹配。
- OSC_OUT引脚:是单片机内部的时钟输出引脚,它可以将单片机内部产生的时钟信号输出到其他器件或系统中。这个时钟信号的频率和相位可以根据需要进行调整。
总之,OSC_IN和OSC_OUT引脚是STM32单片机中非常重要的时钟引脚,它们为单片机提供了稳定的时钟信号,从而保证了系统的正常运行。
3.8 OSC_IN32/SOC_OUT32引脚
OSC_IN32和OSC_OUT32引脚是微控制器或处理器上的时钟输入和输出引脚,用于与外部时钟源连接。
OSC_IN32是外部时钟输入引脚,用于接收来自外部时钟源的时钟信号。这个外部时钟源可以是一个晶体振荡器、陶瓷振荡器或其他类型的时钟发生器。通过连接外部时钟源到OSC_IN32引脚,微控制器可以从外部源获取时钟信号,并基于该信号进行工作。
OSC_OUT32是外部时钟输出引脚,用于将微控制器的内部时钟信号输出到外部设备。通过这个引脚,可以将微控制器的时钟信号传递给其他需要同步的电路或设备。例如,如果有一个外部模块需要与微控制器的时钟同步工作,可以通过连接OSC_OUT32引脚到该模块的时钟输入引脚来实现同步。
3.9 SWCLK/SWDIO引脚
SWCLK/SWDIO引脚是串行线调试(Serial Wire Debug,SWD)接口的两个引脚。SWD是一种用于微控制器调试和编程的串行通信协议。
- SWCLK(Serial Wire Clock):串行时钟线。它用于向目标设备发送时钟信号,控制数据传输的速度。SWCLK信号由调试器或编程器生成,用于同步与微控制器之间的通信。
- SWDIO(Serial Wire Data Input/Output):串行数据输入/输出线。它用于向目标设备发送或接收数据。当调试器或编程器需要与微控制器进行通信时,它通过SWDIO线发送命令和数据,并从SWDIO线接收响应和数据。
SWD接口的主要优势是它仅需要两个引脚(SWCLK和SWDIO),与使用传统的JTAG接口相比,可以节省引脚资源。此外,SWD接口还具有高速、可靠和低成本的特点,因此在许多微控制器应用中得到了广泛应用。