STM32单片机架构详解

控制/MCU

1814人已加入

描述

今天打算继续总结stm32单片机的基础知识,巩固基础。这里呢,声明一下,《stm32单片机基础知识总结》主要基于stm32f1及stm32f4两个系列来做的。原因是stm32f1系列是Cortex-M3内核 ,stm32f4系列是基于Cortex-M4内核。我在项目开发中,主要用到了这两个系列的片子,所以算是对自己知识的一个巩固。另外,知识都是相通的。所以如果理解了这两种架构,那么如果需要的话,我们也能够快速地去学习其他的系统架构。

一、STM32单片机架构

通过两张图片来对Cortex-M3 和Cortex-M4两个内核资源进行一个对比。

Cortex-M3

 

Cortex-M3

通过对此,我们可以看到有这样几个不同之处:

M4具有单精度浮点运算单元,F1没有浮点运算单元。

M4具备增强的DSP指令集。

然后其他共有的模块如下:

内核系统模块

nested vectored interrupt controller

嵌套向量中断控制器

wake up interrupt controller interface

唤醒中断控制器接口

DSP:数字信号处理单元,

FPU:浮点运算器

Memory Interface Unit(MPU):存储器保护单元

它可以实施对存储器(主要是内存和外设寄存器)的保护,以使软件更加健壮和可靠。在使用前,必须根据需要对其编程。如果没有启用MPU,则等同于系统中没有配MPU。

MPU有如下的能力可以提高系统的可靠性:

阻止用户应用程序破坏操作系统使用的数据。

阻止一个任务访问其它任务的数据区,从而把任务隔开。

可以把关键数据区设置为只读,从根本上消除了被破坏的可能。

检测意外的存储访问,如,堆栈溢出,数组越界。

此外,还可以通过MPU设置存储器regions的其它访问属性,比如,是否缓区,是否缓冲等。

SRAM &Peripheral interface:SRAM&外设接口

Bus Matrix:总线矩阵用于多主(Core,DMA等),多从(内部RAM,APB,外部总线等)的交联和仲裁。目的是为了提高不同主机访问不同外设情况下的带宽。

跟踪调试系统

Data Watchpoint:

用于实时变量监控,可用于定期输出PC或各种CPU内部计数器,从目标获取分析信息。

Flash Patch &BreakPoint:转换及断电单元

ITM Trace:

指令跟踪宏单元,一种针对MCU进行跟踪调试的新方法,与打断点(Breakpoint)不同,ITM方法不需要暂停程序运行,可以在程序全速运行的过程中实时输出变量的数值以便观察,即Trace功能

ETM Trace:集成跟踪选项

Debug Access Port:调试端口

Serial Wire Viewer ,Trace port :串行线查看器,跟踪端口

以上把所有的模块都简单翻译了一下,个别的稍加阐述。篇幅原因就不再进行深入了。感兴趣的朋友可以网上再查一查资料。我这里当是抛砖引玉了。

针对stm32f1与stm32f4,两个片子的框架,再进行一个简单总结。整个这些知识内容都是一些基础的东西,可能很多东西不懂也能够把代码写出来,调试也能通过。入门的话,也可以了。我个人觉得想走更远,应该知其然也知其所以然。虽然我水平一般,需要学习实践的地方有很多。但从多年的工作经历来说,我觉得做到大而广不难,做到大而广还要细就是很考验人的了。

下面两张Block diagram 是我从ST官方文档上面截下来的。第一张是STM32f103。第二张是STM32F40x。STM32f103是基于Cortex-M3架构。STM32f40x是基于Cortex-M4架构。很明显STM32f40x芯片的内核所挂载的资源相当于STM32f103芯片所挂载的资源要丰富很多。

Cortex-M3

stm32f103内部架构图 

Cortex-M3

stm32f40x架构图

从上面两张架构图中,我们可以读出很多信息。

1)stm32f1主频最高是72MHZ.stm32f4主频最高是168MHZ,且集成了FPU功能。

2)F1内部SRAM最大64K字节, F4内部SRAM有192K字节(112K+64K+16K)。

3)四个主动单元 :

M3内核的ICode总线(I-bus)、DCode总线(D-bus)、 系统总线(S-bus)、DMA(DMA1、DMA2、以太网DMA)

ICode总线 :

将M3内核的指令总线与FLASH指令接口相连,用于指令预取

DCode总线:

将M3内核的数据总线与FLASH数据接口相连,常量加载和调试

系统总线 :

将M3内核的系统总线与总线矩阵相连,协调内核与DMA访问

DMA总线:

将DMA的AHB主控接口与总线矩阵相连,协调CPU的DCode和DMA到SRAM、闪存、外设的访问

4)四个被动单元 :

内部SRAM、内部闪存、FSMC、AHB到APB桥

AHB桥:

AHB(Advanced High performance Bus),高性能总线。主要用于高性能模块(如CPU、DMA和DSP等)AHB 系统由主模块、从模块和基础结构(Infrastructure)3部分组成,整个AHB总线上的传输都由主模块发出,由从模块负责回应。

APB桥:

APB(Advanced Peripheral Bus),片上外设总线。主要用于慢速片上外设与ARM核的通讯。

例如UART、1284等,它的总线架构不像 AHB支持多个主模块,在APB里面唯一的主模块就是APB 桥。再往下,APB2负责AD,I/O,高级TIM,串口1;APB1负责DA,USB,SPI,I2C,CAN,串口2345,普通TIM。

cortex-M3、cortex-M4内核是由ARM公司提供的。芯片其余外围是由ST公司设计完成的。

篇幅有限,很多要点的内容也需要时间的沉淀。后续的工作学习中,再对这些知识点做补充优化。

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

全部0条评论

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

×
20
完善资料,
赚取积分