首页 > 其他分享 >STM32 芯片架构

STM32 芯片架构

时间:2024-07-23 16:45:02浏览次数:6  
标签:DMA 架构 芯片 SRAM 总线 STM32 寄存器 外设

STM32 芯片架构

把STM32 想像类比成一台电脑。
CPU 通过 总线(Bus) 控制各类外设。

img

img

img

各部分功能如下:

  1. CPU:包含运算器,控制器及若干寄存器,是单片机的控制和指挥中心。

  2. ROM (STM32中称为FLASH):用于存放程序和数据,为只读储存器。更改(擦除)和写入程序都较为麻烦, 需要遵守FLASH相关的协议。可以认为是计算机的硬盘。

  3. RAM(STM32中称为SRAM):用于存放运算的中间结果、数据暂存及数据缓冲等。可以随机读入或读出,读写速度快,读写方便;但是断电或复位会丢失数据。可以认为是计算机的内存。

  4. 总线矩阵:总线矩阵用于主控总线之间的访问仲裁管理,提高了各部件交流的效率。

  5. 寄存器:虽然图里面没有寄存器,但是后续会经常提到它。寄存器可以看成储存0和1的一个指定名字和功能的地址。如果我们要在某个引脚输出一个低电平,我们只要往相的引|脚对应的寄存器写一个1,即可实现。

  6. GPIO:通用型输入输出(接口),意思是你可以随意使用它输出或输入0和1,甚至以115200次每秒的速度翻转或接收0和1。

说明:上面的各部分功能都集成在一个芯片上,集成度高。

img

img

ICode 总线

ICode 中的 I 表示 Instruction,即指令,它是专门用来取指令的。
我们写好的程序编译之后都是一条条指令,存放在 Flash 中,内核要读取这些指令来执行程序就必须通过 ICode 总线,它几乎每时每刻都需要被使用,是专门用来去指的。

驱动单元

1.DCode 总线

DCode 中的 D 表示 Data,即数据,那说明这条总线是用来取数的。我们在写程序的时
候,数据有常量和变量两种,常量就是固定不变的,在C语言中用const 关键字修饰,是放在内部Flash中,变量是可变的放在内部SRAM当中。

2.系统总线

系统总线主要是访问外设的寄存器,我们通常说的寄存器编程,即读写寄存器都是通
过这根系统总线来完成的。

3.DMA 总线

DMA 总线也主要是用来传输数据,这个数据可以是在某个外设的数据寄存器,可以在SRAM,可以在内部的 FLASH。因为数据可以被 Dcode 总线和 DMA 总线访问,所以为了避免访问冲突,在取数的时候需要经过一个总线矩阵来仲裁,决定哪个总线在取数。

4.总线矩阵

总线矩阵:主要负责协调内核总线与DMA主控总线之间的访问仲裁,因为系统内核总线和DMA主控总线都能访问数据(来自FLASH、SRAM或者某个外设),避免冲突,需要总线矩阵来仲裁决定在哪个总线进行访问。

img

被动单元

1.内部 FLASH

FLASH,我们编写好的程序就放在这个地方。
一般程序编译后的二进制代码存储的地方,常量或者const修饰的也放在这里。
内核通过 ICode 总线来取里面的指令。

2.内部 SRAM

内部SRAM:程序函数内部的局部变量和全局变量,堆(malloc分配)栈(局部变量)等。
内核通过DCODE总线访问SRAM

3.FSMC(Flexible static memory controller): 灵活静态存储控制器

灵活的静态的存储器控制器,通过 FSMC,我们可以扩展内存,如

  • 外部的SRAM
  • NANDFLASH
  • NORFLASH
    注意的是:
  • FSMC 只能扩展静态的内存,即名称里面的 S: static。
  • 不能是动态的内存,比如 SDRAM 就不能扩展。

4.AHB到APB的桥

从 AHB 总线延伸出来的两条 APB2 和 APB1 总线,上面挂载着 STM32 各种各样的特色外设。我们经常说的GPIO、串口、 I2C、 SPI这些外设就挂载在这两条总线上,这个是我们学习 STM32 的重点,就是要学会编程这些外设去驱动外部的各种设备。

  • AHB总线:是Advanced High performance Bus的缩写,译作高级高性能总线,这是一种【系统总线】。AHB主要用于高性能模块(如CPU、DMA和DSP等)之间的连接。AHB 系统由主模块、从模块和基础结构(Infrastructure)3部分组成,整个AHB总线上的传输都由主模块发出,由从模块负责回应。

  • APB1总线:连接的是低速外设,包括电源接口、备份接口、CAN、 USB、 12C1、 12C2、 USART2、 USART3、 UART4、 UART5、 SP12、 SP3等。

    • 操作速度限制于36MHZ
  • APB2总线:连接的是高速外设,包括UART1、SPI1、 Timer1、 ADC1、 ADC2、 ADC3、所有的普通1/0口(PA-PE)、第二功能V/O (AFIO)口等。

    • 操作速度限制于72MHZ。

img

STM32外设

  1. MISC:把NVIC的外设驱动放在了misc.c中(NVIC提供中断控制器,用于总体管理异常,称之为“内嵌向量中断控制器)
  2. ADC:模数转换
  3. BKP:备份数据
  4. CAN:CAN总线是一种通信方式。STM32主要负责程序的运行,而CAN总线只是一种通信协议。STM32之间的通信可以通过CAN总线进行数据交换。
  5. CEC:网络模块
  6. DAC:数模转换
  7. DBGMCU:调试支持
  8. DMA:直接内存存取控制器(传输数据)
  9. EXTI:外部中断事件控制器
  10. FLASH:闪存存储器
  11. FSMC:灵活的静态存储器控制器
  12. GPIO:通用输入输出
  13. I2C:I2C接口
  14. IWDG:独立看门狗
  15. PWR:电源/功耗控制
  16. RCC:复位与时钟控制器
  17. RTC:实时时钟
  18. SDIO:SDIO接口
  19. SPI:串行外设接口
  20. TIM:定时器
  21. USART:通用同步/异步接收器
  22. WWDG:窗口看门狗

STM32 开发方式

STM32的3种开发方式:寄存器开发,标准库,HAL库。

  1. 寄存器开发:通过直接操作寄存器进行开发,但是由于STM32的寄存器数量众多,逐个查询比较繁琐。
  2. 标准库:ST公司为每一款芯片都编写了一份库文件,也就是工程文件里的stm32F1XX…之类的,这些.c .h文件中包含了一些常用量的宏定义,一些外设也通过结构体进行包装起来,例如GPIO口时钟等,只需要配置结构体变量的成员就可以修改外置的配置寄存器。
  3. HAL(Hardware Abstraction Layer)库:硬件抽象层。是ST公司为了更好的移植性推出的一个软件库。相对于标准库来说更为简洁。只要使用相通的外设,程序可以通用。ST公司研发的STM32CubeMX软件,可以通过图形化的配置功能,直接生成整个使用HAL库的工程文件。

STM32 启动方式

  1. 用户闪存存储器启动模式(Main Flash memory) 正常的用户工作模式,通过 jtag 和 swd 模式进行下载程序,重启后也直接从这启动程序。

  2. 系统存储器启动模式(System memory) 从系统存储器启动,这种模式启动的程序功能是由厂家设置的。

  3. SRAM启动(Embedded Memory) SRAM,没有程序存储的能力,这个模式一般用于程序调试。

img

标签:DMA,架构,芯片,SRAM,总线,STM32,寄存器,外设
From: https://www.cnblogs.com/jeikerxiao/p/18318736

相关文章

  • STM32 产品型号
    STM32家族系列家族命名:https://stm32-base.org/guides/getting-startedSTM32家族目前由17个系列组成。这些系列分为四个不同的组:高性能主流超低功耗无线STM32产品型号STM32型号的说明:以STM32F103C8T6这个型号的芯片为例,该型号的组成为7个部分,其命名规则如下:......
  • STM32学习(4)--OLED调试工具
    OLED调试工具4.1OLED调试工具1.调试方式2.OLED简介3.硬件电路4.OLED驱动函数4.2OLED显示屏4.1OLED调试工具1.调试方式串口调试:通过串口通信,将调试信息发送到电脑端,电脑使用串口助手显示调试信息显示屏调试:直接将显示屏连接到单片机,将调试信息打印在显示屏上Keil......
  • 简单架构:采集库dll、检测算法dll、项目程序exe,框架库dll
    一般项目exe通过调用各种封装的dll来完成工作。视觉项目exe调用采集库dll、检测算法dll就可以了,有一定积累后凝练出框架库dll(日志、队列、线程池等必不可少的部分封装)它们之间通过“接口函数+数据”来配合。针对采集dll:IGrabber.h里放接口函数,如开始采集、停止采集、set参数......
  • AP8100 外围简单的 BOOST 升压恒压控制驱动 LED 大功率升压恒流驱动芯片
    说明AP8100是一款外围电路简单的BOOST升压恒压控制驱动芯片,适用于2.8-40V输入电压范围的升压恒压电源应用领域,启动电压可以低至2.5V。芯片会根据负载的大小自动切换PWM,PFM和BURST模式以提高各个负载端的电源系统效率。本芯片可以通过EN脚实现低待机关机功能,当......
  • STM32读写FLASH
    要点:读写前要解锁并擦除整页才可以重新写入 测试代码#include"my_flash.H"/***@brief往内部FLASH写入数据*@paramaddr写入地址*@parampdata存储待写数据*@retvalNone*/voidFLASH_Inside_Wr(uint32_taddr,uint32_tPdata){//定义局部变......
  • 龙芯3A6000架构安装x86架构安装包
    1.环境准备:一台龙芯3A6000架构的银河麒麟桌面版系统2.步骤:以安装realvncserver为例打开必应(https://cn.bing.com/)搜索realvnc,打开下载安装包,下载x64架构的deb格式的安装包下载完成后,进行安装提示与当前架构不符,对这个deb安装包使用归档管理器解压到当前目录,然后打开control......
  • STM32F429IGT6 STMCubeMX PWM 控制 180 舵机
    设置PWM对应引脚PA2![[QQ_1721613625998.png]]定时器2受APB1控制![[QQ_1721613709674.png]]配置时钟为72MHZ![[QQ_1721613757231.png]]HAL库定义PWM/*TIM2initfunction*/voidMX_TIM2_Init(void){/*USERCODEBEGINTIM2_Init0*//*USERCODEENDTI......
  • 架构师的新武器:Codigger之软件项目体检Software Project HealthCheck
    在软件架构这一充满挑战与创新的领域中,架构师宛如精心雕琢宏伟建筑的艺术大师,他们的每一个决策都决定着软件系统的稳固性、可扩展性和性能表现。而Codigger软件项目体检,无疑是架构师手中一件崭新且威力强大的神兵利器,为打造卓越的软件架构提供了有力支撑。项目体检在架构合理性......
  • 多模态大模型主流架构模式的演化历程
    多模态大模型主流架构模式的演化历程一、引言近年来,随着深度学习技术的飞速发展,多模态学习逐渐成为人工智能领域的研究热点。与单一模态不同,多模态学习旨在利用不同模态数据(如文本、图像、音频等)之间的互补信息,构建更加全面、准确的智能模型。多模态融合是实现多模......
  • AI大模型技术的四大核心架构演进之路
    随着人工智能技术的飞速发展,大模型技术已经成为AI领域的重要分支。本文将深入探讨四种关键的大模型技术架构:纯粹Prompt提示词法、Agent+FunctionCalling机制、RAG(检索增强生成)以及Fine-tuning微调技术,揭示它们的特性和应用场景。一、纯粹Prompt提示词法:构建直观交互模......