当前位置: 首页 > article >正文

STM32总体架构简单介绍

目录

一、引言

二、STM32的总体架构

1、三个被动单元

(1)内部SRAM 

(2)内部闪存存储器

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

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

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

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

(3)通用DMA1(Direct Memory Access)

(4)通用DMA2

3、其他单元

(1)内核ICode总线

 (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)

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

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


http://www.kler.cn/a/408965.html

相关文章:

  • 非常简单实用的前后端分离项目-仓库管理系统(Springboot+Vue)part 2
  • 曲谱转换成音频
  • 【人工智能】AutoML自动化机器学习模型构建与优化:使用Auto-sklearn与TPOT的实战指南
  • Java 基础知识 (集合框架 + 并发编程 + JVM 原理 + 数据结构与算法)
  • C++ 编程指南05 - 编译时检查优于运行时检查
  • 大数据基于Spring Boot的化妆品推荐系统的设计与实现
  • 【SQL】【数据库】语句翻译例题
  • IDEA 添加外部.jar包。maven本地仓库录入新jar包。IDEA maven 命令巧妙使用。
  • php 限制访问次数
  • 数据结构-队列-顺序队列
  • tauri2.0版本开发苹果ios和安卓android应用,环境搭建和最后编译为apk
  • C++结构型设计模式之使用抽象工厂来创建和配置桥接模式的例子
  • XviD4PSP视频无损转换器
  • oracle的静态注册和动态注册
  • 数据可视化复习2-绘制折线图+条形图(叠加条形图,并列条形图,水平条形图)+ 饼状图 + 直方图
  • 【技术支持】vscode不使用插件,两种方式重命名html标签对
  • 基于物联网设计的人工淡水湖养殖系统(华为云IOT)_253
  • 关于mqtt协议与qt联合开发的实现记录
  • 用Tauri框架构建跨平台桌面应用:1、Tauri快速开始
  • 【桂林理工大学主办 | 往届均已EI检索】第五届能源工程、新能源材料与器件国际学术会议(NEMD 2025)
  • ctfshow -web 89-115-wp
  • 数据结构之二:表
  • RoPE——Transformer 的旋转位置编码
  • Centos使用docker搭建Graylog日志平台
  • python中的base64使用小笑话
  • vue从入门到精通(七):事件处理