教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 行业资料 >

第3章STM32系列微控制器存储器与外设

来源:网络收集 时间:2026-01-22
导读: 第3章 STM32系列微控制器存储器与外设 3.1 存储器和总线的结构 3.1.1 系统结构 系统的主要部分包括: 四个驱动单元: - Cortex-M3内核指令总线 (I-bus),数据总线 (D-bus),以及系统总线 (S-bus) - GP-DMA(通用DMA) 三个被动单元: - 内部SRAM - 内部闪存存

第3章 STM32系列微控制器存储器与外设

3.1 存储器和总线的结构 3.1.1 系统结构

系统的主要部分包括:

四个驱动单元:

- Cortex-M3内核指令总线 (I-bus),数据总线 (D-bus),以及系统总线 (S-bus) - GP-DMA(通用DMA) 三个被动单元:

- 内部SRAM - 内部闪存存储器

这些通过一个多级的AHB总线构架相互连接,如图3.1所示: 图3.1:系统结构

ICode总线

该总线将Cortex-M3内核的指令总线与闪存存储器指令接口相连接。指令预取操作在该总线上进行。 DCode总线

该总线将Cortex-M3内核的DCode总线与闪存存储器的数据接口相连接(常量加载和调试访问)。 系统总线

该总线将Cortex-M3内核的系统总线(外设总线)连接到一个总线矩阵,总线矩阵协调

着内核和DMA间的访问。 DMA总线

该总线将DMA的AHB主机接口连接到一个总线矩阵,总线矩阵协调着CPU的DCode和DMA到SRAM、闪存和外设的访问。 总线矩阵

此总线矩阵协调内核系统总线和DMA主控总线之间的访问仲裁。此仲裁利用轮换算法。此总线矩阵由三个驱动部件(CPU的DCode、系统总线和DMA总线)和三个被动部件(闪存存储器接口、SRAM和AHB2APB桥)构成。

为了允许DMA访问,AHB外设通过一个总线矩阵连接到系统总线。 AHB/APB 桥 (APB)

两个 AHB/APB 桥在AHB和两个APB总线之间提供完全同步的连接。APB1 被限制在36 MHz, APB2 工作在全速状态 (根据设备的不同可以达到72 MHz)。

- 请参照表3.1 以获取连接到每个桥的外设的地址映射。 AHB 到 APB 桥 (AHB2APBx)该桥用来连接所有的APB设备

3.1.2 存储器结构

程序存储器、数据存储器、寄存器和I/O端口被组织到一个4G字节的线性地址空间。 这些字节在存储器小端格式编码,在小端格式中,一个字中最低地址的字节为该字的最低位字节,最高地址的字节为最高位字节。

图3.2展示了STM32F10x 的内存映射,若需要更为详细的外设寄存器的映射,请参考相关的章节。

可寻址的存储器空间被分为8个512MB的主块。

所有未分配给片上存储器或外设的存储区域被视为是保留的(图3.2中灰色阴影部分)。

3.1.3 存储器映射

图3.2 存储器映射

3.1.3.1 外设存储器映射

表 3.1:寄存器边界地址 边界地址

0x4002 2400 - 0x4002 3FFF 0x4002 2000 - 0x4002 23FF 0x4002 1400 - 0x4002 1FFF 0x4002 1000 - 0x4002 13FF 0x4002 0400 - 0x4002 0FFF 0x4002 0000 - 0x4002 03FF 0x4001 3C00 - 0x4001 3FFF 0x4001 3800 - 0x4001 3BFF 0x4001 3400 - 0x4001 37FF 0x4001 3000 - 0x4001 33FF 0x4001 2C00 - 0x4001 2FFF 0x4001 2800 - 0x4001 2BFF 0x4001 2400 - 0x4001 27FF 0x4001 2000 - 0x4001 1FFF 0x4001 1800 - 0x4001 1BFF 0x4001 1400 - 0x4001 17FF 0x4001 1000 - 0x4001 13FF 0x4001 0C00 - 0x4001 0FFF 0x4001 0800 - 0x4001 0BFF 0x4001 0400 - 0x4001 07FF 0x4001 0000 - 0x4001 03FF 0x4000 8000 - 0x4000 77FF 0x4000 7000 - 0x4000 73FF 0x4000 6C00 - 0x4000 6FFF 0x4000 6800 - 0x4000 6BFF 0x4000 6400 - 0x4000 67FF 0x4000 6000 - 0x4000 63FF 0x4000 5C00 - 0x4000 5FFF 0x4000 5800 - 0x4000 5BFF 0x4000 5400 - 0x4000 57FF 0x4000 5000 - 0x4000 4FFF 0x4000 4800 - 0x4000 4BFF 0x4000 4400 - 0x4000 47FF 0x4000 4000 - 0x4000 3FFF 0x4000 3800 - 0x4000 3BFF 0x4000 3400 - 0x4000 37FF 0x4000 3000 - 0x4000 33FF 0x4000 2C00 - 0x4000 2FFF 0x4000 2800 - 0x4000 2BFF

外设 保留

闪存存储器接口 保留

复位和时钟控制RCC 保留 DMA 保留 USART1 保留 SPI 1

TIM1定时器 ADC2 ADC1 保留

GPIO 端口 E GPIO 端口 D GPIO 端口 C GPIO 端口 B GPIO 端口 A EXIT AFIO 保留

电源控制(PWR) 备份寄存器(BKP) 保留 bxCAN

共享的USB/CAN SRAM 512字节 USB 寄存器 I2C2 I2C1 保留 USART3 USART2 保留 SPI2 保留

独立的看门狗(IWDG) 窗口看门狗(WWDG) RTC

总线

AHB

APB2

APB1

0x4000 2400 - 0x4000 0FFF 0x4000 0800 - 0x4000 0BFF 0x4000 0400 - 0x4000 07FF 0x4000 0000 - 0x4000 03FF 保留

TIM4 定时器 TIM3 定时器 TIM2 定时器

3.1.3.2 嵌入式SRAM

STM32F10x内置20K字节的静态SRAM,可以以字节、半字(16位)、字(32位)的方式访问,SRAM的起始地址为0x2000 0000。

3.1.3.3 位段

Cortex-M3存储器映像包括两个位段(bit-band)区。这两个位段区将别名存储器区中的每个字映射到位段存储器区的一个位,在别名存储区写入一个字具有对位段区的目标位执行读-改-写操作的相同效果。

在STM32F10x里,外设寄存器和SRAM都被映射到一个位段区里,这允许执行单一的位段的写和读操作。

下面的映射公式给出了别名区中的每个字是如何对应位带区的相应位的:

bit_word_addr = bit_band_base + (byte_offset x 32) + (bit_number × 4)

其中:

bit_word_addr 是别名存储器区中字的地址,它映射到某个目标位。 bit_band_base 是别名区的起始地址。

byte_offset 是包含目标位的字节在位段里的序号 bit_number 是目标位所在位置(0-31)

下面的例子说明如何映射别名区中SRAM地址为0x20000300的字节中的位2: 0x22006008 = 0x22000000 + (0x300*32) + (2*4).

对0x22006008地址的写操作和对SRAM中地址0x20000300字节的位2执行读-改-写操作有着相同的效果。

读0x22006008地址返回SRAM中地址0x20000300字节的位2的值(0x01 or 0x00)。 请参考《Cortex-M3技术参考手册》以了解更多有关位段的信息。

模块 主存储器

表3.2:闪存模块的结构 名字 地址

0x0800 0000 - 0x0800 03FF 页 0

0x0800 0400 - 0x0800 07FF 页 1

0x0800 0800 - 0x0800 0BFF 页 2

0x0800 0C00 - 0x0800 0FFF 页 3

0x0800 1000 - 0x0800 13FF 页 4

… … … …

大小

1K字节

… …

0x0801 FC00 - 0x0801 FFFF 页 127 1K字节 0x1FFF F000 - 0x1FFF F7FF 信息块 系统存储器 2K字节 0x1FFF F800 - 0x1FFF F80F 16 用户可选的字节

0x4002 2000 - 0x4002 2003 4 闪存_ACR 0x4002 2004 - 0x4002 2007 4 闪存_KEYR 0x4002 2008 - 0x4002 200B 4 闪存_OPTKEYR 0x4002 200C - 0x4002 200F 4 闪存_SR

0x4002 2010 - 0x4002 2013 4 闪存存储器寄存闪存_CR

0x4002 2014 - 0x4002 2017 4 器 闪存_AR

0x4002 2018 - 0x4002 201B 4 保留

0x4002 201C - 0x4002 201F 4 闪存_OBR

0x4002 2020 - 0x4002 2023 4 闪存_WRPR

0x4002 2024 - 0x4002 2087 100 保留

注意:更多有关闪存存储器寄存器的信息,请查阅《STM32F10x 闪存 编程手册》。

闪存读取

闪存的指令和数据访问是通过AHB总线来执行的。预取模块被用于通过ICode总线取指令。仲裁在闪存中进行,并且DCode总线上的数据访问优先。 读访问可以有以下配置选项:

延时:动态设置的读操作等待状态数目

预取:可以动态打开/禁用,从而优化性能。 半周期: 用于功耗优化。 注意:

1. 这些 …… 此处隐藏:8986字,全部文档内容请下载后查看。喜欢就下载吧 ……

第3章STM32系列微控制器存储器与外设.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/2276134.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)