历史上的今天
今天是:2025年03月24日(星期一)
2021年03月24日 | 【STM32】STM32系统架构浅析
2021-03-24 来源:eefocus
在学习STM32芯片的强大外设功能之前,首先要从宏观上学习芯片的系统架构,明白各个模块之间的层级关系以及相互的影响。只有从宏观上把握了,才不至于“掉入细节之中,不识庐山真面目”。
本文从整体构架上构建宏观的概念以及联系,不会太深入剖析具体实现原理。
1 系统架构图

上面的架构图主要包含:
ARM公司提供的内核:cortex-M3
ARM公司提供的总线:Icode,Dcode,System总线
ST公司提供的总线矩阵,DMA控制器,AHB总线,APB总线,以及各个外设控制器
以上整体称之为片上系统(SOC),每个模块各司其职,存在竞争与合作。
2 计算机组成原理
计算机组成原理告诉我们,计算机硬件由5大部分构成:运算器,控制器,存储,输入/输出设备。其中运算器和控制器构成中央处理器(CPU),可以是Intel的I7/I8/I9,也可以是ARM的M3/M4/M7/A8/A9...等。存储器又分为内存与外存,可以是PC端的DDR和硬盘,也可以是单片机端的SRAM和Flash。对于嵌入式来说,上图的系统架构体现出计算机组成原理的设计,各个模块之间通过总线进行通信。
3 哈佛架构
从上图可知,STM32芯片是属于哈佛架构。
哈佛架构与冯诺依曼的最大区别在于:
哈佛架构的数据总线,指令总线是分开独立的,CPU通过Icode从Flash中取指令,再译码,得到数据的地址,再通过Dcode总线和SRAM进行数据交互。
哈佛架构的优势:
并行体系结构,将程序指令和数据存储在不同的存储空间中,每个存储器独立编址、独立访问。哈佛架构的微处理器通常具有较高的执行效率,其程序指令和数据指令分开组织和储存的,执行时可以预先读取下一条指令。
4 总线矩阵
总线矩阵的前级是主设备(Msater):cortex-M3和DMA;
后级是从设备:存储器以及各个外设控制器
通过总线矩阵,可以实现内核与DMA控制器对外设的访问,凡是挂在总线矩阵上的设备,内核与DMA都是有权访问的。
5 内核cortex-M3
内核的主要功能是执行我们编译后的bin文件,代码是如何执行的呢?
内核(CPU),通过取指,译码,执行这样的三级流水线执行代码,若没有中断与异常,CPU一直顺序执行。但CPU很强大的功能之一就是有响应中断和异常的能力,通过规定好的异常向量表处理异常(比如复位,hard fault等),通过规定好的中断向量表处理中断,中断的性能从一定程度上表示这款内核的性能。
6 DMA控制器
当外设与存储器之间有大量数据传输时,每次都通过CPU来处理,而CPU处理的方式有两种:
一是轮询(polling),二是中断(interrupt),这两种都会使CPU不断的处理数据的传输,从而导致其他功能的执行会受影响。为了提高大数据量传输时CPU的效率,从硬件上增加了DMA控制器,来实现外设与内存之间的数据传输。
留一个问题,当DMA控制器工作的时候,CPU在干什么?
史海拾趣
|
TM32 中断与嵌套NVIC 快速入门。 我也是靠看这本书才弄懂的: Cortex-M3 权威指南 Joseph Yiu 著 宋岩 译 其实很简单。 //CM3 有 最多240个中断(通常外部中断写作IRQs),就是 软件上说的 IRQ CHANAELx(中断通道号x) 每个中断有自己的可编 ...… 查看全部问答> |
|
http://www.96qd.com/driver/softdown.asp?softid=166173 请哪位好心人帮我下载这个驱动程序,之后压缩打包后发我一下, 万分谢谢! 我的email: hkds2008@163.com 在线等!… 查看全部问答> |
|
【我给xilinx资源中心做贡献】Xilinx Spartan-3E开发板相关资源 概述 Spartan-3E初学者电路板向工业上基于Spartan-3E电路设计平台提供了最受欢迎最超值的产品。板载的50万门Spartan 3E FPGA可以构建32位RISC处理器和DDR接口。开发板上拥有的Xilinx Platform Flash、USB和JTAG并 ...… 查看全部问答> |
|
最近在弄气敏型烟雾监测装置,手里面有一个传感器元件,性能测试不错,但是不知道是哪个厂家的产品,只能从产品上面看到企业logo。 急求各位大侠,哪个知道是哪个公司的产品吗?… 查看全部问答> |
|
一、上电复位 POR 和 上电清除 PUC 二、低功耗控制 但系统时钟发生器基本功能建立之后,CPU内的状态寄存器SR中的SCG1、SCG2、OscOff、CpuOff是低功耗的重要控制位; 系统工作模式一共有6种,1种活动模式和5种低功耗模式; 可以通过设置控制位使 ...… 查看全部问答> |
|
430的IO都是数字量类型的管脚,如果电流经模数转换后的数字量可不可以1个输出接一个IO口呢,在程序里循环扫描这几个IO口,来获得这个数字量,不知道这个想法是否可行,不行的话,麻烦讲解一下 … 查看全部问答> |
|
本帖最后由 游乐场 于 2014-7-16 21:51 编辑 普通的白炽灯要有500流明的光通量大概需要60W,而500流明的LED大概在5W到20W左右,每一盏LED都比白炽灯更加节能。现在用WEBENCH设计一款500流明光通量的LED。第一步 在LED设计框选择输入设 ...… 查看全部问答> |




