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.

  • 2
    \$\begingroup\$ A parallel interface, such as the one on the device you have chosen is fast but difficult to wire up (takes lots of of wires and uses up lots of IO lines). An Arduino, is too slow (in clock speed and extra layers of Arduino code) to be able use anywhere near the full speed potential of that interface. I suggest you go with the SPI version MRAM device which will use many less lines (just 4). It will also be probably be comparable in speed to flipping GPIO on a parallel interface on an Arduino since it can use the SPI hardware and bypass some Arduino software layers. \$\endgroup\$ – DKNguyen Mar 25 at 22:09
  • \$\begingroup\$ Thank you for the quick response, I was considering that and will definitely try it. While the more simple SPI version of the chip is sufficient for my application I will one day need to be able to interface with the more complicated parallel interface. \$\endgroup\$ – Reagan Mcilwain Mar 26 at 20:35
  • \$\begingroup\$ I understand, but an Arduino is not the processor to do that on. Move up to a bare chip where you have an external memory controller and probably a custom PCB (noise issues) before you do that since even as a learning experience, it is a waste with an Arduino because you would almost never use such an interface with bit-blasted GPIO anyways. \$\endgroup\$ – DKNguyen Mar 26 at 20:37
  • \$\begingroup\$ Ok, so this makes sense. I have also looked into using an FTDI development board with bit-blasting capability. Unfortunately I am having a hard time finding a solution that can handle the large interface. Would it be recommended to use shift registers to allow the FTDI device to interface with the memory chip? \$\endgroup\$ – Reagan Mcilwain Mar 26 at 20:51
  • \$\begingroup\$ With regards to your latest question, are you just searching for ANY method to make use of a parallel-interface so you can learn? You don't care what's on the other end as long as the parallel interface is involved? It is difficult to find solutions that can handle parallel interfaces because they require so many pins. Normally you need BGAs (impractical for hobbiests to hand solder). They are available on QFP-208 processors but even then you are really scrounging for pins. \$\endgroup\$ – DKNguyen Mar 26 at 20:54

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.

  • 1
    \$\begingroup\$ That is very helpful, I completely overlooked the logic leveling and appreciate the heads up. I intend to use some form of logic shifting solution that is readily available. \$\endgroup\$ – Reagan Mcilwain Mar 26 at 20:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.