2017-11-02 06:51 PM
Hi, everyone.
FSMC provides some memory space for interface with external memory, but can I use it only to store data without connecting with an external device?
If not possible, what would be the most appropriate way to add extra 2.5 MiByte to receive data acquired by another peripheral, such as DCMI: SD card or RAM?
#fsmc2017-11-03 05:22 AM
Hi!
For the first question, you can't use the FSMC as memory without connection to an external device. Addresses mapped to FSMC are not mapped to any other internal memory.
For the second question, it depends from project's needs. Permanent storage?
SD cards are slower, but with some 'compressing data' software you can achieve 'real time' video storage (depending of course to frame rate and to video resolution )
On the other hand external RAM connected to FSMC is faster and better for Hi-Res video temporary storage. But it is temporary.
Another option is USB storage. Is fast enough to store compressed video in real time.
In an example project that take snapshots every some seconds and transmits the data via a proprietary wireless board, i prefer the FSMC RAM solution. No complexity and asynchronously image process.
Regards
vf
2017-11-03 10:13 AM
Besides, there is a limit how many times you write to a flash address. The limit is large, more than 100 000, but if you write into it continuously, it will stop working. Writing once every second 100 000 -1000 000 times is a few days
2017-11-03 10:31 AM
The memory is within the addressable space of the processor, you can use it for whatever purpose you choose. Data at certain addresses may not be executable, but I seem to recall there are MMU and mapping options to get around some of the limitations. Generally you don't want to do that, or use the external memory for the stack, as it is very much slower.
Good for holding large transient data, or caching slower storage devices.