基于51与STM32单片机架构

描述

单片机简介

单片微型计算机简称单片机,简单来说就是集CPU(运算、控制)、RAM(数据存储-内存)、ROM(程序存储)、输入输出设备(串口、并口等)和中断系统处于同一芯片的器件,在我们自己的个人电脑中,CPU、RAM、ROM、I/O这些都是单独的芯片,然后这些芯片被安装在一个主板上,这样就构成了我们的PC主板,进而组装成电脑,而单片机只是将这所有的集中在了一个芯片上而已(一个集成封装样式的芯片就是一台pc,不要把那个开发板电路板也算进去)。

芯片{这个就叫单片机}

我们先普及一个概念,单片机(即Microcontroller Unit;MCU) 里面有什么。一个人最重要的是大脑,身体的各个部分都在大脑的指挥下工作。MCU跟人体很像,简单来说是由一个最重要的内核加其他外设组成,内核就相当于人的大脑,外设就如人体的各个功能器官。下面我们来简单介绍下51单片机和STM32单片机的结构。

一、51与STM32单片机架构

1、51架构

芯片芯片

51系统结构框图

我们说的51一般是指51系列的单片机,型号有很多,常见的有STC89C51、AT89S51,其中国内用的最多的是STC89C51/2,下面我们就以STC89C51来讲解,并以51简称。

**1.内核**

51单片机由一个IP核和片上外设组成,IP核(内核)就是上图中的 CPU,片上外设就是上图中的:时钟电路、SFR和RAM、ROM、定时/ 计数器、并行I/O口、串行I/O口、中断系统。IP核跟外设之间由系统总 线连接,且是8bit的,速度有限。

51内核是上个世纪70年代Intel公司设计的,速度只有12M,外设是IC厂商(STC)在内核的基础上添加的,不同的IC厂商会在内核上添加不同的外设,从而设计出各具特色的单片机。这里Intel属于IP核厂商,STC属于IC厂商。我们后面要讲的STM32也一样,ARM属于IP核厂商,ARM给ST授权,ST公司在Cortex-M3内核的基础上设计出STM32单片机。

  1. 外设
    我们在学习51的时候,关于内核部分接触的比较少,使用的最多的是片上外设,我们在编程的时候操作的也就是这些外设。

编程的时候操作的寄存器位于SFR和RAM这个部分,其中SFR(特殊功能寄存器)占有 128字节(实际上只用了 26 个字节,只有 26 个寄存器,其他都属于保留区),RAM占有 128 字节,我们在程序中定义的变量就是放在RAM中。其中SFR和RAM在地址上是重合的,都是在80~FF地址区间,但在物理区间上是分开的,所以51的RAM是有256个字节。

编写好的程序是烧写到ROM区。剩下的外设都是我们非常熟悉的IO口,串口、定时器、中断这几个外设。

【51单片机的CPU结构】

51单片机内部有一个8位的CPU,包含运算器,控制器及若干寄存器等。

芯片

注意上图中这个外存储器是在cpu虚线外面

2. STM32架构

芯片STM32系统结构框图

  1. 内核

在系统结构上,STM32和51都属于单片机,都是由内核和片上外设组成。只是STM32使用的Cortex-M3内核比51复杂得多,优秀得多,支持的外设也比51多得多,同时总线宽度也上升到32bit,无论速度、功耗、外设都强于51。

从结构框图上看,对比51内核只有一种总线,取指和取数共用。Cortex-M3内部有若干个总线接口,以使CM3能同时取址和访内(访问内存),它们是:

指令存储区总线(两条)、系统总线、私有外设总线。有两条代码存储区总线负责对代码存储区(即FLASH外设)的访问,分别是I-Code总线和D-Code总线。

I-Code用于取指,D-Code用于查表等操作,它们按最佳执行速度进行优化。

系统总线(System)用于访问内存和外设,覆盖的区域包括SRAM,片上外设,片外RAM,片外扩展设备,以及系统级存储区的部分空间。

私有外设总线负责一部分私有外设的访问,主要就是访问调试组件。它们也在系统级存储区。

还有一个DMA总线,从字面上看,DMA是data memory access的意思,是一种连接内核和外设的桥梁,它可以访问外设、内存,传输不受CPU的控制,并且是双向通信。简而言之,这个家伙就是一个速度很快的且不受老大控制的数据搬运工,这个在51里面是没有的。

  1. 外设

从结构框图上看

, STM32比51的外设多得多,51有的串口、定时器、IO口等外设 STM32 都有。STM32还多了很多特色外设:如FSMC、SDIO、SPI、I2C等,这些外设按照速度的不同,分别挂载到AHB、APB2、APB1这三条总线上。

(随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大。数字IC从基于时序驱动的设计方法,发展到基于IP核复用的设计方法,并在SOC设计中得到了广泛应用。在基于IP核复用的SoC(System on Chip的缩写,称为系统级芯片,也有称片上系统)设计中,片上总线设计是最关键的问题。为此,业界出现了很多片上总线标准。其中,由ARM公司推出的AMBA片上总线受到了广大IP开发商和SoC系统集成者的青睐,已成为一种流行的工业标准片上结构。AMBA规范主要包括了AHB(Advanced High performance Bus)系统总线和APB(Advanced Peripheral Bus)外围总线。)

(中间这段内容我也看了一个大佬的内容然后觉得非常精炼,与其再组织语言去描述,不如直接copy过来供大家阅读分析)

51单片机特性

1、从内部的硬件到软件有一套完整的按位操作系统,称作位处理器(CPU),处理对象不是字或字节而是位。不但能对片内某些特殊功能寄存器的某位进行处理,如传送、置位、清零、测试等,还能进行位的逻辑运算,其功能十分完备,使用起来得心应手。

2、同时在片内RAM区间还特别开辟了一个双重功能的地址区间,使用极为灵活,这一功能无疑给使用者提供了极大的方便,

3、乘法和除法指令,这给编程也带来了便利。很多的八位单片机都不具备乘法功能,作乘法时还得编上一段子程序调用,十分不便。

STM32单片机特性

1、内核:ARM32位Cortex-M3CPU,最高工作频率72MHz,1.25DMIPS/MHz,单周期乘法和硬件除法

2、存储器:片上集成32-512KB的Flash存储器。6-64KB的SRAM存储器

3、时钟、复位和电源管理:2.0-3.6V的电源供电和I/O接口的驱动电压。POR、PDR和可编程的电压探测器(PVD)。4-16MHz的晶振。内嵌出厂前调校的8MHz RC振荡电路。内部40 kHz的RC振荡电路。用于CPU时钟的PLL。带校准用于RTC的32kHz的晶振

4、调试模式:串行调试(SWD)和JTAG接口。最多高达112个的快速I/O端口、最多多达11个定时器、最多多达13个通信接口。

二、由PC的操作系统、内核联想到MCU

操作系统是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。
操作系统定义:一组控制和管理计算机硬件和管理软件资源,合理对各类作业进行调度,以及方便用户使用的一组程序的集合(属于软件);
一、cpu:

cpu是central process unit的简称,是计算机的核心处理器。cpu的作用是运行机器语言指令。高级语言和汇编语言程序被编译成cpu能理解的机器语言(二级制代码)后,存入到内存中,cpu就会从内存中读取并执行这些指令序列,完成程序功能。

包括控制器、寄存器、运算器、时钟四个部分组成。

运算器是用来进行逻辑计算的,

寄存器是临时存放中间数据以及指令的;包括程序计数器、指令寄存器、数据寄存器、地址寄存器等。寄存器是汇编语言所研究的对象,汇编语言通过对寄存器的控制(写入,读出,加),实现功能。程序计数器和内存的关系:程序计数器记录了当前执行的指令在内存中年存储的位置。

控制器是用来控制何时将内存的数据及指令读入寄存器,何时将寄存器中的值输出到内存。

时钟是同步各个部件之间的步调;

二、内存RAM

内存又叫主存,与cpu的寄存器链接,用于将数据以及指令输入到寄存器中;同时也可以接受寄存器的输出。本质是作为磁盘与寄存器的中间件,起到缓冲作用。断电后会丢失所有数据。

内存和磁盘的关系:由于磁盘的读写速度与cpu相差太大,如果cpu直接从磁盘中读取数据,会造成cpu计算能力极大的浪费。为了解决这个问题,在磁盘与cpu之间加一个内存,将磁盘存储的程序以及数据线读入内存中,cpu直接与内存打交道。此外,由于内存的空间比磁盘小很多,会出现内存不够用的情况,此时,会将一部分磁盘当做内存来使用,也就是虚拟内存。

三、磁盘ROM

存放数据的,容量比内存大,速度慢。
断电不会丢失数据。

四、指令

指令是控制cpu按照一定功能运算的机器码。每一种cpu有自己的一套指令集。高级语言编写的程序最终也要编译成可以让cpu理解的一条条机器指令,才能被cpu执行。cpu除了可以计算数据以外,还可以控制硬件,方法是通过cpu寄存器与I/O端口进行数据交换。计算机中主机与外围硬件的链接方式是通过I/O端口进行的(端口是用于主机寄存器与外围设备交换数据时临时存储数据的寄存器)。所以,指令通过控制cpu的输出和输入位置,可以让cpu寄存器向I/O端口寄存器发送数据,外围设备通过与I/O寄存器交换数据,从而达到控制外围设备的效果。而操作系统的作用是封装一套指令序列,cpu通过执行这套指令序列,可以让硬件完成一系列动作。而应用程序如果需要对硬件进行操作,只需要将操作系统的这套指令序列复制到自己的程序中即可。复制这套指令的方式就是API(API就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的 API 而使操作系统去执行应用程序的命令。)。从这个角度来看,操作系统就是封装了控制硬件完成一系列动作的指令序列的集合,这套集合提供给应用程序以及计算机的使用者。从而达到了将人、应用程序与硬件隔离的效果。

五、操作系统的内核

操作系统内核(就是操作系统最核心最底层的一部分代码(基础代码))

内核,是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。

“内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。一个内核不是一套完整的操作系统。一套基于Linux内核的完整操作系统叫作Linux操作系统,或是GNU/Linux。

现在主流的操作系统内核有四个:Unix、Linux、Windows、OS/2

其他很多各种各样以及各个版本的系统都是建立在这四种内核的基础上的。

所以不妨大胆去想MCU是集成版PC,所以操作系统等控制CPU的软件程序指令就好比你烧录到单片机里面的程序一样(暂时这样理解),那么指令又是如何控制CPU呢?

芯片

芯片

芯片

芯片

芯片cpu只能执行所支持的指令集里的指令,不同公司的产品对应有自己的指令集,cpu是出厂前预先设计制造好的电路,操作系统/软件程序编写肯定是要对照着相应产品cpu的指令集,这样的程序编译后才能让cpu执行,也就是控制cpu;

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分