1. STM32F10X-架构
来源:互联网 发布:优化9蒙古入侵 编辑:程序博客网 时间:2024/06/05 01:52
STM32F10xx系列单片机是意法半导体推出的ARM核心单片机。性价比非常高,真正做到了高性能、低价格并且极易使用,因此受到了工程师和应用厂商的共同青睐。
1. ST和ARM
ST是半导体设计、制造公司,ARM是知识产权(IP intellectual property)供应商,它的产品是ARM内核。
对于STM32F10XX,其中CPU是ARM公司设计的,其他部分是ST公司设计的,整个芯片是ST公司制造的。
2. STM32F10XX
对于一个MCU(microcontroller unit),就像它的名字一样,其主要角色就是一个控制器(controller)而且是一个微(micro)控制器,并且它自成一个装置(unit),因此它是一系列组件的结合。
这些组件包括CPU(中央处理器)、ROM、RAM、总线、各种控制设备(外设)等等。。。
2.1 STM32F10XX系统架构
简单一点,所谓的系统架构就是:MCU里面有哪些东西?这些东西是怎么布置(连接)的?
通过这幅图总线矩阵图,理解它的架构就足够了:
所有的组件都通过总线连接到总线矩阵,总线矩阵协调各个总线之间的访问仲裁,仲裁利用轮换算法。
总线的另一端连接的设备按功能分为两大类:
- 控制设备(总线主设备 ,可以主动访问总线上其他组件的设备)
- 被控制设备(总线从设备,可以通过总线被访问到的设备)
来个更详细的:
小结:
芯片内各个组件都连接到各自总线->各个总线都连接到总线矩阵->总线矩阵协调各个总线之间的访问仲裁。
2.2 存储器映射
为使CPU能控制芯片中的每个组件,组件就必须要有一个确切的地址。
各个组件和4GB地址空间的对应关系就是储器映射。
程序存储器、数据存储器、寄存器和输入输出端口被组织在同一个4GB的线性地址空间内。可访问的存储器空间被分成8个主要块,每个块为512MB。
数据字节以小端格式存放在存储器中。其他所有没有分配给片上存储器和外设的存储器空间都是保留的地址空间。(没有分配的不要用,是系统保留的,用了会出问题。)
知识点:
- 小端:一个字里的最低地址字节被认为是该字的最低有效字节,而最高地址字节是最高有效字节。
- 大端:反过来即是。
存储器映射图:
其实,上面的具体分配是ST做的,但是ARM提供了一个框架,ST具体了每个组件的地址。下面是ARM的存储器映射框架:
2.3 寄存器映射
在block2地址块中编排的是外设寄存器的地址。
外设寄存器是用来控制外设或缓存外设数据的数字电路结构。在本质上,它们和存储器(如FLASH或SRAM)没什么区别,都是不同功能的数字电路。只是在应用上主要用于外设的访问和控制。
映射的定义没有改变,就是对应关系。
寄存器映射是指:一个(寄存器的)地址与一个(我们取的)名字的对应关系。有了这样的映射关系,在写程序时就可以用一个符号来代指一个寄存器,而不要通过一个个地址来代指,大大地方便了程序的编写(特别是C语言程序)。
3. Cortex系列处理器
前面简单地看了看STM32的功能结构,在单片机中最重要的一部分便是CPU,往往,我们在做应用时与它打交道是最少的,但对于整个单片机来讲,它是最重要的,也是最复杂的。
ARM公司设计的处理器自从ARM11(指令集版本为ARMv6)之后,命名为Cortex。
Cortex分为三个系列,如下图(指令集版本分别为ARMv7-A、ARMv7-R、ARMv7-M):
- Cortex-A:Application,面向尖端的基于虚拟内存的操作系统和用户应用。
- Cortex-R:Realtime,面向实时应用。
- Cortex-M:Mircocontroller,面向微控制器。
ARM指令集架构历史回顾:
3.1 Cortex-M家族:
3.2 Cortex-M结构
和其他哈佛结构的精简指令集CPU一样,Cortex-M3的指令总线和数据总线是分开的,这样的设计大大提高了执行效率。
这货比较底层,也没什么好说的,不是太简单而是太复杂,不懂,所以不敢乱说。
看图:
内核的详细知识请看一本书:
Cortex-M3 权威指南
Joseph Yiu 著
宋岩 译
4. 小结
主要描述了基于ARMv7架构的Cortex-M3内核的STM32F10XX芯片的架构。它包括:
- 哈佛结构的Cortex-M3内核(单片机的核心)。
- 驱动设备:数据总线、系统总线、DMA1、DMA2.
- 被驱动设备:嵌入式片上Flash、片上SRAM、FSMC、总线桥以及各种外设。
- 连接各个总线的总线矩阵。
还描述了存储器的映射关系。
意思意思了一下Cortex-M3内核。
本着回头再看看STM32的想法,又花了一天时间,才写了个基础架构,其实还有很多细节没顾得到。请看以后的博客,接下来复习复习外设,毕竟,它们才是一线士兵,冲锋陷阵!
- 1. STM32F10X-架构
- stm32f10x
- STM32F10X _FAULT
- STM32F10X笔记
- STM32F10x的定时器使用
- STM32F10x外部中断释疑
- STM32F10x的解释
- STM32F10x命名规则
- STM32F10x 之GPIO
- STM32F10x的中断
- STM32F10x 调试口释放
- STM32F10x中,一些专业术语
- STM32F10x中的串口寄存器
- STM32F10x中的端口寄存器
- stm32f10x ucosii 移植要点
- stm32f10x.h阅读记录
- STM32F10x.s 启动文件
- 简单解析stm32F10x.h
- C++常用小知识点总结
- java List 排序 Collections.sort() 对 List 排序
- ACM算法:迪杰斯特拉最短路径
- leetcode Product of Array Except Self 生成除自己之外的数组
- [CODE【VS】]江哥的DP题d
- 1. STM32F10X-架构
- linux 命令小结
- python 爬虫爬取所有上市公司公告信息(一)
- SpringBoot24-spingboot数据访问-声明式事务
- 新建一个Maven Web项目jsp出现错误(关于Tomcat服务器)
- Java并发编程 07 Executors框架
- 通过 TensorFlow 进行的机器学习 如何帮助可口可乐实现移动购买凭证
- 人人可以机器学习!谷歌教你零编程基础玩转机器学习 ‖ github+教程
- 腾讯、阿里、百度、网易等18家中秋月饼设计盘点!(完整版)