首页 > 其他分享 >初学 FSMC - 外扩SRAM(二)

初学 FSMC - 外扩SRAM(二)

时间:2024-03-26 19:36:01浏览次数:17  
标签:引脚 外扩 寄存器 存储器 FSMC 地址 SRAM

1. FSMC简介

​ STM32F4系列芯片使用FSMC外设来管理扩展的存储器, FSMC是Flexible Static Memory Controller的缩写,译为灵活的静态存储控制器。它可以用于驱动包括SRAM、 NOR FLASH以及NAND FLSAH类型的存储器,不能驱动如SDRAM这种动态的存储器而在STM32F429系列的控制器中,它具有FMC外设,支持控制SDRAM存储器。

  • FSMC框图剖析

    image-20240326185035203

  • 通讯引脚

  • 存储器控制器

  • 时钟控制逻辑

2.通讯引脚

​ 由于控制不同类型存储器的时候会有一些不同的引脚,看起来有非常多,其中地址线FSMC_A和数据线FSMC_D是所有控制器都共用的。

image-20240326185343668

​ 其中比较特殊的FSMC_NE是用于控制SRAM芯片的控制信号线,STM32具有FSMC_NE1/2/3/4号引脚,不同的引脚对应STM32内部不同的地址区域。
​ 例如,当STM32访问0x68000000-0x6BFFFFFF地址空间时,FSMC_NE3引脚会自动设置为低电平,由于它连接到SRAM的CE#引脚,所以SRAM的片选被使能,而访问0x60000000-0x63FFFFFF地址时, FSMC_NE1会输出低电平。当使用不同的FSMC_NE引脚连接外部存储器时, STM32访问SRAM的地址不一样,从而达到控制多块SRAM芯片的目的。

3. 存储器控制器

​ 上面不同类型的引脚是连接到FSMC内部对应的存储控制器中的。NOR/PSRAM/SRAM设备使用相同的控制器, NAND/PC卡设备使用相同的控制器,不同的控制器有专用的寄存器用于配置其工作模式。控制SRAM的FSMC_BCR1/2/3/4控制寄存器、FSMC_BTR1/2/3/4片选时序寄存器以及FSMC_BWTR1/2/3/4写时序寄存器。

每种寄存器都有4个,分别对应于4个不同的存储区域,各种寄存器介绍如下:

  • FSMC_BCR控制寄存器可配置要控制的存储器类型、数据线宽度以及信号
    有效极性能参数。

  • FMC_BTR时序寄存器用于配置SRAM访问时的各种时间延迟,如数据保
    持时间、地址保持时间等。

  • FMC_BWTR写时序寄存器与FMC_BTR寄存器控制的参数类似,它专门用
    于控制写时序的时间参数。

4. 时钟控制逻辑

​ FSMC外设挂载在AHB总线上,时钟信号来自于HCLK(默认168MHz),控制器的同步时钟输出就是由它分频得到。

​ 例如, NOR控制器的FSMC_CLK引脚输出的时钟,它可用于与同步类型的SRAM芯片进行同步通讯,它的时钟频率可通过FSMC_BTR寄存器的CLKDIV位配置,可以配置为HCLK的1/2或1/3,也就是说,若它与同步类型的SRAM通讯时,同步时钟最高频率为84MHz。本示例中的SRAM为异步类型的存储器,不使用同步时钟信号,所以时钟分频配置不起作用。

5. FSMC的地址映射

FSMC连接好外部的存储器并初始化后,就可以直接通过访问地址来读写数据。

​ FSMC访问存储器的方式与I2C EEPROM、 SPI FLASH的不一样,后两种方式都需要控制I2C或SPI总线给存储器发送地址,然后获取数据;在程序里,这个地址和数据都需要分开使用不同的变量存储,并且访问时还需要使用代码控制发送读写命令。

​ 而使用FSMC外接存储器时,其存储单元是映射到STM32的内部寻址空间的;在程序里,定义一个指向这些地址的指针,然后就可以通过指针直接修改该存储单元的内容, FSMC外设会自动完成数据访问过程,读写命令之类的操作不需要程序控制。

image-20240326190626619

​ 图中左侧的是Cortex-M4内核的存储空间分配,右侧是STM32FSMC外设的地址映射。可以看到FSMC的NOR/PSRAM/SRAM/NANDFLASH以及PC卡的地址都在External RAM地址空间内。

​ 正是因为存在这样的地址映射,使得访问FSMC控制的存储器时,就跟访问STM32的片上外设寄存器一样(片上外设的地址映射即图中左侧的“Peripheral”区域)。

​ FSMC把整个External RAM存储区域分成了4个Bank区域,并分配了地址范围及适用的存储器类型,如NOR及SRAM存储器只能使用Bank1的地址。

​ 在NOR及SRAM区域, 每个Bank的内部又分成了4个小块,每个小块有相应的控制引脚用于连接片选信号,如FSMC_NE[4:1]信号线可用于选择BANK1内部的4小块地址区域,当STM32访问0x68000000-0x6BFFFFFF地址空间时,会访问到Bank1的第3小块区域,相应的FSMC_NE3信号线会输出控制信号。

image-20240326190827086

6. FSMC控制时序

FSMC外设支持输出多种不同的时序以便于控制不同的存储器,它具有A B C D四种模式,下面我们仅针对控制SRAM使用的模式A进行讲解

image-20240326190948901

​ 当内核发出访问某个指向外部存储器地址时, FSMC外设会根据配置控制信号线产生时序访问存储器,上图中的是访问外部SRAM时FSMC外设的读写时序。

​ 以读时序为例,该图表示一个存储器操作周期由地址建立周期(ADDSET)、数据建立周期(DATAST)以及2个HCLK周期组成。在地址建立周期中,地址线发出要访问的地址,数据掩码信号线指示出要读取地址的高、低字节部分,片选信号使能存储器芯片;地址建立周期结束后读使能信号线发出读使能信号,接着存储器通过数据信号线把目标数据传输给FSMC,FSMC把它交给内核。

​ 写时序类似,区别是它的一个存储器操作周期仅由地址建立周期
(ADDSET)和数据建立周期(DATAST)组成,且在数据建立周期期间写使能信号线发出写信号,接着FSMC把数据通过数据线传输到存储器中。

image-20240326191046875

标签:引脚,外扩,寄存器,存储器,FSMC,地址,SRAM
From: https://www.cnblogs.com/lyk-23/p/18097387

相关文章

  • 初学 FSMC - 扩展外部SRAM(一)
    1.SRAM控制原理​ STM32控制器芯片内部有一定大小的SRAM及FLASH作为内存和程序存储空间,但当程序较大,内存和程序空间不足时,就需要在STM32芯片的外部扩展存储器了。STM32F407系列芯片可以扩展外部SRAM用作内存。型号为IS62WV51216的SRAM芯片外观:SRAM芯片的内部功能框......
  • SRAMC_UVMTB - 3
    验证计划AHB-SRAMC验证计划......
  • SRAMC_UVMTB - 2
    ICVerificationFlow阅读designspecification编写验证计划搭建验证平台编写testcaseregression回归测试:周期往复的进行回归验证,为测试案例提供不同的seed分析代码/功能覆盖率写测试报告SRAMCDesignSpec可以到ICFrontEndDesign中的项目中找SRAMC的设计AHB_SRA......
  • AHB_SRAMC_UVMTB
    如何开展验证的工作?拿到设计spec,理解和分析spec写验证计划:验证功能点提取,规划test,tb架构,用什么方法学,功能覆盖率的提取coverpoint,检查机制.....)搭建验证环境(UVMTB)coding编写用例测试,调试debug,发现RTL的bugregression(跑不同的seed)coverage(codefunction)......
  • SVTB SRAMC - 4
    referencemodel用于模拟RTL的行为,产生希望的值driver的驱动给到referencemodel和dut,dut产生的结果和referencemodel产生的结果在scoreboard中进行比对CodedriverscoreboardTestgeneratortips通过设置mode可以进行测试场景的多样化优化点f......
  • SVTB SRAMC - 3
    ahb_sramc控制器补充说明时序处理访问地址一个地址的大小是1bytebank选择使用地址的最高bit1bit+13bit+2bit=16bit,最高bit选择bank,低两bit选择哪几个memory8/16/32bit访问timingcheck测试小技巧如果测试一个8k的memory,可以利用循环将memory中每个地址写......
  • SVTB SRAMC - 2
    内容写验证计划需要参照designspecAHB-SRAMC功能验证计划SVTB架构图验证平台目录结构ahb_sramc_svtbdoc-文档rtl-dutverif-验证代码envagentsimtbtest如何编写SVTBMakefilefilelistSVTBTOPsvtb:1.根据spec......
  • SVTB SRAMC - 1
    AHB-SoC芯片架构地址空间各个IP都有自己的地址空间,CPU根据地址空间进行访问外设Spec内容FeaturesSpecificationArchitectureTiming:BasicTransferAHBTransactionExampleAHBBurstTransactionAHBResponseAHBSlaveInterfaceSRAMSpecification......
  • STM32CubeMX教程23 FSMC - IS62WV51216(SRAM)驱动
    1、准备材料开发板(正点原子stm32f407探索者开发板V2.4)STM32CubeMX软件(Version6.10.0)野火DAP仿真器keilµVision5IDE(MDK-Arm)ST-LINK/V2驱动XCOMV2.6串口助手2、实验目标使用STM32CubeMX软件配置STM32F407开发板的FSMC实现以轮询或DMA的方式读写IS62WV51216(SRAM)芯片3、......
  • STM32CubeMX教程22 FSMC - 8080并行接口TFT-LCD驱动
    1、准备材料开发板(正点原子stm32f407探索者开发板V2.4)STM32CubeMX软件(Version6.10.0)野火DAP仿真器keilµVision5IDE(MDK-Arm)ST-LINK/V2驱动XCOMV2.6串口助手2、实验目标使用STM32CubeMX软件配置STM32F407开发板FSMC接口驱动8080并行接口TFT-LCD显示,具体为使用FSMCBank......