|
今天,我们来认识一下STM32单片机的内部架构。内部架构也就是这个单片机有哪些东西组成。
众所周知,单片机是由PC机发展而来的。它是把我们PC机所拥有的CPU、RAM、ROM、I/O系统、定时器、串口等功能集成到一个硅片上而构成的一个小而完善的微型计算机系统。由于计算器强大的数据处理能力和控制能力,以及单片机的高可靠性、高抗干扰性、价格便宜等优点而被广泛的应用于工业控制、医疗器械、信息通信等领域。
图1 单片机内部结构图
上图是一个单片机内部所具有的各种部件。接下来我们看一下这些部件都有什么作用。
1、CPU:
CPU又叫中央处理器。它具备数据计算和指令执行的功能。那它都能做哪些运算呢。比如我们常用的加、减、乘、除、微分、积分等等。哪些属于指令的执行呢,比如,要计算加法,那么加法就是一个指令。当然CPU还能执行很多指令,具体的指令要去看这个单片机的指令系统。
2、RAM:
RAM又叫数据存储器、随机存储器。它具有可读可写的特点(这里的可读可写指的是可以在程序的运行过程中对它直接操作),掉电数据丢失。为什么需要RAM呢。因为程序在执行指令或者做运算时会产生一些中间变量,而这些中间变量就需要存储在RAM中。这就像我们人类在计算1+2的时候,首先我们会在纸上写出1+2这个式子,同样对于单片机也是如此,如果它不记下来的话,那么用的时候这些数据就丢失了。
3、ROM:
ROM又叫做程序存储器,只读存储器。它具有只读不能写、掉电数据不丢失的特点(实际上随着电子技术的发展,ROM也有可读可写的,不过写的方法比较特殊)。主要用来存放我们的代码。
4、I/0系统:
I/O系统是单片机和外部电路打交道的直接窗口,它把单片机的0,1代码变成电路中的高低电平。
5、外设:
外设指能独立完成一定功能的一块电路。它的作用就像一个公司的某个部门一样,他们能完成一定的功能,但是要受总经理(CPU)的控制。
CPU要进行指令执行、数据处理、外设控制,首先要做的就是从ROM中取出指令,然后执行指令,如果指令的执行有中间变量,就要在RAM中保存,执行完后要去控制外设来完成特定的功能。从上面我们可以看出,这系列的操作,CPU都要不停的和ROM、RAM、外设、I/O系统通信,他们的通信通过很多根导线传输数据,这就是总线系统(当然这些导线都是集成在单片机内部的,我们是看不到的)。
接下来我们来看一下STM32的内部结构
图中的Cortex-M3就是CPU,Flash就是ROM,SRAM就是RAM,总线矩阵连接着各种总线。图中红色方框中就是STM32单片机的外设。从上图我们可以看出,STM32的外设是比较丰富的,同样也是比较复杂的。
接下来我们来分析一下STM32单片机的最小系统:
一:电源:
任何一个电子产品要想正常工作,首先必不可少的就是电源。
图2.STM32的电源框图
上图是STM32的电源框图:从图中我们可以看出STM32有四组电源系统:
1.VREF+、VREF-:这是STM32内部AD转换器(一种片内外设)所需要的参考电压
2.VDDA、VSSA:这是STM32内部AD转换器所需要的供电电源
3.VSS、VDD:这是STM32内部数字电路所需要的电源(图中有详细的描述)。
4.VBAT:后备电池,通常用纽扣电池。实现在主电源掉电的情况下给后备区域供电。
关于这些电源的电压取值范围,STM32的参考手册上有详细的说明。
二:复位
STM32支持三种复位方式:系统复位、电源复位、备份区域复位
1.系统复位:当发生以下任何一个事件时,产生一个系统复位
1.NRST引脚上的低电平(也就是外部复位)
2.窗口看门狗计数终止
3.独立看门狗计数终止
4.软件复位
5.低功耗管理复位
2.电源复位:当发生以下任何一个事件时,产生一个电源复位
1.上电/掉电复位
2.从待机模式返回
3.备份域复位:
1.软件复位(软件产生一个备份域复位信号)
2.在VDD和VBAT两者都掉电的前提下,VDD或者VBAT上电将引发备份域复位。
以上是STM32的复位系统,需要我们使用者做的就是外部复位电路图的设计,关于这个图的设计请参照STM32课程中的原理图。
三:时钟系统(震荡电路)
由于单片机(包括内核、存储器和外设)是时序逻辑电路,在工作时必须要一个时钟来驱动。
图3.STM32的时钟系统
上图是STM32的时钟系统,红色方框中代表的是时钟的来源:
1. 8MHZ HSI RC 通过称其为内部高速时钟
2.LSI RC 40KHZ 通常称其为内部低速时钟
3.OSC_INT和OSC_OUT组成了外部高速时钟。时钟范围为4--16MHZ
4.OSC32_IN和OSC32_OUT组成了外部低速时钟。时钟为32.768KHZ
5.SYSCLK 系统时钟,最大72MHZ
从图中我们可以看出,SYSCLK可以有HSI、HSE、PLLCLK来提供,而PLLCLK又来源于HSI/2、HSE、HSE/2、LSE/128。而SYSCLK经过AHB预分频器、APB1预分频器、APB2预分频器后供各个外设使用。
STM32单片机复位后把HSI直接作为SYSCLK使用,那这个时候系统就运行在8MHZ的频率下。由于HSI的精度较差,SYSCLK速度较低等原因,我们需要对STM32的时钟系统进行配置。一般配置的过程如下。
单片机复位后,首先启动HSE,等待HSE时钟稳定后,把HSE作为PLL的输入,PLLMUL把PLL的输入时钟8倍频后做为SYSCLK,那么系统时钟就工作在72MHZ。时钟的来源是外部时钟。这段代码的实现在STM32的库函数 system_stm32f10x.c文件中的SystemInit()函数中。
|
|