Electronic – arduino – Interfacing 16-bit SRAM/MRAM with Arduino Mega

arduinomemorymramparallelsram

I a looking to interface a MR2A16A 4Mb 16-bit MRAM with an Arduino Mega. I am new to interfacing with memory chips and would like some advice from someone more experienced than myself. I am not looking for speed or a permanent implementation, I am just wanting to be able to read and write to the chip for testing purposes.

From the datasheet it seems as the MRAM uses the exact same timings and interface as a similar SRAM chip. I looked at the pinouts and I should have enough for the 18 address pins and the 16 data pins of the MRAM plus the 5 control pins.

Please let me know if :

  1. This is possible.

  2. What advice/tips I need to proceed

  3. I would need any additional circuity to interface the chip?

Thank you.

Best Answer

The only thing that you have to do is perform logic level shifting. This is because the MR2A16A is a 3.3V powered device and looking at page 7 of the datasheet it shows the max input high voltage i.e. VIH. This is less than the max output voltage of the arduino (~5v) so you will risk damaging the MRAM if you don't level shift. As for the data pins since you have to read and write from them you would need bi-directional level shifting.For the address lines a simple unidirectional shifter would work. But with this many lines to apply level shifting on, it may be cumbersome.

The method of level shifting depends on the speed of your intended communications. Simple voltage dividers can work for slow signals but will not work for fast changing signals. There are ICs for this but it's entirely up o you if you get those or go DIY.