存储器和总线架构_第1页
存储器和总线架构_第2页
存储器和总线架构_第3页
存储器和总线架构_第4页
存储器和总线架构_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、关于存储器与总线架构第一张,PPT共三十七页,创作于2022年6月一、系统构架1、STM32系统包含的基本单元四个驱动单元:Cortex-M3内核ICode总线(I-bus)、DCode 总线(D-bus)和系统总线(S-bus),GP-DMA(通用DMA) 三个被动单元:内部SRAM,内部闪存FLASH存储器,AHB到APB的桥(AHB2APBx),它连接所有的APB设备第二张,PPT共三十七页,创作于2022年6月2、系统结构如下图所示第三张,PPT共三十七页,创作于2022年6月ICode总线:该总线将Cortex-M3内核的指令总线与Flash指令接口相连接,指令预取在此总线上完成。D

2、Code总线:该总线将Cortex-M3内核的DCode总线与闪存存储器的数据接口相连接(常量加载和调试访问)。系统总线:此总线连接Cortex-M3内核的系统总线(外设总线)到总线矩阵,总线矩阵协调着内核和DMA间的访问。DMA总线:此总线将DMA的AHB主控接口与总线矩阵相联,总线矩阵协调着CPU的DCode和DMA到SRAM、闪存和外设的访问。 第四张,PPT共三十七页,创作于2022年6月总线矩阵:此总线矩阵协调内核系统总线和DMA主控总线之间的访问仲裁。此总线矩阵由3个驱动部件(CPU的DCode、系统总线和DMA总线)和3个被动部件(闪存存储器接口、SRAM和AHB2APB桥)构成

3、。AHB外设通过总线矩阵与系统总线相连,允许DMA访问。AHB/APB桥(APB):两个AHB/APB 桥在AHB和2个APB总线间提供同步连接。APB1操作速度限于36MHz,APB2工作在全速状态(最高72MHz)。第五张,PPT共三十七页,创作于2022年6月二、存储器组织1、存储器的组织方法程序存储器、数据存储器、寄存器和输入输出端口被组织在同一个4GB的线性地址空间内。数据字节以小端格式存放在存储器中。一个字中最低地址字节被认为是该字的最低位字节,而最高地址字节是最高位字节。可访问的存储器空间被分成8个512MB的主要块,其他所有没有分配给片上存储器和外设的存储器空间都是保留的地址空

4、间第六张,PPT共三十七页,创作于2022年6月2、存储器映像 第七张,PPT共三十七页,创作于2022年6月(续图) 第八张,PPT共三十七页,创作于2022年6月3、外设存储器映像 起始地址外设总线寄存器映像0 x4002 2400 - 0 x4002 3FFF 保留0 x4002 2000 - 0 x4002 23FF 闪存存储器接口0 x4002 1400 - 0 x4002 1FFF 保留AHB 0 x4002 1000 - 0 x4002 13FF 复位和时钟控制0 x4002 0400 - 0 x4002 0FFF 保留0 x4002 0000 - 0 x4002 03FF DM

5、A 第九张,PPT共三十七页,创作于2022年6月0 x4001 3C00 - 0 x4001 3FFF 保留0 x4001 3800 - 0 x4001 3BFF USART1 0 x4001 3400 - 0 x4001 37FF 保留0 x4001 3000 - 0 x4001 33FF SPI1 0 x4001 2C00 - 0 x4001 2FFF TIM1时钟0 x4001 2800 - 0 x4001 2BFF ADC2 APB10 x4001 2400 - 0 x4001 27FF ADC1 0 x4001 2000 - 0 x4001 1FFF 保留0 x4001 1800

6、- 0 x4001 1BFF GPIO端口E 0 x4001 1400 - 0 x4001 17FF GPIO端口D 0 x4001 1000 - 0 x4001 13FF GPIO端口C 0X4001 0C00 - 0 x4001 0FFF GPIO端口B 第十张,PPT共三十七页,创作于2022年6月0 x4001 0800 - 0 x4001 0BFF GPIO端口A 0 x4001 0400 - 0 x4001 07FF EXTI 0 x4001 0000 - 0 x4001 03FF AFIO 0 x4000 8000 - 0 x4000 77FF 保留0 x4000 7000 -

7、0 x4000 73FF 电源控制0 x4000 6C00 - 0 x4000 6FFF 后备寄存器(BKP) APB10 x4000 6800 - 0 x4000 6BFF 保留0 x4000 6400 - 0 x4000 67FF bxCAN 0 x4000 6000 - 0 x4000 63FF USB的SRAM 256x16 位0 x4000 5C00 - 0 x4000 5FFF USB寄存器0 x4000 5800 - 0 x4000 5BFF I2C2 0 x4000 5400 - 0 x4000 57FF I2C1 第十一张,PPT共三十七页,创作于2022年6月0 x4000

8、 5000 - 0 x4000 4FFF 保留0 x4000 4800 - 0 x4000 4BFF USART3 0 x4000 4400 - 0 x4000 47FF USART2 0 x4000 4000 - 0 x4000 3FFF 保留0 x4000 3800 - 0 x4000 3BFF SPI2 0 x4000 3400 - 0 x4000 37FF 保留APB10 x4000 3000 - 0 x4000 33FF 独立看门狗(IWDG) 0 x4000 2C00 - 0 x4000 2FFF 窗口看门狗(WWDG) 0 x4000 2800 - 0 x4000 2BFF RT

9、C 0 x4000 2400 - 0 x4000 0FFF 保留0 x4000 0800 - 0 x4000 0BFF TIM4定时器0 x4000 0400 - 0 x4000 07FF TIM3定时器0 x4000 0000 - 0 x4000 03FF TIM2定时器第十二张,PPT共三十七页,创作于2022年6月4、STM32F10X中各接口部件中的寄存器 STM32F103系列微控制器嵌入的各种接口部件都有三大类寄存器:控制寄存器、数据寄存器和状态寄存器,每一类寄存器都包含了多个寄存器,它们在相同的基地址下具有不同的偏移地址。例:TIM2定时器的基地址是:0 x4000 0000 控

10、制寄存器1的偏移地址是:00H 控制寄存器2的偏移地址是:04H 从模式控制寄存器的偏移地址是:08H DMA/中断使能寄存器的偏移地址是:0CH等第十三张,PPT共三十七页,创作于2022年6月由上表述可得到它们的物理地址是: 控制寄存器1的物理地址是: 0 x4000 0000 控制寄存器2的物理地址是: 0 x4000 0004 从模式控制寄存器的物理地址是: 0 x4000 0008 DMA/中断使能寄存器的物理地址是: 0 x4000 000C等因此对这些寄存器的操作实际上就是对其物理地址中内容的操作第十四张,PPT共三十七页,创作于2022年6月5、嵌入式SRAM STM32F10

11、 x内置20K字节的静态SRAM,它可以以字节、半字(16位)或全字(32位)访问,SRAM的起始地址是0 x2000 0000第十五张,PPT共三十七页,创作于2022年6月6、嵌入式闪存高性能的闪存模块有以下的主要特性:128K字节闪存擦写次数:100万次存储器结构:闪存存储器有主存储块和信息块组成(1)主存储块为16Kx64位,每个主存储块又划分为128个1K字节的页。(2)信息块为320 x64位,每个信息块又划分为一个2K字节和一个0.5K字节的页第十六张,PPT共三十七页,创作于2022年6月三、启动配置 启动模式选择管脚启动模式说明BOOT1BOOT0 x0用户Flash用户闪存

12、被选为启动区域01系统存储器系统存储器被选为启动区域11内嵌SRAM内嵌 SRAM被选为启动区域 在STM32F10 x里,可以通过BOOT1:0引脚选择三种不同启动模式第十七张,PPT共三十七页,创作于2022年6月四、STM32F10X提供的固件库 固件库包括了程序、数据结构和覆盖所有外部特性的宏单元,还包括设备驱动的描述以及每个外围模块的实例。 为了方便用户的编程,STM32F10X对接口部件中寄存器的操作转变成了对固件库的操作。即只要调用固件库中的相关函数,就可以完成对接口寄存器的操作。 STM32F10X中固件库中的函数是以接口部件来分类的。第十八张,PPT共三十七页,创作于2022

13、年6月1、STM32固件库的定义规则STM32固件库中使用的缩写词: 缩写外围模块/单元缩写外围模块/单元ADC模/数转换PWR电源控制BKP备份寄存器RCC复位和时钟控制CAN控制器区域网络RTC实时时钟DMA直接存储器存取控制SPI串行外围接口EXTI外部中断控制器SysTick系统tick定时器FLASHFlash存储器TIM通用定时器GPIO通用I/OTIM1先进的控制定时器I2CI2C接口USART通用同步异步接收传送器IWDG独立看门狗WWDG窗口看门狗NVIC嵌套向量中断控制器第十九张,PPT共三十七页,创作于2022年6月(1)固件库的命名规则 PPP表示外围模块的缩写 系统文

14、件名和源/头文件名以“stm32f10 x_”的形式表示,例如stm32f10 x_conf.h。 在单一文件中使用的常量在该文件中定义,在多个文件中使用的常量定义在头文件中,所有的常量以大写字母表示。 寄存器当作常量看待。同样以大写字母表示。第二十张,PPT共三十七页,创作于2022年6月 外围模块功能函数的名字需要有相应的外围模块缩写加下划线这样的前缀。每个单词的首写字符需要大写。例SPI_SendData 使用PPP_InitTypeDef中指定的参数初始化PPP外围模块的函数,被命名为PPP_Init。 复位PPP外围模块寄存器为默认值的函数,命名为PPP_DeInit。 将PPP_I

15、nitTypeDef结构体中的每个成员设置为复位值的函数,命名为PPP_StructInit。第二十一张,PPT共三十七页,创作于2022年6月 用来使能或禁止指定的PPP外围模块的函数,命名为PPP_Cmd 用来使能或禁止指定的PPP外围模块的某个中断资源的函数,命名为PPP_ITConfig 用来使能或禁止指定的PPP外围模块的DMA接口的函数,被命名为PPP_DMAConfig。 用来设置某个外围模块的函数,总是以“Config”结尾。第二十二张,PPT共三十七页,创作于2022年6月 用来检测指定PPP的标志是否被置位或清0的函数,命名为PPP_GetFlagStatus。 用来清除某

16、个PPP的标志的函数,命名为PPP_ClearFlag 用来检验指定PPP的中断是否发生的函数,命名为PPP_GetITPendingBit 用来清除某个PPP中断挂起位的函数,命名为PPP_ClearITPendingBit第二十三张,PPT共三十七页,创作于2022年6月(2)代码标准 变量定义了18个变量类型,在头文件stm32f10 x_type.h中Typedef signed long s32;Typedef signed short s16;Typedef signed char s8;Typedef volatile signed long v32;Typedef volati

17、le signed short v16;Typedef volatile signed char v8;Typedef unsigned long u32;Typedef unsigned short u16;Typedef unsigned char u8;第二十四张,PPT共三十七页,创作于2022年6月Typedef unsigned long const uc32;Typedef unsigned short const uc16;Typedef unsigned char const uc8;Typedef volatile unsigned long vu32;Typedef vo

18、latile unsigned short vu16;Typedef volatile unsigned char vu8;Typedef volatile unsigned long const vuc32;Typedef volatile unsigned short const vuc16;Typedef volatile unsigned char const vuc8;第二十五张,PPT共三十七页,创作于2022年6月 布尔(bool)类型布尔类型在头文件stm32f10 x_type.h中定义Typedef enumFALSE = 0,TRUE = !FALSEbool; 标志状态

19、(FunctionlState)类型标志状态类型在头文件stm32f10 x_type.h中定义Typedef enumRESET = 0,SET = !RESETFlagStatus;第二十六张,PPT共三十七页,创作于2022年6月 功能状态(FunctionlState)类型功能状态类型在头文件stm32f10 x_type.h中定义Typedef enumDISABLE = 0,ENABLE = !DISABLEFunctionlState; 错误状态(FunctionlState)类型错误状态类型在头文件stm32f10 x_type.h中定义Typedef enumERROR =

20、0,SUCCESS = !ERRORErrorStatus;第二十七张,PPT共三十七页,创作于2022年6月(3)外围模块指向外围模块的指针,用来访问外围模块控制寄存器。 外围模块控制寄存器结构stm32f10 x_map.h包含了所有外围模块结构的定义。下面是一个SPI寄存器结构的声明Typedef structvu16CR1/* SPI 控制寄存器1 */u16RESERVED0 /* 保留0 */vu16CR2/* SPI 控制寄存器2 */u16RESERVED1 /* 保留1 */第二十八张,PPT共三十七页,创作于2022年6月vu16SR/* SPI 状态寄存器 */u16RE

21、SERVED2/* 保留2 */vu16DR/* SPI 数据寄存器 */u16RESERVED3/* 保留3 */vu16CRCPR/* SPI CRC多项式寄存器 */u16RESERVED4/* 保留4 */vu16RXCRCR/* SPI Rx CRC 寄存器 */ u16RESERVED5/* 保留5 */vu16TXCRCR/* SPI Tx CRC 寄存器 */ u16RESERVED6/* 保留6 */SPI_TypeDef 每个外围模块的寄存器名是该寄存器的缩写,用大写表示。RESERVEDi(i是正数,作为保留域的下标)表示保留域。第二十九张,PPT共三十七页,创作于202

22、2年6月 外围模块声明所有外围模块在stm32f10 x_map.h中声明。下面给出了SPI外围模块的声明#ifndef EXT#Define EXT extern#endif#define PERIPH_BASE(u32)0 x40000000)#define APB1PERIPH_BASE PERIPH_BASE#define APB2PERIPH_BASE(PERIPH_BASE + 0 x10000)/* SPI2 基地址的定义 */#define SPI2_BASE(APB1PERIPH_BASE + 0 x3800)第三十张,PPT共三十七页,创作于2022年6月/* SPI2 外

23、围声明 */#ifndef DEBUG#ifdef _SPI2 #define SPI2(SPI_TypeDef *)SPI2_BASE)#endif /* _SPI2 */#else /* DEBUG */#ifdef _SPI2 EXT SPI_TypeDef *SPI2#endif/* _SPI2 */#endif/* DEBUG */第三十一张,PPT共三十七页,创作于2022年6月说明:(1)定义标签_SPI,用来在应用程序中引入SPI外围模块库(_SPI标签定义在stm32f10 x_conf.h中)。(2)定义label_SPIn,用来访问SPIn的外围寄存器(_SPIn标签定义在stm32f10 x_conf.h中)。(3)为了进入调试模式,用户必须在头文件stm32f10 x_conf.h中定义标签DEBUG。这样就构成了一个指向SRAM中外围模块结构体的指针,从而使调试变的简单,并且所有寄存器的设置可以通过转储一个外围变量来实现。第三十二张,PPT共三十七页,创作于2022年6月2、STM32固件库的层次结构(1)示例(Examples)文件夹Examples包含每个外设模块的子文件夹,每个子文件夹提供了运行该外设所需要的最小文件集。 readme.tx

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论