1 特定情况下正确。如果减小像素的话,在MCU内部的RAM里缓存会更快。但是,你想要缓存大图对吧,内部RAM就不够了。
首先,单片机内部的RAM最多只有几百K,容量比较小,做图片缓存的话,如果要多缓存几帧,就需要牺牲图片分辨率。
如果使用外置的SDRAM芯片,就可以扩大程序可以访问的内存,而且不影响速度。
比如ST公司的F746G DISCO评估板,使用了一片外置的128兆SDRAM芯片来做各种需要大内存应用的缓存。
2 硬件上要用到FMC系列接口的硬件资源。原理图
3 并不连贯。与内部RAM不同的是,SDRAM在使用前要有代码启用FMC并初始化,也就是定义外部SDRAM的物理地址。显然,这个地址不是紧接着内置RAM的地址。实际使用的时候,需要使用SDRAM类里定义的函数来访问这部分内存空间。
比如:
sdram.WriteData(SDRAM_DEVICE_ADDR + WRITE_READ_ADDR WriteBuffer BUFFER_SIZE);
sdram.ReadData(SDRAM_DEVICE_ADDR + WRITE_READ_ADDR ReadBuffer BUFFER_SIZE);
在操作上,是不是有点像读写SPI FLASH。但是它的速度要比SPI FLASH快很多。
4 没区别,把SDRAM库引用了,然后这些函数都能用。然后码代码,编译并烧写。