STM32F103存储器和总线构架

系统架构

系统架构是STM32F1系列单片机的最基础部分,在一定层面上阐述了单片机的运行框架和逻辑,主系统由下列部分构成:

五个驱动单元:

  • Cortex™-M3内核DCode总线(D-bus),和系统总线(S-bus)
  • 通用DMA1和通用DMA2
  • 以太网DMA(互联型专有)

三个被动单元:

  • 内部SRAM
  • 内部FLASH存储器
  • AHB到APB的桥(AHB2APBx),它连接所有的APB设备
图1 系统结构

通过图1可以看出系统组由几个总线进行每部的传输,分别有ICode总线DCode总线System总线DMA总线总线矩阵AHB/APB桥(APB)等组成。

ICode总线

该总线将Cortex™-M3内核的指令总线与闪存指令接口相连接。指令预取在此总线上完成。

DCode总线

该总线将Cortex™-M3内核的DCode总线与Flash存储器的数据接口相连接(常量加载和调试访问)。

System总线

该总线连接Cortex™-M3内核的系统总线(外设总线)到总线矩阵,总线矩阵协调着内核和DMA间的访问。

DMA总线

总线矩阵协调内核系统和DMA主控总线之间的访问仲裁,仲裁利用轮换算法。在互联型中,总线矩阵包含5个驱动部件(CPU的DCode、System总线、以太网DMA、DMA1总线和DMA2总线)和3个从部件(Flash存储器接口(FLITF)、SRAM和AHB2APB桥)。其他型中总线矩阵包含4个驱动部件(CPU的DCode、System总线、DMA1总线和DMA2总线)和4个被动部件(Flash存储器接口(FLITF)、SRAM、FSMC和AHB2APB桥)。

AHB外设通过总线矩阵与系统总线相连,允许DMA访问。

AHB/APB桥(APB)

两个AHB/APB桥在AHB和2个APB总线间提供同步连接。APB1 操作速度限于36MHz,APB2操作于全速(最高72MHz)。

在每一次复位后,所有除SRAM和FLITF以外的外设都被关闭,在使用一个外设之前,必须设置寄存器RCC_AHBENR来打开该外设的时钟。

当对APB寄存器进行8位或16位访问时,该访问会被自动转换成32位的访问:桥会自动将8位或者32位的数据扩展以配合32位的向量。

存储器架构

STM32单片机将程序存储器数据存储器寄存器输入输出端口被组织在同一个4GB的线性地址空间内。数据字节以小端的格式存放在存储器中。一个字节里的最低地址字节被认为该字的最低有效字节,儿最高地址字节是最高有效字节。

可访问的存储器空间被分为8个主要块,每个块为512MB

起始地址结束地址外设总线寄存器映像
0x5000 00000x5003 FFFFUSB OTG全速AHB查看详情
0x4003 00000x4FFF FFFF保留AHB
0x4002 80000x4002 9FFF以太网AHB查看详情
0x4002 34000x4002 3FFF保留AHB
0x4002 30000x4002 33FFCRCAHB查看详情
0x4002 20000x4002 23FF闪存存储器接口AHB
0x4002 14000x4002 1FFF保留AHB
0x4002 10000x4002 13FF复位和时钟控制AHB查看详情
0x4002 08000x4002 0FFF保留AHB
0x4002 04000x4002 07FFDMA2AHB查看详情
0x4002 00000x4002 03FFDMA1AHB查看详情
0x4001 84000x4001 FFFF保留AHB
0x4001 80000x4001 83FFSDIOAHB查看详情
0x4001 40000x4001 7FFF保留APB2
0x4001 3C000x4001 3FFFADC3APB2查看详情
0x4001 38000x4001 3BFFUSART1APB2查看详情
0x4001 34000x4001 37FFTIM8定时器APB2查看详情
0x4001 30000x4001 33FFSPI1APB2查看详情
0x4001 2C000x4001 2FFFTIM1定时器APB2查看详情
0x4001 28000x4001 2BFFADC2APB2查看详情
0x4001 24000x4001 27FFADC1APB2查看详情
0x4001 20000x4001 23FFGPIO端口GAPB2查看详情
0x4001 1C000x4001 1FFFGPIO端口FAPB2查看详情
0x4001 18000x4001 1BFFGPIO端口EAPB2查看详情
0x4001 14000x4001 17FFGPIO端口DAPB2查看详情
0x4001 10000x4001 13FFGPIO端口CAPB2查看详情
0X4001 0C000x4001 0FFFGPIO端口BAPB2查看详情
0x4001 08000x4001 0BFFGPIO端口AAPB2查看详情
0x4001 04000x4001 07FFEXTIAPB2查看详情
0x4001 00000x4001 03FFAFIOAPB2查看详情
0x4000 78000x4000FFFF保留APB1
0x4000 74000x4000 77FFDACAPB1查看详情
0x4000 70000x4000 73FF电源控制(PWR)APB1查看详情
0x4000 6C000x4000 6FFF后备寄存器(BKP)APB1查看详情
0x4000 68000x4000 6BFFbxCAN2APB1查看详情
0x4000 64000x4000 67FFbxCAN1APB1查看详情
0x4000 60000x4000 63FFUSB/CAN共享SRAMAPB1
0x4000 5C000x4000 5FFFUSB全速设备寄存器APB1查看详情
0x4000 58000x4000 5BFFI2C2APB1查看详情
0x4000 54000x4000 57FFI2C1APB1查看详情
0x4000 50000x4000 53FFUART5APB1查看详情
0x4000 4C000x4000 4FFFUART4APB1查看详情
0x4000 48000x4000 4BFFUSART3APB1查看详情
0x4000 44000x4000 47FFUSART2APB1查看详情
0x4000 40000x4000 3FFF保留APB1
0x4000 3C000x4000 3FFFSPI3/I2S3APB1查看详情
0x4000 38000x4000 3BFFSPI2/I2S3APB1查看详情
0x4000 34000x4000 37FF保留APB1
0x4000 30000x4000 33FF独立看门狗(IWDG)APB1查看详情
0x4000 2C000x4000 2FFF窗口看门狗(WWDG)APB1查看详情
0x4000 28000x4000 2BFFRTCAPB1查看详情
0x4000 18000x4000 27FF保留APB1
0x4000 14000x4000 17FFTIM7定时器APB1查看详情
0x4000 10000x4000 13FFTIM6定时器APB1查看详情
0x4000 0C000x4000 0FFFTIM5定时器APB1查看详情
0x4000 08000x4000 0BFFTIM4定时器APB1查看详情
0x4000 04000x4000 07FFTIM3定时器APB1查看详情
0x4000 00000x4000 03FFTIM2定时器APB1查看详情
寄存器组起始地址

嵌入式SRAM

STM32F1系列单片机内置64K字节的静态SRAM。它可以以字节、半字(16位)或全字(32位)的方式访问。SRAM的起始地址是0x2000 0000。