第4章.STM32单片机的最小系统电路

目录

0. 《STM32单片机自学教程》专栏 

4.1. STM32单片机最小系统电路的组成 

4.2. STM32单片机的调试接口

4.2.1 JTAG 调试接口

4.2.2 SWD接口 

4.3. 启动模式

参考资料:


0. 《STM32单片机自学教程》专栏 

        本文作为专栏《STM32单片机自学教程》专栏其中的一部分,返回专栏总纲,阅读所有文章,点击Link:  

STM32单片机自学教程-[目录总纲]_stm32 学习-CSDN博客

4.1. STM32单片机最小系统电路的组成 

        单独一个微处理器自己是无法工作的,还必须有供电,时钟,晶振等电路才能正常工作,即最小系统电路。那么STM32的最小系统电路有哪些部分组成呢,如下图4.1-1所示。

图4.1-1.STM32最小系统电路组成 

STM32单片机的最小系统主要由以下几个部分组成:

[1].电源电路:这是为STM32芯片提供工作电压的电路部分。通常,STM32的工作电压为3.3V,因此电源电路可能需要使用LDO(低压差线性稳压器)将5V电压转换为3.3V,以满足STM32的工作需求。同时,为了稳定输入电压,电路中还会加入去耦电容进行滤波。一个设计电路图如下图4.1-2.

图4.1.2 STM32供电电路设计

[2].复位电路:复位电路在STM32单片机中起着至关重要的作用。它能在复位时,使单片机的程序计数器回到初始地址(如0000H),从而使程序从起始处重新执行。此外,复位操作还会将寄存器和存储单元的值重置为初始设定值,使单片机能够重新开始执行。STM32中有三种复位方式,分别是上电复位、手动复位和程序自动复位。复位电路如图4.1-3.

[3].时钟电路:时钟电路为STM32单片机提供时钟信号,这是单片机正常工作的基础。时钟电路通常由晶振和相关的电路组成,为单片机提供稳定的时钟频率。STM32主晶振为8MHZ,经过倍频后为72MHZ。

[4].调试接口电路:这是用于下载程序和调试单片机的接口电路,常见的调试接口有JTAG和SWD。

[5].启动配置电路:启动配置通常是通过STM32的BOOT引脚来实现的,这些引脚(如BOOT0和BOOT1)能够支持从内部FLASH启动、系统存储器启动以及内部SRAM启动等多种启动方式。这些启动配置决定了单片机在上电或复位后从哪个存储器区域开始执行程序。
因此,在设计和搭建STM32单片机的最小系统时,启动配置是不可或缺的一部分。它确保了单片机在启动时能够按照预期的方式加载和执行程序,从而实现所需的功能和控制逻辑。

图4.1-3 STM32时钟,复位,调试电路

4.2. STM32单片机的调试接口

        调试接口不是系统运行的必需的接口电路,但是为了系统开发、调试、升级等方便,我们在设计最小系统时,可以加上这一部分电路。STM32 系列微处理器内置了一个JTAG和一个SWD接口,通过这两个接口可以控制芯片的运行,并可以获取内部寄存器的信息。这两个接口都要使用GPIO(普通I/O口)来供调试仿真器使用。选用其中一个接口即可将在PC上编译好的程序下载到单片机中运行调试。

4.2.1 JTAG 调试接口

        JTAG 是一种国际标准测试协议,主要用于芯片内部测试。标准的JTAG调试接口有4根线,分别为模式选择(TMS)、时钟(TCK)、数据输入(TDI)和数据输出(TDO)线。JTAG 调试接口电路如图4.2-1所示。 

图4.2-1 JTAG调试接口电路 

4.2.2 SWD接口 

        图4.2-2所示为SWD接口。在高速模式和数据量大的情况下,通过JTAG下载程序会失败,但是通过SWD下载出现失败的概率会小很多,更加可靠。SWD模式支持更少的引脚接线,所以需要的PCB空间更小,在芯片体积有限的时候推荐使用SWD模式。SWD模式的连接需要2根线,其中SWDIO为双向数据口,用于主机到目标的数据传送;SWDCLK为时钟口,用于主机驱动。

图4.2-2 SWD接口

        STM32系列处理器支持两种调试方式,但是采用JTAG占用了大量的PCB的面积,而采用SWD模式则占用得少得多。而且在调试速度等方面,SWD并不比JTAG模式差,所以建议在实际应用中尽量采用SWD进行设计。SWD不是采用标准端口,可以根据自己的需要排列引脚。 

4.3. 启动模式

该处很多知识引用自正点原子的开发板资料,这块知识正点原子的资料讲的很透彻。

       STM32单片机的程序计数器寄存器的默认值决定了处理器从哪个具体地址去获得第1条需要执行的指令。但是对于处理器来说,无论它挂接的是闪存、内存,还是硬盘,它在启动时是“一无所知”的,我们需要通过硬件设计来告诉它存储第一条指令的外设。STM32系列处理器的第一条执行指令地址是通过硬件设计来实现的。   

表4.3-1 启动模式选择

        如图表4.3-1,在STM32F10x里,可以通过配置BOOT[1:0]引脚选择3种不同的启动模式。系统复位后,在系统时钟的第4个上升沿到来时,BOOT引脚的值将被锁存,然后被CPU读取。这意味着一旦BOOT引脚的值被确定并锁存,后续改变这些引脚的状态将不会影响已经选择的启动模式。用户可以通过设置BOOT1和BOOTO引脚的状态,来选择在复位后的启动模式。

        复位方式有三种:上电复位,硬件复位和软件复位。当产生复位并且离开复位状态后,Cortex-M3 内核做的第一件事就是读取下列两个 32 位整数的值:

        (1)从地址  0x0000 0000  处取出堆栈指针 MSP  的初始值,该值就是栈顶地址。 
        (2)从地址  0x0000  0004  处取出程序计数器指针 PC  的初始值,该值指向复位后执行的
第一条指令。下面用示意图表示,如图4.3-1 所示。

        注: 概念解释:MSP     

        在嵌入式系统或低级编程中,MSP 通常指的是“Main Stack Pointer”,即主堆栈指针。堆栈是一个后进先出(LIFO)的数据结构,用于存储局部变量、返回地址和其他临时数据。MSP 指向堆栈的顶部,是堆栈操作(如入栈和出栈)的关键。

        在许多微控制器和处理器中,可能会有多个堆栈,例如主堆栈和进程堆栈,用于不同的任务或线程。MSP 通常与主任务或主线程相关。

        与 MSP 相对的是 PSP(Process Stack Pointer),它是进程堆栈指针,用于特定的线程或任务。了解 MSP 和其他相关概念对于理解和编写低级代码,如中断处理程序或操作系统内核代码,是非常重要的。这些概念也与实时操作系统(RTOS)和并发编程密切相关。 

         简而言之,MSP 是指向主堆栈顶部的指针,用于追踪和管理主线程或任务的堆栈操作      

        概念解释:程序计数器-PC

        PC代表程序计数器(Program Counter)。它是一个16位专用寄存器,用于存放下一条将要执行的指令地址。当执行一条指令时,首先需要根据PC中存放的指令地址,将指令取出送到指令寄存器中,此过程称为“取指令”。与此同时,PC中的地址会自动加1,以便指向下一条将要执行的指令。这样,CPU就可以依次执行每一条指令,保证程序的顺序执行。因此,程序计数器PC是保证程序顺序执行的重要特殊功能寄存器。

图.4.3-1 复位序列

        上述过程中,内核是从 0x0000 0000 和 0x0000 0004 两个的地址获取堆栈指针 SP 和程序计
数器指针 PC。事实上,0x0000  0000 和 0x0000  0004 两个的地址可以被重映射到其他的地址空
间。例如:我们将 0x0800 0000 映射到 0x0000 0000,即从内部 FLASH 启动,那么内核会从地
址 0x0800  0000 处取出堆栈指针 MSP  的初始值,从地址 0x0800  0004 处取出程序计数器指针
PC 的初始值。CPU 会从 PC 寄存器指向的地址空间取出的第 1 条指令开始执行程序,就是开始
执行复位中断服务程序 Reset_Handler。将 0x0000  0000 和 0x0000  0004 两个地址重映射到其他的地址空间,就是启动模式选择。 

        对于 STM32F1 的启动模式,表3-1转为对应地址模式,如图4.3-2.

图4.3-2 STM32启动模式表对应地址

        由图4.3-2 可以看到,STM32F1 根据 BOOT 引脚的电平选择启动模式,这两个 BOOT 引脚
根据外部施加的电平来决定芯片的启动地址。

 从主闪存FALSH启动:        

  • 这是STM32F1系列的正常工作模式。
  • 当BOOT0=0,BOOT1=x时(其中x可以是0或1,通常推荐BOOT1也设置为0以确保一致性),单片机将从用户闪存(即内部的Flash存储器)启动。
  • 用户闪存中通常存储了程序代码和数据,单片机在启动时将从这里读取并执行程序。

从系统存储器启动:

  • 这种启动模式主要用于从STM32内部固化的Bootloader程序启动。
  • 当BOOT0=1,BOOT1=0时,单片机将从系统存储器启动。
  • 系统存储器中包含了一个内置的Bootloader程序,可以用于从串口接收新的程序代码并烧写到用户闪存中,实现程序的远程升级

从内置SRAM启动:

  • 这种启动模式通常用于调试目的或特殊应用。
  • 当BOOT0=1,BOOT1=1时,单片机将从内部的SRAM(静态随机存取存储器)启动。
  • SRAM通常用作程序的临时运行空间,其内容在掉电后会丢失。从SRAM启动通常用于测试或特殊的应用程序,其中程序可能需要在不写入Flash的情况下运行。

参考资料:


        【1】哔站江协科技STM32入门教程

        【2】《STM32单片机原理与项目实战》刘龙、高照玲、田华著

        【3】《ARM Cortex-M3嵌入式原理及应用》黄可亚著

        【4】《STM32嵌入式微控制器快速上手》陈志旺著

        【5】《STM32单片机应用与全案例实践》沈红卫等著

        【6】《野火STM32开发指南》

        【7】《正点原子STM32开发指南》

 

  • 34
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: STM32单片机最小系统电路原理图主要由以下几部分组成: 1.主时钟电路:使用一个晶振和两个电容构成,晶振的频率一般为8MHz,电容的数值根据晶振供应商的推荐值选择。 2.复位电路:使用一个复位电阻和一个复位电容构成,复位电容通过复位电阻和VCC连接,当复位电路断电后重新上电时,复位电容通过复位电阻逐渐充电,使得单片机执行复位操作。 3.电源电路:使用稳压芯片将外部供电电压调节为单片机需要的工作电压,一般为3.3V或5V。同时,为了提供稳定的电源,电源电路还要加入滤波电容和电感。 4.JTAG/SWD调试接口:为了方便调试和程序下载,该接口用于连接单片机与调试工具之间。JTAG接口使用了两组引脚(TCK, TDI, TDO, TMS)和电源供应(GND, VCC)以及控制信号(nTRST, SRST)。SWD接口只使用了两个引脚(SWCLK, SWDIO)。 5.引脚与外部器件连接:将单片机的引脚连接到外部需要的器件上,如LED、按键等。 整个电路的原理图会根据具体的单片机型号和外部器件的不同会有所差异,但以上内容是一个基本的最小系统电路原理图的主要部分。 ### 回答2: STM32单片机最小系统电路原理图主要包括以下几个部分: 1.晶振电路:晶振电路是提供时钟信号给单片机的重要组成部分。一般使用两个电容和一个晶体振荡器来构成,其中一个电容连接到晶体振荡器的两个端口,另一个电容连接到晶振电路的地。 2.复位电路:复位电路用于单片机的初始化,当单片机上电或者外部复位信号到来时,单片机将进入初始状态。复位电路一般包括一个复位按钮、一个复位电路芯片和一个电容。 3.电源电路单片机的正常工作需要稳定的电源供给。电源电路包括一个电源模块、一个滤波电容和一个稳压电路。电源模块通常采用稳压芯片,通过滤波电容将电源变为稳定的直流电压,再经由稳压电路得到稳定的供电电压。 4.串口通信电路单片机通信常用的硬件接口之一是串口通信,用于单片机与外部设备的数据传输。串口通信电路主要由一个串口芯片、几个电阻和电容组成。 5.通用输入输出(GPIO)电路:GPIO是单片机常用的一种通用输入输出模式,用于连接单片机与外部设备的输入输出口。GPIO电路包括一个电阻和一个电容。 以上是STM32单片机最小系统电路原理图的主要组成部分,通过这些电路的连接和配置,可以实现对单片机的基本功能操作和外设的扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值