第3章STM32系列微控制器存储器与外设.doc
32页第3章 STM32系列微控制器存储器与外设3.1 存储器和总线的结构3.1.1 系统结构系统的主要部分包括:l 四个驱动单元:- Cortex-M3内核指令总线 (I-bus),数据总线 (D-bus),以及系统总线 (S-bus)- GP-DMA(通用DMA)l 三个被动单元:- 内部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保留AHB0x4002 2000 - 0x4002 23FF闪存存储器接口0x4002 1400 - 0x4002 1FFF保留0x4002 1000 - 0x4002 13FF复位和时钟控制RCC0x4002 0400 - 0x4002 0FFF保留0x4002 0000 - 0x4002 03FFDMA0x4001 3C00 - 0x4001 3FFF保留APB20x4001 3800 - 0x4001 3BFFUSART10x4001 3400 - 0x4001 37FF保留0x4001 3000 - 0x4001 33FFSPI 10x4001 2C00 - 0x4001 2FFFTIM1定时器0x4001 2800 - 0x4001 2BFFADC20x4001 2400 - 0x4001 27FFADC10x4001 2000 - 0x4001 1FFF保留0x4001 1800 - 0x4001 1BFFGPIO 端口 E0x4001 1400 - 0x4001 17FFGPIO 端口 D0x4001 1000 - 0x4001 13FFGPIO 端口 C0x4001 0C00 - 0x4001 0FFFGPIO 端口 B0x4001 0800 - 0x4001 0BFFGPIO 端口 A0x4001 0400 - 0x4001 07FFEXIT0x4001 0000 - 0x4001 03FFAFIO0x4000 8000 - 0x4000 77FF保留APB10x4000 7000 - 0x4000 73FF电源控制(PWR)0x4000 6C00 - 0x4000 6FFF备份寄存器(BKP)0x4000 6800 - 0x4000 6BFF保留0x4000 6400 - 0x4000 67FFbxCAN0x4000 6000 - 0x4000 63FF共享的USB/CAN SRAM 512字节0x4000 5C00 - 0x4000 5FFFUSB 寄存器0x4000 5800 - 0x4000 5BFFI2C20x4000 5400 - 0x4000 57FFI2C10x4000 5000 - 0x4000 4FFF保留0x4000 4800 - 0x4000 4BFFUSART30x4000 4400 - 0x4000 47FFUSART20x4000 4000 - 0x4000 3FFF保留0x4000 3800 - 0x4000 3BFFSPI20x4000 3400 - 0x4000 37FF保留0x4000 3000 - 0x4000 33FF独立的看门狗(IWDG)0x4000 2C00 - 0x4000 2FFF窗口看门狗(WWDG)0x4000 2800 - 0x4000 2BFFRTC0x4000 2400 - 0x4000 0FFF保留0x4000 0800 - 0x4000 0BFFTIM4 定时器0x4000 0400 - 0x4000 07FFTIM3 定时器0x4000 0000 - 0x4000 03FFTIM2 定时器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:闪存模块的结构模块名字地址大小主存储器页 00x0800 0000 - 0x0800 03FF1K字节 页 10x0800 0400 - 0x0800 07FF页 20x0800 0800 - 0x0800 0BFF页 30x0800 0C00 - 0x0800 0FFF页 4 0x0800 1000 - 0x0800 13FF………………页 1270x0801 FC00 - 0x0801 FFFF1K字节信息块系统存储器0x1FFF F000 - 0x1FFF F7FF2K字节用户可选的字节0x1FFF F800 - 0x1FFF F80F16闪存存储器寄存器闪存_ACR0x4002 2000 - 0x4002 20034闪存_KEYR0x4002 2004 - 0x4002 2007 4闪存_OPTKEYR0x4002 2008 - 0x4002 200B 4闪存_SR0x4002 200C - 0x4002 200F4闪存_CR0x4002 2010 - 0x4002 20134闪存_AR0x4002 2014 - 0x4002 20174保留0x4002 2018 - 0x4002 201B4闪存_OBR0x4002 201C - 0x4002 201F4闪存_WRPR0x4002 2020 - 0x4002 20234保留0x4002 2024 - 0x4002 2087100注意:更多有关闪存存储器寄存器的信息,请查阅《STM32F10x 闪存 编程手册》。
闪存读取闪存的指令和数据访问是通过AHB总线来执行的预取模块被用于通过ICode总线取指令仲裁在闪存中进行,并且DCode总线上的数据访问优先 读访问可以有以下配置选项:l 延时:动态设置的读操作等待状态数目l 预取:可以动态打开/禁用,从而优化性能l 半周期: 用于功耗优化注意:1. 这些选项的使用必须参照闪存存储器的访问时间2. 半周期配置不能和AHB上的预分频器结合使用系统时钟必须和HCLK时钟等同,因此 这个特性只能和直接来自8MHz RC振荡器的时钟或者和主振荡器一起使用3. 打开/禁用预取模块只能在快时钟被禁用的时候进行 (AHB上没有预分频器)4. 使用DMA:DMA在DCode总线上访问闪存存储器并且优先权高于ICode指令DMA在每一次传输后都会有一个空闲周期,一些指令可以和DMA传输一起执行编程和擦除闪存存储器闪存1次可以编程16位(半字)闪存的擦除操作可以以页面为单位来擦除,也可以整个闪存区域一起擦除(整体擦除)整体擦除不会影响信息块为了确保不出现反复编程,闪存编程和擦除控制器模块由一个固定的时钟来驱动写操作(编程或者擦除)结束的时候能够触发中断只有FLITF时钟使能的情况下,该中断可以用于从WFI(等待中断)模式退出 ,否则,该中断只能在退出WFI后才被处理。
3.1.4 启动配置在STM32F10x中,有3个不同的启动模式,这些模式可以通过引脚BOOT[1:0]来选择,如表3.3所示表3.3:启动模式启动模式选择引脚Boot模式说明BOOT1BOOT 2X0用户闪存存储器用户闪存存储。

卡西欧5800p使用说明书资料.ppt
锂金属电池界面稳定化-全面剖析.docx
SG3525斩控式单相交流调压电路设计要点.doc
话剧《枕头人》剧本.docx
重视家风建设全面从严治党治家应成为领导干部必修课PPT模板.pptx
黄渤海区拖网渔具综合调查分析.docx
2024年一级造价工程师考试《建设工程技术与计量(交通运输工程)-公路篇》真题及答案.docx
【课件】Unit+3+Reading+and+Thinking公开课课件人教版(2019)必修第一册.pptx
嵌入式软件开发流程566841551.doc
生命密码PPT课件.ppt
爱与责任-师德之魂.ppt
制冷空调装置自动控制技术讲义.ppt


