【STM32内部架构理解】

STM32和GD32F10X内部架构


最开始学stm32开始对架构各部分不是很了解看架构图基本上走马观花,然后陷入对各个外设的投入中去(比如GPIO/ADC/CAN等),但是对整体架构的掌握对后面编程很多细节的理解帮助很大,而外设的使用是学不完的,无需沉溺其中。在此处做回忆自用。

整体架构

STM32整体架构
看图说话:
ARM公司是设计芯片内核的公司,将专利授权给STM公司后,STM公司在内核如CotexM3的基础上进行设计,如外设和内核如何传递信息、外围设计哪些外设等。最后将整体封装引脚引出交付给买家。

模块架构

STM32F103模块化系统结构
如上图就是对系统结构进一步细化:
看这个图先要搞清楚驱动和被动单元是哪几个?
在小容量、中容量和 大容量产品中,主系统由以下部分构成:
● 四个驱动单元:
─ Cortex™-M3内核DCode总线(D-bus),和系统总线(S-bus)
─ 通用DMA1和通用DMA2
● 四个被动单元
─ 内部SRAM
─ 内部闪存存储器
─ FSMC
─ AHB到APB的桥(AHB2APBx),它连接所有的APB设备
1. 首先Cotex-M3内核通过ICode总线(Instruction)在Flash里面读取指令(就是你烧进去的代码)。
2. DCode总线(Data)用来读取存储在SRAM里面的数据,这里的数据就是程序里定义的数据(包括变量和常量,常量用const修饰后存储在Flash中),不管是全局变量extern还是局部变量static都是存储在SRAM里面。
3.系统总线System Bus 主要是用来对外设的寄存器进行操作。
4.DMA总线可以访问FLASH、SRAM、数据寄存器,并在三者间快速交换数据。
5.AHB总线桥接成APB1和APB2,众多外设分别挂载在这两条总线上,所以编程时你会发现所有片上外设的寄存器地址都是基于AHB总线地址定义的。

总线矩阵

总线矩阵在这里插入图片描述
总线矩阵用来在多个主设备(驱动单元)和从设备(被动单元)之间进行调度,避免两个主设备同时对一个从设备读写的情形。图中标有圆点的表示这两个设备间可以通信。比如 S0:I 总线只有跟 M0、M2 和 M6 这三根被控总线交叉的时候才有圆圈,就表示 S0 只能跟这三根被控总线通信。从功能上来理解,I 总线是指令总线,用来取指,指令指的是编译好的程序指令。我们知道 STM32 有三种启动方式,从 FLASH 启动(包含系统存储器),从内部 SRAM 启动,从外部 RAM 启动,这三种存储器刚好对应的就是M0、M2 和 M6 这三条总线。

举例:当多个AHB 主设备试图同时访问同一个AHB从设备时,总线矩阵仲裁器介入以解决访问冲突。在下面的例子中CPU 和DMA1 均试图访问SRAM1 以读取数据。

图片
如上述示例总线访问请求同时发生的情况下,就需要总线矩阵仲裁。为了解决这种问题,需要应用循环调度策略:如果本次最后赢得总线控制权的主设备是CPU,则在下一次访问中DMA1将赢得总线控制权并首先访问SRAM1。CPU 随后方可有权访问SRAM1。

  • 4
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在STM32硬件面试中,可能会涉及到以下问题: 1. STM32是什么?它和其他微控制器有什么不同? 答:STM32是意法半导体公司推出的一款32位微控制器,具有高性能、低功耗、易于开发等特点。相比于8位和16位微控制器,STM32具有更高的处理能力、更多的外设和更强的抗干扰能力。 2. 如何使用STM32进行开发? 答:STM32可以使用C语言或汇编语言进行开发。常用的开发工具有Keil、IAR、Atollic等。在开发过程中,需要编写程序代码,调试程序并下载到芯片中,最后进行测试。 3. STM32系统架构是怎样的? 答:STM32系统架构分为以下几个部分:核心部分、内部SRAM、Flash存储器、系统时钟、GPIO、中断管理器、DMA控制器、串口、定时器、ADC/DAC模块、SPI、I2C等外围设备。 4. STM32如何与外围设备进行通信? 答:STM32可以使用多种通信协议实现与外围设备的通信,如SPI、I2C、USART等。在使用这些协议时,需要进行相应的配置和控制。 5. 如何进行STM32的低功耗设计? 答:STM32具有多种低功耗模式,如Sleep、Stop、Standby等。在设计过程中,可以选择合适的低功耗模式,关闭不必要的外围设备、降低时钟频率等方式来降低功耗。 以上是STM32硬件面试中可能会涉及到的问题,需要理解STM32系统架构、通信方式、低功耗设计等方面的知识,并能够灵活运用。 ### 回答2: STM32是一款具有强大的硬件功能和优良的性能的微控制器系列。对于STM32硬件的面试题,一些可能涉及到的问题包括: 1. STM32有哪些主要的系列和型号? STM32主要系列包括F0、F1、F2、F3、F4、F7、G0、G4、H7等,每个系列下又有不同型号,如:F103、F407等。 2. STM32的内核架构是什么? STM32的内核架构采用了ARM Cortex-M系列的内核,具有高性能、高效能、低功耗的优势,支持Thumb-2指令集,具有多种工作模式和低功耗模式。 3. STM32的时钟系统包含哪些组件? STM32的时钟系统包含主时钟源HSE/LSE、内部时钟源HSI/LSI、系统时钟SYSCLK、高速AHB总线时钟HCLK、外设总线APB1/APB2时钟等多个部分组成。 4. STM32的外设包含哪些模块? STM32的外设包含有定时器、串口、SPI、I2C、ADC、DAC等多种模块,可以满足多种应用需求,同时还支持中断/DMA等多种方式实现高效的数据传输和处理。 5. 如何实现STM32的外部中断? STM32的外部中断可以通过配置NVIC中断控制器和GPIO外部中断线路来实现,具体可通过控制相应的GPIO中断触发方式、使能中断和编写中断服务程序等操作来完成。 总的来说,掌握STM32的硬件架构和相关外设模块的使用,是很重要的基础知识,对于硬件工程师或嵌入式系统开发人员而言都是必须的技能。 ### 回答3: 在STM32的硬件面试中,可能会遇到以下问题: 1. 请简要介绍STM32架构STM32是基于ARM Cortex-M架构的微控制器,它拥有强大的计算能力、多重中断控制器、低功耗模式以及详细的开发工具支持。这些特性使得STM32在各种应用中非常适用,尤其是嵌入式领域中。 2. STM32有哪些不同的工作模式? STM32可以在不同的工作模式下运行,包括Run、Sleep、Stop以及Standby。在Run模式下,STM32会以正常的工作速度运行。在Sleep模式下,STM32可以暂时停止工作以节省能耗。Stop模式可以暂时关闭所有外围设备以及模块,非常大地降低功耗。Standby模式可以完全关闭芯片的电源,只有外部中断才能激活它。 3. STM32的时钟系统是怎样的? STM32的时钟系统可以为芯片提供高精度的时钟,并且可以处理多种不同的时钟格式。它包括内部RC振荡器、内部晶振、外部晶振等多种时钟源,还可以自动切换时钟源以维持高精度的时钟。时钟系统还可以配置分频器、时钟倍频器等以及提供用于各种外设的时钟输出。 4. 请介绍STM32内部存储结构。 STM32拥有不同的存储空间,包括闪存、SRAM、EEPROM以及外部存储器等。闪存用于存储程序代码,SRAM用于存储数据,EEPROM用于非易失性数据的存储,而外部存储器用于存储更大的数据量。 5. STM32的外围设备包括哪些? STM32的外围设备包括SDIO、UART、SPI、I2C、ADC、DAC、定时器、DMA等。这些设备可以通过STM32内部总线进行连接和通信,以便实现各种应用。这些设备还可以通过使用中断方式来处理外部事件,以保持芯片的高效性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值