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

下载本文档

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

文档简介

关于存储器与总线架构第一页,共三十七页,2022年,8月28日一、系统构架1、STM32系统包含的基本单元四个驱动单元:

Cortex-M3内核ICode总线(I-bus)、DCode总线(D-bus)和系统总线(S-bus),GP-DMA(通用DMA)三个被动单元: 内部SRAM,内部闪存FLASH存储器,AHB到APB的桥(AHB2APBx),它连接所有的APB设备第二页,共三十七页,2022年,8月28日2、系统结构如下图所示第三页,共三十七页,2022年,8月28日ICode总线:该总线将Cortex-M3内核的指令总线与Flash指令接口相连接,指令预取在此总线上完成。DCode总线:该总线将Cortex-M3内核的DCode总线与闪存存储器的数据接口相连接(常量加载和调试访问)。系统总线:此总线连接Cortex-M3内核的系统总线(外设总线)到总线矩阵,总线矩阵协调着内核和DMA间的访问。DMA总线:此总线将DMA的AHB主控接口与总线矩阵相联,总线矩阵协调着CPU的DCode和DMA到SRAM、闪存和外设的访问。第四页,共三十七页,2022年,8月28日总线矩阵:此总线矩阵协调内核系统总线和DMA主控总线之间的访问仲裁。此总线矩阵由3个驱动部件(CPU的DCode、系统总线和DMA总线)和3个被动部件(闪存存储器接口、SRAM和AHB2APB桥)构成。

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

起始地址外设总线寄存器映像0x40022400-0x40023FFF保留0x40022000-0x400223FF闪存存储器接口0x40021400-0x40021FFF保留AHB0x40021000-0x400213FF复位和时钟控制0x40020400-0x40020FFF保留0x40020000-0x400203FFDMA第九页,共三十七页,2022年,8月28日0x40013C00-0x40013FFF保留0x40013800-0x40013BFFUSART10x40013400-0x400137FF保留0x40013000-0x400133FFSPI10x40012C00-0x40012FFFTIM1时钟0x40012800-0x40012BFFADC2APB10x40012400-0x400127FFADC10x40012000-0x40011FFF保留0x40011800-0x40011BFFGPIO端口E0x40011400-0x400117FFGPIO端口D0x40011000-0x400113FFGPIO端口C0X40010C00-0x40010FFFGPIO端口B第十页,共三十七页,2022年,8月28日0x40010800-0x40010BFFGPIO端口A0x40010400-0x400107FFEXTI0x40010000-0x400103FFAFIO

0x40008000-0x400077FF保留0x40007000-0x400073FF电源控制0x40006C00-0x40006FFF后备寄存器(BKP)APB10x40006800-0x40006BFF保留0x40006400-0x400067FFbxCAN0x40006000-0x400063FFUSB的SRAM256x16位0x40005C00-0x40005FFFUSB寄存器0x40005800-0x40005BFFI2C20x40005400-0x400057FFI2C1第十一页,共三十七页,2022年,8月28日0x40005000-0x40004FFF保留0x40004800-0x40004BFFUSART30x40004400-0x400047FFUSART20x40004000-0x40003FFF保留0x40003800-0x40003BFFSPI20x40003400-0x400037FF保留APB10x40003000-0x400033FF独立看门狗(IWDG)0x40002C00-0x40002FFF窗口看门狗(WWDG)0x40002800-0x40002BFFRTC0x40002400-0x40000FFF保留0x40000800-0x40000BFFTIM4定时器0x40000400-0x400007FFTIM3定时器0x40000000-0x400003FFTIM2定时器第十二页,共三十七页,2022年,8月28日4、STM32F10X中各接口部件中的寄存器

STM32F103系列微控制器嵌入的各种接口部件都有三大类寄存器:控制寄存器、数据寄存器和状态寄存器,每一类寄存器都包含了多个寄存器,它们在相同的基地址下具有不同的偏移地址。例:TIM2定时器的基地址是:0x40000000

控制寄存器1的偏移地址是:00H

控制寄存器2的偏移地址是:04H

从模式控制寄存器的偏移地址是:08HDMA/中断使能寄存器的偏移地址是:0CH等第十三页,共三十七页,2022年,8月28日由上表述可得到它们的物理地址是:控制寄存器1的物理地址是:0x40000000

控制寄存器2的物理地址是:0x40000004

从模式控制寄存器的物理地址是:

0x40000008DMA/中断使能寄存器的物理地址是:

0x4000000C等因此对这些寄存器的操作实际上就是对其物理地址中内容的操作第十四页,共三十七页,2022年,8月28日5、嵌入式SRAM

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

在STM32F10x里,可以通过BOOT[1:0]引脚选择三种不同启动模式第十七页,共三十七页,2022年,8月28日四、STM32F10X提供的固件库

固件库包括了程序、数据结构和覆盖所有外部特性的宏单元,还包括设备驱动的描述以及每个外围模块的实例。为了方便用户的编程,STM32F10X对接口部件中寄存器的操作转变成了对固件库的操作。即只要调用固件库中的相关函数,就可以完成对接口寄存器的操作。

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

PPP表示外围模块的缩写系统文件名和源/头文件名以“stm32f10x_”的形式表示,例如stm32f10x_conf.h。在单一文件中使用的常量在该文件中定义,在多个文件中使用的常量定义在头文件中,所有的常量以大写字母表示。寄存器当作常量看待。同样以大写字母表示。第二十页,共三十七页,2022年,8月28日

外围模块功能函数的名字需要有相应的外围模块缩写加下划线这样的前缀。每个单词的首写字符需要大写。例SPI_SendData

使用PPP_InitTypeDef中指定的参数初始化PPP外围模块的函数,被命名为PPP_Init。复位PPP外围模块寄存器为默认值的函数,命名为PPP_DeInit。将PPP_InitTypeDef结构体中的每个成员设置为复位值的函数,命名为PPP_StructInit。第二十一页,共三十七页,2022年,8月28日

用来使能或禁止指定的PPP外围模块的函数,命名为PPP_Cmd

用来使能或禁止指定的PPP外围模块的某个中断资源的函数,命名为PPP_ITConfig

用来使能或禁止指定的PPP外围模块的DMA接口的函数,被命名为PPP_DMAConfig。用来设置某个外围模块的函数,总是以“Config”结尾。第二十二页,共三十七页,2022年,8月28日

用来检测指定PPP的标志是否被置位或清0的函数,命名为PPP_GetFlagStatus。用来清除某个PPP的标志的函数,命名为PPP_ClearFlag

用来检验指定PPP的中断是否发生的函数,命名为PPP_GetITPendingBit

用来清除某个PPP中断挂起位的函数,命名为PPP_ClearITPendingBit第二十三页,共三十七页,2022年,8月28日(2)代码标准变量定义了18个变量类型,在头文件stm32f10x_type.h中

Typedefsignedlongs32;

Typedefsignedshorts16;

Typedefsignedchars8;

Typedefvolatilesignedlongv32;

Typedefvolatilesignedshortv16;

Typedefvolatilesignedcharv8;

Typedefunsignedlongu32;

Typedefunsignedshortu16;

Typedefunsignedcharu8;第二十四页,共三十七页,2022年,8月28日 Typedefunsignedlongconstuc32;

Typedefunsignedshortconstuc16;

Typedefunsignedcharconstuc8;

Typedefvolatileunsignedlongvu32;

Typedefvolatileunsignedshortvu16;

Typedefvolatileunsignedcharvu8;

Typedefvolatileunsignedlongconstvuc32;

Typedefvolatileunsignedshortconstvuc16;

Typedefvolatileunsignedcharconstvuc8;第二十五页,共三十七页,2022年,8月28日

布尔(bool)类型布尔类型在头文件stm32f10x_type.h中定义Typedefenum{ FALSE=0,

TRUE=!FALSE}bool;

标志状态(FunctionlState)类型标志状态类型在头文件stm32f10x_type.h中定义Typedefenum{ RESET=0,

SET=!RESET}FlagStatus;第二十六页,共三十七页,2022年,8月28日

功能状态(FunctionlState)类型功能状态类型在头文件stm32f10x_type.h中定义Typedefenum{ DISABLE=0,

ENABLE=!DISABLE}FunctionlState;

错误状态(FunctionlState)类型错误状态类型在头文件stm32f10x_type.h中定义Typedefenum{ ERROR=0,

SUCCESS=!ERROR}ErrorStatus;第二十七页,共三十七页,2022年,8月28日(3)外围模块指向外围模块的指针,用来访问外围模块控制寄存器。外围模块控制寄存器结构stm32f10x_map.h包含了所有外围模块结构的定义。下面是一个SPI寄存器结构的声明Typedefstruct{ vu16 CR1 /*SPI控制寄存器1*/ u16 RESERVED0/*保留0*/ vu16 CR2 /*SPI控制寄存器2*/ u16 RESERVED1/*保留1*/第二十八页,共三十七页,2022年,8月28日 vu16 SR /*SPI状态寄存器*/ u16 RESERVED2 /*保留2*/ vu16 DR /*SPI数据寄存器*/ u16 RESERVED3 /*保留3*/ vu16 CRCPR /*SPICRC多项式寄存器*/ u16 RESERVED4 /*保留4*/ vu16 RXCRCR /*SPIRxCRC寄存器*/ u16 RESERVED5 /*保留5*/ vu16 TXCRCR /*SPITxCRC寄存器*/ u16 RESERVED6 /*保留6*/}SPI_TypeDef

每个外围模块的寄存器名是该寄存器的缩写,用大写表示。RESERVEDi(i是正数,作为保留域的下标)表示保留域。第二十九页,共三十七页,2022年,8月28日

外围模块声明所有外围模块在stm32f10x_map.h中声明。下面给出了SPI外围模块的声明#ifndefEXT#DefineEXTextern#endif ┅#definePERIPH_BASE ((u32)0x40000000)#defineAPB1PERIPH_BASE PERIPH_BASE#defineAPB2PERIPH_BASE (PERIPH_BASE+0x10000) ┅/*SPI2基地址的定义*/#defineSPI2_BASE (APB1PERIPH_BASE+0x3800) ┅第三十页,共三十七页,2022年,8月28日/*SPI2外围声明*/#ifndefDEBUG ┅#ifdef_SPI2#defineSPI2 ((SPI_TypeDef*)SPI2_BASE)

#endif /*_SPI2*/

┅#else /*DEBUG*/ ┅#ifdef_SPI2EXTSPI_TypeDef *SPI2#endif /*_SPI2*/ ┅#endif /*DEBUG*/第三十一页,共三十七页,2022年,8月28日说明:(1)定义标签_SPI,用来在应用程序中引入SPI外围模块库(_SPI标签定义在stm32f10x_conf.h中)。(2)定义label_SPIn,用来访问SPIn的外围寄存器(_SPIn标签定义在stm32f10x_conf.h中)。(3)为了进入调试模式,用户必须在头文件stm32f10x_conf.h中定义标签DEBUG。这样就构成了一个指向SRAM中外围模块结构体的指针,从而使调试变的简单,并且所有寄存器的设置可以通过转储一个外围变量来实现。第三十二页,共三十七页,2022年,8月28日2、STM32固件库的层次结构(1)示例(Examples)文件夹Examples包含每个外设模块的

温馨提示

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

评论

0/150

提交评论