To start, users will need to understand what an expansion memory is. At the heart of any embedded system is the processing element, either an MCU or an FPGA. This takes in data, processes it and based on the output, performs some action. The memory component is an essential part of this processing step. The memory can be used to store code or data - typically implemented on non-volatile memories. Memory can also be used for storing temporary information which is required during the computing process. This is where “expansion memories” come in to play. Typically, microcontrollers are designed with integrated-on-chip memory which would be sufficient to run most applications that they are targeted for, but in many situations, this is not the case, and the system will have to be designed with some form of external expansion memory. This usually happens when complex algorithms are executed and there is a need for a working area for the temporary variables that get generated during the process. Another situation is the case of applications where there is a need for buffering of data while data moves across various stages of a pipeline – an example being buffering of image frames for a graphical display. If a designer encounters either of these situations, they will need to look at expansion memory options.