请问什么是fsmc?
FSMC(Flexible Static Memory Controller,可变静态存储控制器)是STM32系列采用的一种新型的存储器扩展技术。在外部存储器扩展方面具有独特的优势,可根据系统的应用需要,方便地进行不同类型大容量静态存储器的扩展。
STM32是ST(意法半导体)公司推出的基于ARM内核Cortex-M3的32位微控制器系列。Cortex-M3内核是为低功耗和价格敏感的应用而专门设计的,具有突出的能效比和处理速度。
扩展资料
FSMC技术优势:
①支持多种静态存储器类型。STM32通过FSMC可以与SRAM、ROM、PSRAM、NOR Flash和NANDFlash存储器的引脚直接相连。
②支持丰富的存储操作方法。FSMC不仅支持多种数据宽度的异步读/写操作,而且支持对NOR/PSRAM/NAND存储器的同步突发访问方式。
③支持同时扩展多种存储器。FSMC的映射地址空间中,不同的BANK是独立的,可用于扩展不同类型的存储器。当系统中扩展和使用多个外部存储器时,FSMC会通过总线悬空延迟时间参数的设置,防止各存储器对总线的访问冲突。
④支持更为广泛的存储器型号。通过对FSMC的时间参数设置,扩大了系统中可用存储器的速度范围,为用户提供了灵活的存储芯片选择空间。
⑤支持代码从FSMC扩展的外部存储器中直接运行,而不需要首先调入内部SRAM。
参考资料来源:百度百科-FSMC
参考资料来源:百度百科-静态存储器
2024-11-18 广告
关于外部总线,你可以想象一下51的外部总线,STM32的FSMC实际上跟51的外部总线是一样的,只不过性能更好,速度更快。
至于总线的优势,可以举个51外部总线的例子,51单片机驱动1864或者1602液晶,如果用IO口模拟液晶的时序,需要用指令分别控制RS,WR,EN控制线还有数据线;但是如果用的是外部总线,从汇编指令上来讲,只需要一条MOVX指令就解决问题了。二者的速度一目了然!
在一些TFT液晶的操作用经常用得到,并且非常的好用!(以一个TFT为例)
TFT的数据接口为:D0-D15或者D0-D8.
TFT的控制线有:复位信号RST,片选CS,输出使能RD(读信号),写信号WE以及RS信号。
于STM32连线为: RST->GPIO, CS->NEx, RD->NOE, WE->RW, RS->A0(或者其他任何一条地址线)
关键的一点就在于这个RS信号(我只说关键的这一点):
一般TFT的地址线只有1个RS.
以控制芯片的TFT为例.RS=0的时候一般是写命令,RS=1的时候是写数据,把TFT作为只有2个地址的存储器对待.
RS接到哪一个地址线都是可以的。假如RS接到A0,而片选为NE4,总线宽度8位.
那么可以定义
#define Bank1_SRAM4_ADDR ((u32)0x6C000000)
#define LCD_DATA_ADDR (Bank1_SRAM4_ADDR + 1)
#define LCD_CMD_ADDR (Bank1_SRAM4_ADDR + 0)
那么写命令数据就是直接往LCD_CMD_ADDR写数据:(假设cmd,data为16位,而我的TFT数据接口是8位)
LCD_WRITE_CMD(unsigned short cmd) //写命令到TFT,16位要写2次
{
*(vu8*)LCD_CMD_ADDR=(cmd>>8);
*(vu8*)LCD_CMD_ADDR=(cmd);
}
写数据就是直接往LCD_DATA_ADDR写数据:
LCD_WRITE_DATA(unsigned short Data) //写数据到TFT
{
*(vu8*)LCD_DATA_ADDR=(Data>>8);
*(vu8*)LCD_DATA_ADDR=(Data);
}
至于RD,WE,RS,CS信号都已经是FSMC控制器自动产生的,不用理会,不过当然是FSMC及GPIO初始化要正确.而RST信号还是需要通过操作GPIO来完成的.
这是最基本的2个操作。而那些什么设置X,Y,设置窗口,设置亮度,设置。。。。都是由这2个操作组合完成的。
72M HZ,320*240刷单色屏速度在 32fps左右.
这是在网上copy人家的,