STM32 FSMC 学 FSMC 全称“静态存储器控制器”。使用 FSMC 控制器后, 可以把 FSMC 提供的 FSMC_A[25:0] 作为地址线, 而把 FSMC 提供的 FSMC_D[15:0] 作为数据总线。(1) 当存储数据设为 8 位时, ( = FSMC_MemoryDataWidth_8 b) 地址各位对应 FSMC_A[25:0] ,数据位对应 FSMC_D[7:0] (2) 当存储数据设为 16 位时, ( = FSMC_MemoryDataWidth_ 16b) 地址各位对应 FSMC_A[24:0] ,数据位对应 FSMC_D[15:0] FSMC 包括 4 个模块: (1)AHB 接口(包括 FSMC 配置寄存器) (2)NOR 闪存和 PSRAM 控制器(驱动 LCD 的时候 LCD 就好像一个 PSRAM 的里面只有 2个 16 位的存储空间,一个是 DA TA RAM 一个是 CMD RAM ) (3)NAND 闪存和 PC 卡控制器(4) 外部设备接口注: FSMC 可以请求 AHB 进行数据宽度的操作。如果 AHB 操作的数据宽度大于外部设备( NOR 或 NAND 或 LCD ) 的宽度, 此时 FSMC 将 AHB 操作分割成几个连续的较小的数据宽度,以适应外部设备的数据宽度。 FSMC 对外部设备的地址映像从 0x6000 0000 开始,到 0x9FFF FFFF 结束,共分 4 个地址块,每个地址块 256M 字节。可以看出, 每个地址块又分为 4 个分地址块, 大小 64M 。对 NOR 的地址映像来说, 我们可以通过选择 HADDR[27:26] 来确定当前使用的是哪个 64M 的分地址块,如下页表格。而这四个分存储块的片选,则使用 NE[4:1] 来选择。数据线/ 地址线/控制线是共享的。 NE1 ->Bank1 NE2->Bank2 NE3->Bank3 NE4->Bank4 若 NE1 连接, 则每小块 NOR/PSRAM 64M 第一块:6000 0000h--63ff ffffh (DATA 长度为 8 位情况下, 由地址线 FSMC_A[25:0] 决定; DATA 长度为 16 位情况下, 由地址线 FSMC_A[24:0] 决定) 第二块:6400 0000h--67ff ffffh 第二块:6800 0000h--6bff ffffh 第三块:6c00 0000h--6fff ffffh 注: 这里的 HADDR 是需要转换到外部设备的内部 AHB 地址线, 每个地址对应一个字节单元。因此, 若外部设备的地址宽度是8 位的,则 HADDR[25:0] 与 STM32 的 CPU 引脚 FSMC_A[25:0] 一一对应, 最大可以访问 64M 字节的空间。若外部设备的地址宽度是 16 位的,则是 HADDR[25:1] 与 STM32 的 CPU 引脚 FSMC_A[24:0] 一一对应。在应用的时候,可以将 F SMC_A 总线连接到存储器或其他外设的地址总线引脚上。例: STM32F10XX FCMS
FSMC静态存储器控制器 来自淘豆网m.daumloan.com转载请标明出处.