本次讲的是FSMC-扩展外部SRAM。FSMC,即灵活的静态存储控制器,能够与同步或异步存储器和 16 位 PC 存储器卡连接,STM32 的 FSMC 接口支持包括 SRAM、NAND FLASH、NOR FLASH 和 PSRAM 等存储器。框图入图片所示! SRAM信号线:信号线包括①地址输入②数据输入输出信号,低字节③数据输入输出信号,高字节④片选信号⑤输出使能信号,低电平有限⑥写入使能,低电平有效⑦数据掩码信号Upper Byte,高位字节允许访问,低电平有效⑧数据掩码信号Hight Byte,低位字节允许访问,低电平有效。 % \7 F/ K. U4 M" @. \2 _ 7 M( D0 ~/ a0 q6 T STM32 的 FSMC 支持 8/16/32 位数据宽度,我们这里用到的 LCD 是 16 位宽度的,所以在设置的时候,选择 16 位宽就 OK 了。我们再来看看 FSMC 的外部设备地址映像,STM32 的 FSMC将外部存储器划分为固定大小为 256M 字节的四个存储块。SRAM的控制比较简单,只要控制信号线使能了访问,从地址线输入要访问的地址,即可从I/O数据写入或读出数据。 # i1 B. D+ u9 _" J, e ! b1 j! }2 n1 Y 4 g7 g1 ]) y, i) e# B8 g* T FSMC控制SRAM的时序:当内核发出访问某个指向外部存储器地址时,FSMC外设会根据配置控制信号线产生时序访问存储器。至于图片建议大家百度吧! / A8 N8 a, T# U2 j4 l* v4 J+ u SRAM时序结构体:控制FSMC使用SRAM存储器时主要是配置时序寄存器以及控制寄存器,利用ST标准库的SRAM时序结构体以及初始化结构体。结构体如下:typedef struct8 l4 R1 S% c/ G4 P. m { uint32_t FSMC_Bank;* k0 k9 _5 j2 V" r1 @ uint32_t FSMC_DataAddressMux;9 W- o8 r4 i8 P& U! T uint32_t FSMC_MemoryType;6 ]/ I N" Z6 t2 C Z5 _ uint32_t FSMC_MemoryDataWidth; uint32_t FSMC_BurstAccessMode; uint32_t FSMC_AsynchronousWait; uint32_t FSMC_WaitSignalPolarity; uint32_t FSMC_WrapMode;+ e3 T4 Y2 {8 Q9 U uint32_t FSMC_WaitSignalActive;6 A T% b' G1 O* P$ q0 t uint32_t FSMC_WriteOperation;# A/ m0 f. `9 P" h2 @5 o uint32_t FSMC_WaitSignal; uint32_t FSMC_ExtendedMode;( p. z( S. U+ V' \ uint32_t FSMC_WriteBurst; FSMC_NORSRAMTimingInitTypeDef* FSMC_ReadWriteTimingStruct;7 R8 S# T/ A5 j8 N FSMC_NORSRAMTimingInitTypeDef* FSMC_WriteTimingStruct;* a5 V2 s s$ [( u. @ }FSMC_NORSRAMInitTypeDef; 6 ?) A: H. E9 v% ?9 F+ S! Q 未完待续,实在太多,一次也写不完,留着下次给大家更新吧!* o! m8 s3 C7 I R9 W9 j2 p . y* Q% n; R- R% x o3 A |
FSMCæ¡å¾
FSMCå¨åå°åæ å°
点评
点评