第2章 存储器与总线架构
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
启动模式选择管脚 BOOT1 BOOT0 x
0 1 启动模式 说明 用户闪存被选为 启动区域 系统存储器被选 为启动区域 内嵌 SRAM被选为 启动区域
0
1 1
用户Flash
系统存储器 内嵌SRAM
四、STM32F10X提供的固件库
固件库包括了程序、数据结构和覆盖所有外部 特性的宏单元,还包括设备驱动的描述以及每个外 围模块的实例。
保留 USART3
0x4000 4400 - 0x4000 47FF
0x4000 4000 - 0x4000 3FFF 0x4000 3800 - 0x4000 3BFF
USART2
保留 SPI2
0x4000 3400 - 0x4000 37FF
0x4000 3000 - 0x4000 33FF 0x4000 2C00 - 0x4000 2FFF 0x4000 2800 - 0x4000 2BFF 0x4000 2400 - 0x4000 0FFF 0x4000 0800 - 0x4000 0BFF 0x4000 0400 - 0x4000 07FF 0x4000 0000 - 0x4000 03FF
long const uc32; short const uc16; char const uc8; unsigned long vu32; unsigned short vu16; unsigned char vu8; unsigned long const vuc32; unsigned short const vuc16; unsigned char const vuc8;
0x4001 3000 - 0x4001 33FF 0x4001 2C00 - 0x4001 2FFF 0x4001 2800 - 0x4001 2BFF 0x4001 2400 - 0x4001 27FF 0x4001 2000 - 0x4001 1FFF 0x4001 1800 - 0x4001 1BFF
为了方便用户的编程,STM32F10X对接口部件 中寄存器的操作转变成了对固件库的操作。即只要 调用固件库中的相关函数,就可以完成对接口寄存 器的操作。
STM32F10X中固件库中的函数是以接口部件来 分类的。
1、STM32固件库的定义规则
STM32固件库中使用的缩写词:
缩写 外围模块/单元 缩写 外围模块/单元
可访问的存储器空间被分成8个512MB的主要块,
其他所有没有分配给片上存储器和外设的存储器 空间都是保留的地址空间
2、存储器映像
(续图)
3、外设存储器映像
起始地址 0x4002 2400 - 0x4002 3FFF 外设 保留 总线 寄存器映像
0x4002 2000 - 0x4002 23FF 0x4002 1400 - 0x4002 1FFF 0x4002 1000 - 0x4002 13FF
电源控制 后备寄存器 (BKP)
保留 bxCAN USB的SRAM 256x16 位 USB寄存器 APB1
0x4000 5800 - 0x4000 5BFF
0x4000 5400 - 0x4000 57FF
I2C2
I2C1
0x4000 5000 - 0x4000 4FFF 0x4000 4800 - 0x4000 4BFF
保留
独立看门狗 (IWDG) 窗口看门狗 (WWDG) RTC 保留 TIM4定时器 TIM3定时器 TIM2定时器
APB1
4、STM32F10X中各接口部件中的寄存器
STM32F103系列微控制器嵌入的各种接口部件 都有三大类寄存器:控制寄存器、数据寄存器和状 态寄存器,每一类寄存器都包含了多个寄存器,它 们在相同的基地址下具有不同的偏移地址。
例:TIM2定时器的基地址是:0x4000 0000
控制寄存器1的偏移地址是:00H
控制寄存器2的偏移地址是:04H 从模式控制寄存器的偏移地址是:08H DMA/中断使能寄存器的偏移地址是:0CH等
由上表述可得到它们的物理地址是:
控制寄存器1的物理地址是: 0x4000 0000 控制寄存器2的物理地址是: 0x4000 0004 从模式控制寄存器的物理地址是: 0x4000 0008
外围模块功能函数的名字需要有相应的外围模 块缩写加下划线这样的前缀。每个单词的首写字符 需要大写。例SPI_SendData 使用PPP_InitTypeDef中指定的参数初始化PPP 外围模块的函数,被命名为PPP_Init。 复位PPP外围模块寄存器为默认值的函数,命名 为PPP_DeInit。 将PPP_InitTypeDef结构体中的每个成员设置为 复位值的函数,命名为PPP_StructInit。
第2章 存储器与总线构架
一、系统构架
1、STM32系统包含的基本单元
四个驱动单元:
Cortex-M3内核ICode总线(I-bus)、DCode 总线 (D-bus)和系统总线(S-bus),GP-DMA(通用DMA)
三个被动单元:
内部SRAM,内部闪存FLASH存储器,AHB到APB的 桥(AHB2APBx),它连接所有的APB设备
GPIO端口A
0x4001 0400 - 0x4001 07FF
0x4001 0000 - 0x4001 03FF 0x4000 8000 - 0x4000 77FF
EXTI
AFIO 保留
0x4000 7000 - 0x4000 73FF
0x4000 6C00 - 0x4000 6FFF 0x4000 6800 - 0x4000 6BFF 0x4000 6400 - 0x4000 67FF 0x4000 6000 - 0x4000 63FF 0x4000 5C00 - 0x4000 5FFF
2、系统结构如下图所示
ICode总线:该总线将Cortex-M3内核的指令总线
与Flash指令接口相连接,指令预取在此总线上 完成。 DCode总线:该总线将Cortex-M3内核的DCode总 线与闪存存储器的数据接口相连接(常量加载和 调试访问)。 系统总线:此总线连接Cortex-M3内核的系统总 线(外设总线)到总线矩阵,总线矩阵协调着内核 和DMA间的访问。 DMA总线:此总线将DMA的AHB主控接口与总线矩 阵相联,总线矩阵协调着CPU的DCode和DMA到 SRAM、闪存和外设的访问。
用来检测指定PPP的标志是否被置位或清0的函 数,命名为PPP_GetFlagStatus。 用来清除某个PPP的标志的函数,命名为 PPP_ClearFlag 用来检验指定PPP的中断是否发生的函数,命名 为PPP_GetITPendingBit
用来清除某个PPP中断挂起位的函数,命名为 PPP_ClearITPendingBit
布尔(bool)类型
布尔类型在头文件stm32f10x_type.h中定义
Typedef enum { FALSE = 0, TRUE = !FALSE }bool; 标志状态(FunctionlState)类型
标志状态类型在头文件stm32f10x_type.h中定义
Typedef enum { RESET = 0, SET = !RESET }FlagStatus;
Typedef Typedef Typedef Typedef Typedef Typedef Typedef Typedef Typedef
unsigned unsigned unsigned volatile volatile volatile volatile volatile volatile
功能状态(FunctionlState)类型
功能状态类型在头文件stm32f10x_type.h中定义
ADC
BKP CAN DMA EXTI FLASH GPIO
模/数转换
备份寄存器 控制器区域网络 直接存储器存取控制 外部中断控制器 Flash存储器 通用I/O
PWR
RCC RTC SPI TIM TIM1
电源控制
复位和时钟控制 实时时钟 串行外围接口 通用定时器 先进的控制定时器
SysTick 系统tick定时器
(2)代码标准 变量
定义了18个变量类型,在头文件stm32f10x_type.h中
Typedef Typedef Typedef Typedef Typedef Typedef Typedef Typedef Typedef signed long s32; signed short s16; signed char s8; volatile signed long v32; volatile signed short v16; volatile signed char v8; unsigned long u32; unsigned short u16; unsigned char u8;
DMA/中断使能寄存器的物理地址是:
0x4000 000C等
因此对这些寄存器的操作实际上就是对其物理地址 中内容的操作
5、嵌入式SRAM STM32F10x内置20K字节的静态SRAM,它可以 以字节、半字(16位)或全字(32位)访问,SRAM的 起始地址是0x2000 0000
6、嵌入式闪存
0x4002 0400 - 0x4002 0FFF 0x4002 0000 - 0x4002 03FF
闪存存储器接口 保留 复位和时钟控制
保留 DMA AHB
0x4001 3C00 - 0x4001 3FFF 0x4001 3800 - 0x4001 3BFF
保留 USART1
0x4001 3400 - 0x4001 37FF
总线矩阵:此总线矩阵协调内核系统总线和DMA
主控总线之间的访问仲裁。此总线矩阵由3个驱 动部件(CPU的DCode、系统总线和DMA总线)和3 个被动部件(闪存存储器接口、SRAM和AHB2APB 桥)构成。
AHB外设通过总线矩阵与系统总线相连,允 许DMA访问。
AHB/APB桥(APB):两个AHB/APB 桥在AHB和2个
保留
SPI1 TIM1时钟 ADC2 ADC1 保留 GPIO端口E APB1
0x4001 1400 - 0x4001 17FF
0x4001 1000 - 0x4001 13FF 0X4001 0C00 - 0x4001 0FFF
GPIO端口D
GPIO端口C GPIO端口B
0x4001 0800 - 0x4001 0BFF
I2C
IWDG NVIC
I2C接口
独立看门狗 嵌套向量中断控制器
USART
WWDG
通用同步异步接收传送器
窗口看门狗
(1)固件库的命名规则 PPP表示外围模块的缩写 系统文件名和源/头文件名以“stm32f10x_”的形 式表示,例如stm32f10x_conf.h。 在单一文件中使用的常量在该文件中定义,在 多个文件中使用的常量定义在头文件中,所有的常 量以大写字母表示。 寄存器当作常量看待。同样以大写字母表示。
用来使能或禁止指定的PPP外围模块的函数,命 名为PPP_Cmd 用来使能或禁止指定的PPP外围模块的某个中断 资源的函数,命名为PPP_ITConfig
用来使能或禁止指定的PPP外围模块的DMA接口 的函数,被命名为PPP_DMAConfig。 用来设置某个外围模块的函数,总是以 “Config”结尾。
APB总线间提供同步连接。APB1操作速度限于 36MHz,APB2工作在全速状态(最高72MHz)。
二、存储器组织
1、存储器的组织方法
程序存储器、数据存储器、寄存器和输入输出端
口被组织在同一个4GB的线性地址空间内。
数据字节以小端格式存放在存储器中。一个字中
最低地址字节被认为是该字的最低位字节,而最 高地址字节是最高位字节。
高性能的闪存模块有以下的主要特性:
128K字节闪存 擦写次数:100万次
存储器结构:闪存存储器有主存储块和信息块组成
(1)主存储块为16Kx64位,每个主存储块又划分为 128个1K字节的页。
(2)信息块为320x64位,每个信息块又划分为一个 2K字节和一个0.5K字节的页
三、启动配置
在STM32F10x里wenku.baidu.com可以通过BOOT[1:0]引脚选 择三种不同启动模式
0 1 启动模式 说明 用户闪存被选为 启动区域 系统存储器被选 为启动区域 内嵌 SRAM被选为 启动区域
0
1 1
用户Flash
系统存储器 内嵌SRAM
四、STM32F10X提供的固件库
固件库包括了程序、数据结构和覆盖所有外部 特性的宏单元,还包括设备驱动的描述以及每个外 围模块的实例。
保留 USART3
0x4000 4400 - 0x4000 47FF
0x4000 4000 - 0x4000 3FFF 0x4000 3800 - 0x4000 3BFF
USART2
保留 SPI2
0x4000 3400 - 0x4000 37FF
0x4000 3000 - 0x4000 33FF 0x4000 2C00 - 0x4000 2FFF 0x4000 2800 - 0x4000 2BFF 0x4000 2400 - 0x4000 0FFF 0x4000 0800 - 0x4000 0BFF 0x4000 0400 - 0x4000 07FF 0x4000 0000 - 0x4000 03FF
long const uc32; short const uc16; char const uc8; unsigned long vu32; unsigned short vu16; unsigned char vu8; unsigned long const vuc32; unsigned short const vuc16; unsigned char const vuc8;
0x4001 3000 - 0x4001 33FF 0x4001 2C00 - 0x4001 2FFF 0x4001 2800 - 0x4001 2BFF 0x4001 2400 - 0x4001 27FF 0x4001 2000 - 0x4001 1FFF 0x4001 1800 - 0x4001 1BFF
为了方便用户的编程,STM32F10X对接口部件 中寄存器的操作转变成了对固件库的操作。即只要 调用固件库中的相关函数,就可以完成对接口寄存 器的操作。
STM32F10X中固件库中的函数是以接口部件来 分类的。
1、STM32固件库的定义规则
STM32固件库中使用的缩写词:
缩写 外围模块/单元 缩写 外围模块/单元
可访问的存储器空间被分成8个512MB的主要块,
其他所有没有分配给片上存储器和外设的存储器 空间都是保留的地址空间
2、存储器映像
(续图)
3、外设存储器映像
起始地址 0x4002 2400 - 0x4002 3FFF 外设 保留 总线 寄存器映像
0x4002 2000 - 0x4002 23FF 0x4002 1400 - 0x4002 1FFF 0x4002 1000 - 0x4002 13FF
电源控制 后备寄存器 (BKP)
保留 bxCAN USB的SRAM 256x16 位 USB寄存器 APB1
0x4000 5800 - 0x4000 5BFF
0x4000 5400 - 0x4000 57FF
I2C2
I2C1
0x4000 5000 - 0x4000 4FFF 0x4000 4800 - 0x4000 4BFF
保留
独立看门狗 (IWDG) 窗口看门狗 (WWDG) RTC 保留 TIM4定时器 TIM3定时器 TIM2定时器
APB1
4、STM32F10X中各接口部件中的寄存器
STM32F103系列微控制器嵌入的各种接口部件 都有三大类寄存器:控制寄存器、数据寄存器和状 态寄存器,每一类寄存器都包含了多个寄存器,它 们在相同的基地址下具有不同的偏移地址。
例:TIM2定时器的基地址是:0x4000 0000
控制寄存器1的偏移地址是:00H
控制寄存器2的偏移地址是:04H 从模式控制寄存器的偏移地址是:08H DMA/中断使能寄存器的偏移地址是:0CH等
由上表述可得到它们的物理地址是:
控制寄存器1的物理地址是: 0x4000 0000 控制寄存器2的物理地址是: 0x4000 0004 从模式控制寄存器的物理地址是: 0x4000 0008
外围模块功能函数的名字需要有相应的外围模 块缩写加下划线这样的前缀。每个单词的首写字符 需要大写。例SPI_SendData 使用PPP_InitTypeDef中指定的参数初始化PPP 外围模块的函数,被命名为PPP_Init。 复位PPP外围模块寄存器为默认值的函数,命名 为PPP_DeInit。 将PPP_InitTypeDef结构体中的每个成员设置为 复位值的函数,命名为PPP_StructInit。
第2章 存储器与总线构架
一、系统构架
1、STM32系统包含的基本单元
四个驱动单元:
Cortex-M3内核ICode总线(I-bus)、DCode 总线 (D-bus)和系统总线(S-bus),GP-DMA(通用DMA)
三个被动单元:
内部SRAM,内部闪存FLASH存储器,AHB到APB的 桥(AHB2APBx),它连接所有的APB设备
GPIO端口A
0x4001 0400 - 0x4001 07FF
0x4001 0000 - 0x4001 03FF 0x4000 8000 - 0x4000 77FF
EXTI
AFIO 保留
0x4000 7000 - 0x4000 73FF
0x4000 6C00 - 0x4000 6FFF 0x4000 6800 - 0x4000 6BFF 0x4000 6400 - 0x4000 67FF 0x4000 6000 - 0x4000 63FF 0x4000 5C00 - 0x4000 5FFF
2、系统结构如下图所示
ICode总线:该总线将Cortex-M3内核的指令总线
与Flash指令接口相连接,指令预取在此总线上 完成。 DCode总线:该总线将Cortex-M3内核的DCode总 线与闪存存储器的数据接口相连接(常量加载和 调试访问)。 系统总线:此总线连接Cortex-M3内核的系统总 线(外设总线)到总线矩阵,总线矩阵协调着内核 和DMA间的访问。 DMA总线:此总线将DMA的AHB主控接口与总线矩 阵相联,总线矩阵协调着CPU的DCode和DMA到 SRAM、闪存和外设的访问。
用来检测指定PPP的标志是否被置位或清0的函 数,命名为PPP_GetFlagStatus。 用来清除某个PPP的标志的函数,命名为 PPP_ClearFlag 用来检验指定PPP的中断是否发生的函数,命名 为PPP_GetITPendingBit
用来清除某个PPP中断挂起位的函数,命名为 PPP_ClearITPendingBit
布尔(bool)类型
布尔类型在头文件stm32f10x_type.h中定义
Typedef enum { FALSE = 0, TRUE = !FALSE }bool; 标志状态(FunctionlState)类型
标志状态类型在头文件stm32f10x_type.h中定义
Typedef enum { RESET = 0, SET = !RESET }FlagStatus;
Typedef Typedef Typedef Typedef Typedef Typedef Typedef Typedef Typedef
unsigned unsigned unsigned volatile volatile volatile volatile volatile volatile
功能状态(FunctionlState)类型
功能状态类型在头文件stm32f10x_type.h中定义
ADC
BKP CAN DMA EXTI FLASH GPIO
模/数转换
备份寄存器 控制器区域网络 直接存储器存取控制 外部中断控制器 Flash存储器 通用I/O
PWR
RCC RTC SPI TIM TIM1
电源控制
复位和时钟控制 实时时钟 串行外围接口 通用定时器 先进的控制定时器
SysTick 系统tick定时器
(2)代码标准 变量
定义了18个变量类型,在头文件stm32f10x_type.h中
Typedef Typedef Typedef Typedef Typedef Typedef Typedef Typedef Typedef signed long s32; signed short s16; signed char s8; volatile signed long v32; volatile signed short v16; volatile signed char v8; unsigned long u32; unsigned short u16; unsigned char u8;
DMA/中断使能寄存器的物理地址是:
0x4000 000C等
因此对这些寄存器的操作实际上就是对其物理地址 中内容的操作
5、嵌入式SRAM STM32F10x内置20K字节的静态SRAM,它可以 以字节、半字(16位)或全字(32位)访问,SRAM的 起始地址是0x2000 0000
6、嵌入式闪存
0x4002 0400 - 0x4002 0FFF 0x4002 0000 - 0x4002 03FF
闪存存储器接口 保留 复位和时钟控制
保留 DMA AHB
0x4001 3C00 - 0x4001 3FFF 0x4001 3800 - 0x4001 3BFF
保留 USART1
0x4001 3400 - 0x4001 37FF
总线矩阵:此总线矩阵协调内核系统总线和DMA
主控总线之间的访问仲裁。此总线矩阵由3个驱 动部件(CPU的DCode、系统总线和DMA总线)和3 个被动部件(闪存存储器接口、SRAM和AHB2APB 桥)构成。
AHB外设通过总线矩阵与系统总线相连,允 许DMA访问。
AHB/APB桥(APB):两个AHB/APB 桥在AHB和2个
保留
SPI1 TIM1时钟 ADC2 ADC1 保留 GPIO端口E APB1
0x4001 1400 - 0x4001 17FF
0x4001 1000 - 0x4001 13FF 0X4001 0C00 - 0x4001 0FFF
GPIO端口D
GPIO端口C GPIO端口B
0x4001 0800 - 0x4001 0BFF
I2C
IWDG NVIC
I2C接口
独立看门狗 嵌套向量中断控制器
USART
WWDG
通用同步异步接收传送器
窗口看门狗
(1)固件库的命名规则 PPP表示外围模块的缩写 系统文件名和源/头文件名以“stm32f10x_”的形 式表示,例如stm32f10x_conf.h。 在单一文件中使用的常量在该文件中定义,在 多个文件中使用的常量定义在头文件中,所有的常 量以大写字母表示。 寄存器当作常量看待。同样以大写字母表示。
用来使能或禁止指定的PPP外围模块的函数,命 名为PPP_Cmd 用来使能或禁止指定的PPP外围模块的某个中断 资源的函数,命名为PPP_ITConfig
用来使能或禁止指定的PPP外围模块的DMA接口 的函数,被命名为PPP_DMAConfig。 用来设置某个外围模块的函数,总是以 “Config”结尾。
APB总线间提供同步连接。APB1操作速度限于 36MHz,APB2工作在全速状态(最高72MHz)。
二、存储器组织
1、存储器的组织方法
程序存储器、数据存储器、寄存器和输入输出端
口被组织在同一个4GB的线性地址空间内。
数据字节以小端格式存放在存储器中。一个字中
最低地址字节被认为是该字的最低位字节,而最 高地址字节是最高位字节。
高性能的闪存模块有以下的主要特性:
128K字节闪存 擦写次数:100万次
存储器结构:闪存存储器有主存储块和信息块组成
(1)主存储块为16Kx64位,每个主存储块又划分为 128个1K字节的页。
(2)信息块为320x64位,每个信息块又划分为一个 2K字节和一个0.5K字节的页
三、启动配置
在STM32F10x里wenku.baidu.com可以通过BOOT[1:0]引脚选 择三种不同启动模式