STM32学习笔记1(初识STM32)

一、命名方法

STM32学习笔记1(初识STM32)_第1张图片

图1 STM32F103ZET6命名解释

 二、芯片架构

STM32学习笔记1(初识STM32)_第2张图片

图2 STM32 芯片架构简图

        STM32F103 采用的是 Cortex-M3 内核,内核即 CPU,由 ARM 公司设计。 ARM 公司并不生产芯片,而是出售其芯片技术授权。芯片生产厂商(SOC)如 ST、 TI、 Freescale,负责在内核之外设计部件并生产整个芯片,这些内核之外的部件被称为核外外设或片上外设。如 GPIO、 USART(串口)、 I2C、 SPI 等都叫做片上外设。

三、STM32F10xx系统框图

STM32学习笔记1(初识STM32)_第3张图片

        图3 STM32F10xx 系统框图 

        芯片(这里指内核,或者叫 CPU) 和外设之间通过各种总线连接,其中驱动单元有 4个,被动单元也有 4 个。 为了方便理解,我们都可以把驱动单元理解成是CPU 部分,被动单元都理解成外设。

1.ICode总线

        ICode 中的 I 表示 Instruction,即指令,它是专门用来取指的。

2.驱动单元

DCode 总线

        DCode 中的 D 表示 Data,即数据,那说明这条总线是用来取数的。

系统总线

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

DMA 总线

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

3.被动单元

内部的闪存存储器

        即 FLASH,我们编写好的程序就放在这个地方。 内核通过 ICode 总线来取里面的指令。

内部的SRAM

        即我们通常说的 RAM,程序的变量,堆栈等的开销都是基于内部的SRAM。内核通过 DCode 总线来访问它。

FSMC

        灵活的静态的存储器控制器,通过 FSMC,我们可以扩展内存,如外部的SRAM,NANDFLASH 和 NORFLASH。但有一点我们要注意的是, FSMC 只能扩展静态的内存,即名称里面的 S: static,不能是动态的内存,比如 SDRAM 就不能扩展。

AHB到APB的桥

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

四、寄存器映射

        被控单元的FLASH, RAM, FSMC和AHB到APB的桥(即片上外设) ,这些功能部件共同排列在一个 4GB 的地址空间内。我们在编程的时候, 可以通过他们的地址找到他们,然后来操作他们(通过 C 语言对它们进行数据的读和写) 。给存储器分配地址的过程就称为存储器映射, 如果给存储器再分配一个地址就叫存储器重映射。
 

STM32学习笔记1(初识STM32)_第4张图片

 图4 存储器映射

存储器区域功能划分

         在这 4GB 的地址空间中, ARM 已经粗线条的平均分成了 8 个块,每块 512MB。

STM32学习笔记1(初识STM32)_第5张图片

图5 存储器功能分类

         Block0 主要用于设计片内的 FLASH ,大小为512KB。Block1 用于设计片内SRAM,大小为64KB。Block2 用于设计片内的外设,根据外设的总线速度不同, Block 被分成了 APB 和 AHB两部分,其中 APB 又被分为 APB1 和 APB2。





        


 

你可能感兴趣的:(stm32)