STM32总体架构简单介绍

目录

一、引言

二、STM32的总体架构

1、三个被动单元

(1)内部SRAM

(2)内部闪存存储器

[(3)AHB到APB的桥(AHB to APBx)](#(3)AHB到APB的桥(AHB to APBx))

2、四个主动(驱动)单元

(1)Cortex-M3内核DCode总线(D-Bus)

(2)内核系统总线(S-Bus)

[(3)通用DMA1(Direct Memory Access)](#(3)通用DMA1(Direct Memory Access))

(4)通用DMA2

3、其他单元

(1)内核ICode总线

[(2)FSMC(Flexible Static Memory Controller)](#(2)FSMC(Flexible Static Memory Controller))


一、引言

在学习了前面一些关于STM32的基本用法后,我们能够发现,在STM32中的引脚占绝大部分都是GPIO口,他们无非就是用一些寄存器去控制进行一些输入输出的功能。因此,在了解了STM32的基本用法以后,我们有必要去宏观的了解一下它的总体架构,即stm32中各个部分、各个模块是怎样进行相互连接、相互通信以及相互影响的

接下来,我们就来了解一下stm32的总体架构。

二、STM32的总体架构

下图是STM32F10x的中文参考手册 中截过来的一张关于stm32的系统架构图

在STM32系统架构是一种哈佛架构,主要由三个被动单元四个主动(驱动)单元 以及其他单元构成。

如何去理解主动单元?

简单来说,就是能够自己去主动控制一些数据的通信等等的单元。它能够主动发出一些控制信号,去与其他部分进行数据交互等操作。其中,这里重要的是去与其他设备进行数据的通信,谁给谁发不重要。
如何理解被动单元?

理解了主动单元,被动单元就好理解了,简单理解就是没办法自己控制去进行发送的设备,只能去听别人的,相当于是一个从属的设备,即被动单元是一个处于从属状态的一种设备。

下面,我们来了解一下这三个被动单元和五个主动单元。

1、三个被动单元

(1)内部SRAM

|------------|--------------------------------------------------------------------------|
| 内部SRAM | 存储器(粗略理解成手机的内存) |
| 所属描述 | SRAM本身不具有控制数据通信,与他人进行数据交互的能力,而是需要CPU内核去给他发送命令,从而控制他去进行读写操作的。因此,它是一个被动单元。 |
| 主要功能 | 存储程序执行过程中用到的一些变量 |

(2)内部闪存存储器

|-------------|------------------------------------------------------------------------|
| 内部闪存存储器 | FLASH,一种类似电脑硬盘的存储器 |
| 所属描述 | flash本身也不能去进行发送数据,与他人进行数据交互,只能通过CPU内核或者其他设备模块来控制它进行读写等操作。因此,他也是一种被动单元。 |
| 主要功能 | flash能够存储我们下载的一些程序 、以及程序执行所使用的常量(通常是全局常量) |

因此,我们代码中用到的一些变量都是被存放在SRAM里面,而下载的代码程序以及程序中用到的常量都是统一存储在flash里面,因为我们程序本身也会被转成二进制文件,所以都放在flash里面了,那么很明显,我们flash的容量一般比SRAM的容量要大得多

以上两种存储器也是我们STM32中最重要的两大被动单元。

(3)AHB到APB的桥(AHB to APBx)

|---------------|------------------------------------------------------------------------|
| AHB to APBx的桥 | 连接AHB系统和APB外围总线的桥 |
| 所属描述 | 这些总线需要CPU内核给一些指令才能去控制他们与一些外设进行数据的交互通信。因此,这也是一种被动单元。 |
| 主要功能 | 桥1,通过APB2总线连接到APB2上的高速外设,速率可高达72MHz; 桥2,通过APB1总线连接到APB1上的低速外设,最高36MHz。 |

STM32要与外设去进行数据传输和数据通信主要就是通过这个总线矩阵,然后AHB系统总线作连接来实现的。

其中,AHB系统总线(Advanced High Performance Bus) ,即一种高级高性能系统总线,主要用于高性能模块(如CPU、DMA和DSP等)之间的连接

同时,我们观察系统架构图能够发现,系统总线连接不同外设时还要作区分,这个区分实际上是根据数据传输速率 来进行区分的,即外设被分成了高速外设低速外设两部分。

其中,这里经桥区分后连接外设的APB总线被称为外设总线 (Advanced Peripheral Bus)。STM32中APB2总线上连接的是高速外设,如模数转换ADC1、串口USART1、GPIOA等,APB1总线上连接的是低速外设,如DAC、USART2、定时器TIM2等。关于这些外设的区分,这里有个印象就好,后面我们再慢慢叙述。

实际上,除以上三种被动单元以外,还有一个也是被动单元,即FSMC,这个我们后面再介绍。

2、四个主动(驱动)单元

(1)Cortex-M3内核DCode总线(D-Bus)

|--------------------|----------------------------------------------------------|
| Cortex-M3内核DCode总线 | 从内核引出的总线之一 |
| 简单描述 | 内核通过D-Bus总线发出控制信号或指令与其他设备进行数据传输,因此这是一种主动单元。 |
| 主要功能 | 通过外部DCode总线连接总线矩阵,然后与闪存存储器的数据接口相连接,实现Flash常量的加载与调试访问 |

下图是该总线进行数据传输的数据流向:

(2)内核系统总线(S-Bus)

|---------------|-----------------------------------------------------|
| 内核系统总线(S-Bus) | 从内核引出的总线之一 |
| 简单描述 | S-Bus总线向其他设备或模块发送各种各样控制信号或者一些指令,来控制我们整个系统的数据传输。 |
| 主要功能 | 通过外部Syatem总线连接总线矩阵 |

下图是S-Bus总线进行数据传输时的数据流向:

(3)通用DMA1(Direct Memory Access)

(4)通用DMA2

|-----------|------------------------------------------------------------|
| 通用DMA1(2) | Direct Memory Access,直接内存访问(直接存储器访问) |
| 简单描述 | 通过DMA总线链接到总线矩阵。可以对内存发出控制信号,实现内存与外设的数据流动,故是一种主动单元。 |
| 主要功能 | 相当于CPU的"大秘书"。可以帮助高速运转的CPU实现相对低速的内存与外设之间的数据传输,以降低CPU负担。 |

下图是DMA总线提供直接通道时的数据流向:

3、其他单元

(1)内核ICode总线

|-----------|----------------------------------------------------------------------------|
| 内核ICode总线 | 内核引出的总线之一 |
| 简单描述 | 使读取指令不通过总线矩阵调度,是CPU与flash进行数据交互的一条专用通道 |
| 主要功能 | 内核通过外部ICode总线连接Flash接口,实现CPU内核对Flash中 存放指令 (存放了程序和常量的二进制指令)的读取 |

下面是经ICode总线的数据流向:

(2)FSMC(Flexible Static Memory Controller)

|------|-----------------------------------------------------------------------------------------------------------------|
| FSMC | Flexible Static Memory Controller,可变静态存储控制器 |
| 简单描述 | 一种**存储器扩展机制 |
| 主要功能 | 用于
扩展外部SRAM、Flash** 、以及直接通过FSMC连接LCD屏幕等 |

以上就是对stm32系统总体架构的一些简单描述。

相关推荐
学不动CV了11 分钟前
数据结构---链表结构体、指针深入理解(三)
c语言·arm开发·数据结构·stm32·单片机·链表
szxinmai主板定制专家1 小时前
【精密测量】基于ARM+FPGA的多路光栅信号采集方案
服务器·arm开发·人工智能·嵌入式硬件·fpga开发
工业互联网专业5 小时前
汇编与接口技术:8259中断实验
汇编·单片机·嵌入式硬件·8259中断实验
brave and determined5 小时前
国产MCU学习Day6——CW32F030C8T6: I2C功能详解与应用案例
单片机·eeprom·i2c·cw32f030c8t6·cw32·cw32f030·中断读取eeprom
梁山1号5 小时前
【ESP32】3.串口的发送与接受
单片机·物联网
KaiGer6665 小时前
AUTOSAR进阶图解==>AUTOSAR_SWS_V2XFacilities
单片机·汽车·嵌入式·autosar
desssq7 小时前
SPI通信协议
单片机·嵌入式硬件
星辰pid9 小时前
STM32实现四自由度机械臂(SG90舵机)多功能控制(软件篇freertos)
stm32·单片机·嵌入式硬件·机械臂
森焱森14 小时前
水下航行器外形分类详解
c语言·单片机·算法·架构·无人机
小殷学长17 小时前
【单片机毕业设计17-基于stm32c8t6的智能倒车监测系统】
stm32·单片机·课程设计