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系统总体架构的一些简单描述。

相关推荐
Arciab35 分钟前
51单片机入门:LED灯控制(01)
单片机·led·51
LaoZhangGong1231 小时前
Linux第95步_Linux内核中的INPUT子系统
linux·运维·数据库·经验分享·stm32·input·stm32mp127
scgg4 小时前
STM32抢占优先级不生效
stm32·疑问
可乐鸡翅好好吃5 小时前
STM32的中断(什么是外部中断和其他中断以及中断号是什么)
c语言·stm32·单片机·嵌入式硬件·mcu·物联网·51单片机
没有余地 EliasJie6 小时前
深度学习图像视觉 RKNN Toolkit2 部署 RK3588S边缘端 过程全记录
人工智能·嵌入式硬件·深度学习
嵌入式大圣7 小时前
单片机在电路板中的应用
单片机·嵌入式硬件
小A1599 小时前
STM32完全学习——使用标准库完成PWM输出
stm32·单片机·学习
小A1599 小时前
STM32完全学习——使用标准库完成定时器中断
stm32·单片机·学习
美式小田9 小时前
单片机学习笔记 10. 中断系统(理论)
笔记·单片机·嵌入式硬件·学习