文档详情

第2章-存储器与总线架构课件

大米
实名认证
店铺
PPT
379.62KB
约37页
文档ID:606692025
第2章-存储器与总线架构课件_第1页
1/37

单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,2,章 存储器与总线构架,第2章 存储器与总线构架,一、系统构架,1,、,STM32,系统包含的基本单元,四个驱动单元:,Cortex-M3,内核,ICode,总线,(I-bus),、,DCode,总线,(D-bus),和系统总线,(S-bus),,,GP-DMA(,通用,DMA),三个被动单元:,内部,SRAM,,内部闪存,FLASH,存储器,,AHB,到,APB,的桥,(AHB2APBx),,它连接所有的,APB,设备,一、系统构架1、STM32系统包含的基本单元,2,、,系统结构如下图所示,2、系统结构如下图所示,ICode,总线,:该总线将,Cortex-M3,内核的指令总线与,Flash,指令接口相连接,指令预取在此总线上完成DCode,总线,:该总线将,Cortex-M3,内核的,DCode,总线与闪存存储器的数据接口相连接,(,常量加载和调试访问,),系统总线,:此总线连接,Cortex-M3,内核的系统总线,(,外设总线,),到总线矩阵,总线矩阵协调着内核和,DMA,间的访问。

DMA,总线,:此总线将,DMA,的,AHB,主控接口与总线矩阵相联,总线矩阵协调着,CPU,的,DCode,和,DMA,到,SRAM,、闪存和外设的访问ICode总线:该总线将Cortex-M3内核的指令总线与F,总线矩阵,:此总线矩阵协调内核系统总线和,DMA,主控总线之间的访问仲裁此总线矩阵由,3,个驱动部件,(CPU,的,DCode,、系统总线和,DMA,总线,),和,3,个被动部件,(,闪存存储器接口、,SRAM,和,AHB2APB,桥,),构成AHB,外设通过总线矩阵与系统总线相连,允许,DMA,访问AHB/APB,桥,(APB),:两个,AHB/APB,桥在,AHB,和,2,个,APB,总线间提供同步连接APB1,操作速度限于,36MHz,,,APB2,工作在全速状态,(,最高,72MHz),总线矩阵:此总线矩阵协调内核系统总线和DMA主控总线之间的访,二、存储器组织,1,、,存储器的组织方法,程序存储器、数据存储器、寄存器和输入输出端口被组织在,同一个,4GB,的线性地址空间内,数据字节以小端格式存放在存储器中一个字中最低地址字节被认为是该字的最低位字节,而最高地址字节是最高位字节。

可访问的存储器空间被,分成,8,个,512MB,的主要块,,其他所有没有分配给片上存储器和外设的存储器空间都是保留的地址空间,二、存储器组织1、存储器的组织方法,2,、存储器映像,2、存储器映像,(续图),(续图),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,DMA,3、外设存储器映像 起始地址外设总线寄存器映像0 x4002,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,APB1,0 x4001 2400-0 x4001 27FF,ADC1,0 x4001 2000-0 x4001 1FFF,保留,0 x4001 1800-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,0 x4001 3C00-0 x4001 3FFF 保留0 x,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-0 x4000 73FF,电源控制,0 x4000 6C00-0 x4000 6FFF,后备寄存器,(BKP),APB1,0 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,0 x4001 0800-0 x4001 0BFF GPIO,0 x4000 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,保留,APB1,0 x4000 3000-0 x4000 33FF,独立看门狗,(IWDG),0 x4000 2C00-0 x4000 2FFF,窗口看门狗,(WWDG),0 x4000 2800-0 x4000 2BFF,RTC,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,定时器,0 x4000 5000-0 x4000 4FFF 保留0 x,4,、,STM32F10X,中各接口部件中的寄存器,STM32F103,系列微控制器嵌入的各种接口部件都有三大类寄存器:控制寄存器、数据寄存器和状态寄存器,每一类寄存器都包含了多个寄存器,它们在相同的基地址下具有不同的偏移地址。

例:,TIM2,定时器的基地址是:,0 x4000 0000,控制寄存器,1,的偏移地址是:,00H,控制寄存器,2,的偏移地址是:,04H,从模式控制寄存器的偏移地址是:,08H,DMA/,中断使能寄存器的偏移地址是:,0CH,等,4、STM32F10X中各接口部件中的寄存器,由上表述可得到它们的物理地址是:,控制寄存器,1,的物理地址是:,0 x4000 0000,控制寄存器,2,的物理地址是:,0 x4000 0004,从模式控制寄存器的物理地址是:,0 x4000 0008,DMA/,中断使能寄存器的物理地址是:,0 x4000 000C,等,因此对这些寄存器的操作实际上就是对其物理地址中内容的操作,由上表述可得到它们的物理地址是:,5,、嵌入式,SRAM,STM32F10 x,内置,20K,字节的静态,SRAM,,它可以以字节、半字,(16,位,),或全字,(32,位,),访问,,SRAM,的起始地址是,0 x2000 0000,5、嵌入式SRAM STM32F10 x内置20K字,6,、,嵌入式闪存,高性能的闪存模块有以下的,主要特性,:,128K,字节闪存,擦写次数:,100,万次,存储器结构,:闪存存储器有主存储块和信息块组成,(,1,)主存储块为,16Kx64,位,每个主存储块又划分为,128,个,1K,字节的页。

2,)信息块为,320 x64,位,每个信息块又划分为一个,2K,字节和一个,0.5K,字节的页,6、嵌入式闪存,三、启动配置,启动模式选择管脚,启动模式,说明,BOOT1,BOOT0,x,0,用户,Flash,用户闪存被选为启动区域,0,1,系统存储器,系统存储器被选为启动区域,1,1,内嵌,SRAM,内嵌,SRAM,被选为启动区域,在,STM32F10 x,里,可以通过,BOOT1:0,引脚选择三种不同启动模式,三、启动配置 启动模式选择管脚启动模式说明BOOT1BOOT,四、,STM32F10X,提供的固件库,固件库包括了程序、数据结构和覆盖所有外部特性的宏单元,还包括设备驱动的描述以及每个外围模块的实例,为了方便用户的编程,,STM32F10X,对接口部件中寄存器的操作转变成了对固件库的操作即只要调用固件库中的相关函数,就可以完成对接口寄存器的操作STM32F10X,中固件库中的函数是以接口部件来分类的四、STM32F10X提供的固件库 固件库包括了程序、,1,、,STM32,固件库的定义规则,STM32,固件库中使用的缩写词:,缩写,外围模块,/,单元,缩写,外围模块,/,单元,ADC,模,/,数转换,PWR,电源控制,BKP,备份寄存器,RCC,复位和时钟控制,CAN,控制器区域网络,RTC,实时时钟,DMA,直接存储器存取控制,SPI,串行外围接口,EXTI,外部中断控制器,SysTick,系统,tick,定时器,FLASH,Flash,存储器,TIM,通用定时器,GPIO,通用,I/O,TIM1,先进的控制定时器,I2C,I2C,接口,USART,通用同步异步接收传送器,IWDG,独立看门狗,WWDG,窗口看门狗,NVIC,嵌套向量中断控制器,1、STM32固件库的定义规则缩写外围模块/单元缩写外围模块,(,1,)固件库的命名规则,PPP,表示外围模块的缩写,系统文件名和源,/,头文件名以,“,stm32f10 x_,”,的形式表示,例如,stm32f10 x_conf.h,。

在单一文件中使用的常量在该文件中定义,在多个文件中使用的常量定义在头文件中,所有的常量以大写字母表示寄存器当作常量看待同样以大写字母表示1)固件库的命名规则,外围模块功能函数的名字需要有相应的外围模块缩写加下划线这样的前缀每个单词的首写字符需要大写例,SPI_SendData,使用,PPP_InitTypeDef,中指定的参数初始化,PPP,外围模块的函数,被命名为,PPP_Init,复位,PPP,外围模块寄存器为默认值的函数,命名为,PPP_DeInit,将,PPP_InitTypeDef,结构体中的每个成员设置为复位值的函数,命名为,PPP_StructInit,外围模块功能函数的名字需要有相应的外围模块缩写加下划线这样,用来使能或禁止指定的,PPP,外围模块的函数,命名为,PPP_Cmd,用来使能或禁止指定的,PPP,外围模块的某个中断资源的函数,命名为,PPP_ITConfig,用来使能或禁止指定的,PPP,外围模块的,DMA,接口的函数,被命名为,PPP_DMAConfig,用来设置某个外围模块的函数,总是以,“,Config,”,结尾用来使能或禁止指定的PPP外围模块的函数,命名为PPP_C,用来检测指定,PPP,的标志是否被置位或清,0,的函数,命名为,PPP_GetFlagStatus,。

用来清除某个,PPP,的标志的函数,命名为,PPP_ClearFlag,用来检验指定,PPP,的中断是否发生的函数,命名为,PPP_GetITPendingBit,用来清除某个,PPP,中断挂起位的函数,命名为,PPP_ClearITPendingBit,用来检测指定PPP的标志是否被置位或清0的函数,命名为PP,(,2,)代码标准,变量,定义了,18,个变量类型,在头文件,stm32f10 x_type.h,中,Typedef signed long s32,;,Typedef signed short s16,;,Typedef signed char s8,;,Typedef volatile signed long v32,;,Typedef volatile signed short v16,;,Typedef volatile signed char v8,;,Typedef unsigned long u32,;,Typedef unsigned short u16,;,Typedef unsigned char u8,;,(2)代码标准,Typedef unsigned long const uc32,;,Typedef unsigned short const uc16,;,Typedef unsigned char const uc8,;,Typedef volatile unsigned long vu32,;,Typedef volatile 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,;,Typedef unsigned long const,布尔(,bool,)类型,布尔类型在头文件,stm32f10 x_type.h,中定义,Typedef enum,FALSE=0,,,TRUE=,!,FALSE,bool,;,标志状态(,FunctionlState,)类型,标志状态类型在头文件,stm32f10 x_type.h,中定义,Typedef enum,RESET=0,,,SET=,!,RESET,FlagStatus,;,布尔(bool)类型,功能状态(,FunctionlState,)类型,功能状态类型在头文件,stm32f10 x_type.h,中定义,Typedef enum,DISABLE=0,,,ENABLE=,!,DISABLE,FunctionlState,;,错误状态(,FunctionlState,)类型,错误状态类型在头文件,stm32f10 x_type.h,中定义,Typedef enum,ERROR=0,,,SUCCESS=,!,ERROR,ErrorStatus,;,功能状态(FunctionlState)类型,(,3,)外围模块,指向外围模块的指针,用来访问外围模块控制寄存器。

外围模块控制寄存器结构,stm32f10 x_map.h,包含了所有外围模块结构的定义下面是一个,SPI,寄存器结构的声明,Typedef struct,vu16CR1/*SPI,控制寄存器,1*/,u16RESERVED0 /*,保留,0*/,vu16CR2/*SPI,控制寄存器,2*/,u16RESERVED1 /*,保留,1*/,(3)外围模块,vu16SR/*SPI,状态寄存器*,/,u16RESERVED2/*,保留,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,是正数,作为保留域的下标)表示保留域vu16SR/*SPI 状态寄存器*/,外围模块声明,所有外围模块在,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,),外围模块声明,/*SPI2,外围声明*,/,#ifndef DEBUG,#ifdef _SPI2,#define SPI2(SPI_TypeDef*)SPI2_BASE)#endif/*_SPI2*/,#else/*DEBUG*/,#ifdef _SPI2,EXT SPI_TypeDef *SPI2,#endif/*_SPI2*/,#endif/*DEBUG*/,/*SPI2 外围声明*/,说明:,(,1,),定义标签,_SPI,,用来在应用程序中引入,SPI,外围模块库(,_SPI,标签定义在,stm32f10 x_conf.h,中)。

2,),定义,label_SPIn,,用来访问,SPIn,的外围寄存器(,_SPIn,标签定义在,stm32f10 x_conf.h,中)3,),为了进入调试模式,用户必须在头文件,stm32f10 x_conf.h,中定义标签,DEBUG,这样就构成了一个指向,SRAM,中外围模块结构体的指针,从而使调试变的简单,并且所有寄存器的设置可以通过转储一个外围变量来实现说明:,2,、,STM32,固件库的层次结构,(,1,)示例(,Examples,)文件夹,Examples,包含每个外设模块的子文件夹,每个子文件夹提供了运行该外设所需要的最小文件集readme.txt,:描述示例如何工作stm32f10 x_conf.h,:头文件,配置所使用的外围模块,并且包括各种,DEFINE,语句stm32f10 x_it.c,:中断处理函数的源文件stm32f10 x_it.h,:中断处理函数的原型main.c,:示例代码2、STM32固件库的层次结构,(,2,)库(,Library,)文件夹,Inc,子文件夹包含固件库的头文件,不需用户修改stm32f10 x_type.h,:所有其它文件中使用的普通数据类型和枚举。

stm32f10 x_map.h,:外围模块内存映射和寄存器数据结构stm32f10 x_lib.h,:主头文件,引入所有其它头文件2)库(Library)文件夹,stm32f10 x_ppp.h,(每个外围模块对应一个头文件),函数原型,数据结构和枚举cortexm3_macro.h,:,cortexm3_macro.s,(专用的,Cortex-M3,指令的封装)的头文件src,子文件夹包含固件库的源文件,不需用户修改stm32f10 x_lib.c,:所有外围模块指针初始化stm32f10 x_ppp.c,(每个外围模块对应一个源文件):每个外围模块的,函数体stm32f10 x_ppp.h(每个外围模块对应一个头文件,(,3,)工程(,Project,)文件夹,它包含了一个标准的模板工程,用户可以在此基础上建立新的用户工程stm32f10 x_conf.h,:配置文件,包括所有外围模块的默认定义stm32f10 x_it.c,:源文件,包括中断处理函数stm32f10 x_it.h,:头文件,包含所有中断处理的原型main.c,:主函数体EWARM,,,RVMDK,:由工具链使用。

3)工程(Project)文件夹,3,、,STM32,固件库的使用,使用固件库建立示例应用的过程如下:,使用,IAR,建立一个工程,添加一个新的源文件,main.c,,并添加其内容,其中主体实现在函数,main,中引入固件库,编译并运行,3、STM32固件库的使用,。

下载提示
相似文档
正为您匹配相似的精品文档