本次讲的是FSMC-扩展外部SRAM。FSMC,即灵活的静态存储控制器,能够与同步或异步存储器和 16 位 PC 存储器卡连接,STM32 的 FSMC 接口支持包括 SRAM、NAND FLASH、NOR FLASH 和 PSRAM 等存储器。框图入图片所示!" k8 c M8 T2 A! A1 B7 W: m7 w 9 t" E& y; p8 n* g# j }/ y7 o. ? SRAM信号线:信号线包括①地址输入②数据输入输出信号,低字节③数据输入输出信号,高字节④片选信号⑤输出使能信号,低电平有限⑥写入使能,低电平有效⑦数据掩码信号Upper Byte,高位字节允许访问,低电平有效⑧数据掩码信号Hight Byte,低位字节允许访问,低电平有效。2 z; b- E4 w# f/ [# ?) A % k5 M' y) I: Y. e4 }/ V STM32 的 FSMC 支持 8/16/32 位数据宽度,我们这里用到的 LCD 是 16 位宽度的,所以在设置的时候,选择 16 位宽就 OK 了。我们再来看看 FSMC 的外部设备地址映像,STM32 的 FSMC将外部存储器划分为固定大小为 256M 字节的四个存储块。SRAM的控制比较简单,只要控制信号线使能了访问,从地址线输入要访问的地址,即可从I/O数据写入或读出数据。1 d% Y: K* M$ A/ ~ FSMC控制SRAM的时序:当内核发出访问某个指向外部存储器地址时,FSMC外设会根据配置控制信号线产生时序访问存储器。至于图片建议大家百度吧!! {7 V3 K( |4 i: n o9 | ( i0 y0 E5 B0 y3 v" N SRAM时序结构体:控制FSMC使用SRAM存储器时主要是配置时序寄存器以及控制寄存器,利用ST标准库的SRAM时序结构体以及初始化结构体。结构体如下:typedef struct- u. A0 T) C9 j& N8 I {/ q$ e+ u [7 O$ O uint32_t FSMC_Bank;4 _1 R* ~ b# K4 S, N5 Y, U uint32_t FSMC_DataAddressMux; uint32_t FSMC_MemoryType; uint32_t FSMC_MemoryDataWidth;4 E* r( ^2 @6 a- ?% O8 u uint32_t FSMC_BurstAccessMode; uint32_t FSMC_AsynchronousWait;# k* j+ W) `6 V& m1 H0 u9 t uint32_t FSMC_WaitSignalPolarity;! P _: S- V* U: E/ n& |3 R0 H uint32_t FSMC_WrapMode;6 R9 [. @! t' ^) A9 W uint32_t FSMC_WaitSignalActive; uint32_t FSMC_WriteOperation; uint32_t FSMC_WaitSignal;$ g# p/ z6 V" d& i' C uint32_t FSMC_ExtendedMode; uint32_t FSMC_WriteBurst; FSMC_NORSRAMTimingInitTypeDef* FSMC_ReadWriteTimingStruct; FSMC_NORSRAMTimingInitTypeDef* FSMC_WriteTimingStruct; }FSMC_NORSRAMInitTypeDef; 8 ]; m2 D( j( W! K0 s' j" { 未完待续,实在太多,一次也写不完,留着下次给大家更新吧! 6 j8 D6 B! e; @1 o |
FSMCæ¡å¾
FSMCå¨åå°åæ å°
点评
点评