STM32F413-硬件概况
ARM架构。细琢磨有一种很奇妙的感觉。
我持有的板子是STM32F413H-Discovery,它是Cortex-M4的处理器。这款板子是后续系列的硬件基础。
核心功能区
Cortex-M4
Cortex-M4处理器是ARMv7-M架构的一种实现,它是一种32位精简指令集(Reduced Instruction Set Computing, RISC)的处理器,有一个三阶的指令流水线,依次对指令进行取指、 解码、执行操作。它是一种哈佛架构,可以同时获取指令和数据,使用32位的地址总线,可以访问4G的地址空间。而且它采用的是一种装载存储结构, 也就是说它不能直接操作内存空间里的数据,需要先把内存空间中的数据装载到内核寄存器中,处理完毕之后再存储到内存中。
我们常说某某软件是基于ARM指令集,某某处理器是RISC-V微处理器。但这其实都是一种标准的实现。ARM是做芯片标准的公司,主要负责的是芯片内核的架构设计。而像意法半导体这样的公司,他们并不做标准。他们主要根据ARM公司提供的芯片内核标准设计自己的芯片。以Cortex-M4芯片为例,任一Cortex-M4芯片,它们的内核结构都是一样的,不同的是它们的存储器容量,片上外设IO以及其他模块的区别。所以,ARM标准提出的目的是使不同芯片厂商生产的Cortex-M4芯片能在软件上基本兼容。在标准提出后,各芯片厂商就要按照这个标准去编写芯片内核的驱动程序,比如系统函数的命名、芯片初始化启动流程等。
上图大体可以把处理器分为三个部分:内核、总线接口和调试系统。其中调试系统主要用于固件的调试,监视系统的运行状态。它对于我们应该如何编写程序没有影响。内核是处理器最核心的部分。它完成了几乎所有的运算、控制着程序的运行过程,以及中断的响应服务。它通过总线接口与内存空间交互,获取指令,装载数据,驱动外设,它由5个单元构成:
- 中断控制器(NVIC)
- 系统计时器(SysTick)
- 三阶流水线(3-stage pipeline)
- 浮点单元(FPU)
- 指令跟踪接口(Instruction Trace Interface)
存储器
主要分为两种:
- 易失性存储器RAM:
- DRAM:动态随机存储器;
- SRAM:静态随机存储器。
特性 DRAM SRAM 存取速度 较慢 较快 集成度 较高 较低 生产成本 较低 较高 是否需要刷新 是 否 在实际应用场合中,SRAM一般只用于CPU内部的高速缓存(Cache),而外部扩展的内存一般使用DRAM。
- 非易失性存储器:
- ROM:只读存储器;
- FLASH:可重复擦写的存储器。
存储器 | 存储内容 | 读写延迟 | 掉电数据状态 | 写入次数 | 写入条件 | 成本 | 容量 |
---|---|---|---|---|---|---|---|
易失性存储器RAM | 运行中的动态数据 | 几乎无延迟 | 消失 | 无限 | 无条件 | 高 | 小 |
非易失性存储器 | 用户程序等 | 有延迟 | 保存 | 10余万次 | 先擦除 | 低 | 大 |
时钟
两种时钟,一种是驱动外设的心脏,另一种就是包含日历等的实时时钟(RTC)
电源管理
STM32芯片主要通过引脚VDD从外部获取电源,在它的内部具有电源监控器用于检测VDD的电压,以实现复位功能及掉电紧急处理功能。
为了方便进行电源管理,STM32把它的外设、内核等模块根据功能划分了供电区域。主要分为备份域电路、内核电路以及ADC电路三部分。
重要功能区
功耗
STM32还有不同的功耗模式,按功耗由高到低排列,STM32具有运行、睡眠、停止和待机四种工作模式。
ADC和DAC
模数转换器。
DMA
直接内存访问,实现数据在外设寄存器与存储器之间或者存储器与存储器之间高速传输,且无需任何CPU操作控制。硬件层次上,DMA控制器是独立于Cortex-M4内核的,有点类似于GPIO、USART外设一般,只是DMA的功能是可以快速移动内存数据。
GPIO
调试
定时器
总览
STM32F413的主系统由32位多层AHB总线矩阵构成,可实现以下部分的互连:
- 六条主控总线:
- 带FPU的Cortex®-M4内核I总线、D总线和S总线
- DMA1存储器总线
- DMA2存储器总线
- DMA2外设总线
- 七条被控总线:
- 内部Flash ICode总线
- 内部Flash DCode总线
- 主内部SRAM1(256 KB)
- 辅助内部SRAM2(64 KB)
- AHB1外设(包括AHB-APB总线桥和APB外设)
- AHB2外设
- FSMC/QuadSPI
借助总线矩阵,可以实现主控总线到被控总线的访问,这样即使在多个高速外设同时运行期 间,系统也可以实现并发访问和高效运行。
在此硬件基础上,我们之后会系统学习一下HAL。该系列讲解的顺序遵照STM32F413/STM32F423参考手册的顺序。