MRAM click
PID: MIKROE-2914
Weight: 22 g
MRAM click features MRAM module which contains 262,144 magnetoresistive memory
cells, organized into 32,768 bytes of memory. It means that MRAM click is a memory
storage device with 32KB of memory space. The used memory module can withstand an
unlimited number of write cycles, it has data retention period greater than 20 years and it
can read and write to random addresses with no delay.
Besides these features that already mark this kind of memory modules a milestone in
memory manufacturing technology, the device features data protection in case of power
loss, block write protection, low power consumption and fast SPI interface that can
theoretically work up to 40MHz. Because of its universal memory characteristics, MRAM
click can be used both as a non-volatile storage media, or temporary RAM expansion for
storing variables in any embedded application.
How does it work?
MRAM is an abbreviation for Magnetoresistive Random Access Memory. This is a fairly new
type of memory, first introduced in the ’90s. The main features of MRAM modules include
unlimited write endurance, read and write cycles with no delay and data retention even
after power loss. This makes these modules a kind of universal memory, a hybrid between
standard RAM modules and EEPROM and similar types of FLASH memory. The ability to
randomly access the memory cells without the need to refresh them and with no delay
makes this type of memory looks like an SRAM. Data retention after power off, makes it
look like a FLASH memory. Therefore, it is often referred to as the Universal memory.
There are certain downsides and flaws that prevent this type of memory to become the
main memory medium and replace all types of memory used so far. It is the cell density
achievable with this technology. Unlike the memory modules used so far which store data
as the electrical charge, this type of memory uses magnetic elements to store data. Two
plates are used - one is a permanent magnet, while the other plate can be magnetized by a
current flow through the conductors and the resulting induced magnetic field. The problem
with this is obvious: it is impossible to contain the induced magnetic field in a space small
enough to allow for very high cell densities. There are various methods used to overcome
this problem, but it remains the main reason why this type of memory hasn’t replaced
other memory types, yet. However, in the embedded world, where the memory amount
demands are rather limited, this type of memory most certainly deserves attention.
MRAM click board uses the MR25H256, a 256 kilobits serial SPI MRAM memory module
from Everspin company. This module contains 262,144 bits of memory that can be
randomly accessed. The pinout of the used memory module is the same as most commonly
used EEPROM modules so that it can directly replace it. The usual SPI lines - SO, SI, SCK and
#CS pins from the MR25H256 IC are routed to the mikroBUS™ SPI port (MISO, MOSI,
SCKand CS pins). Besides the SPI serial bus, there are two more pins routed to the
mikroBUS™.
The #HOLD pin of the MR25H256 IC is routed to the INT pin of the mikroBUS™ and it is
used to hold the data transfer. When this pin is pulled to a LOW logic level, all data transfer
operations are suspended. However, this function is enabled only when the device is
already addressed with the CS pin pulled to a LOW level. This allows to pause the data
transfer and resume it later without the need to first address it via the CS pin, reducing the
output latency that way. While the data transfer is paused, the SO pin will switch to a high
impedance mode (HIGH Z) and will remain inactive. The SCK pulses are completely
ignored. The #HOLD pin of the MR25H256 IC is pulled to a HIGH logic level by an onboard
pull-up resistor.
The #WP pin of the MR25H256 IC is routed to the INT pin of the mikroBUS™ and it is used
to prevent writes to the status register, acting as a hardware write protect pin. It is routed
to the RST pin of the mikroBUS™.
The logical organization of the moduke, such as read and write commands and the status
register of the MR25H256 IC are the same as with most commonly used EEPROM modules,
such as the one used in EEPROM 4 click. That allows this memory module, as well as MRAM
click to replace the existing EEPROM module with not too much additional work. The
provided libraries offer all the functions needed to work with the MRAM click. Their usage
is demonstrated in the included example application which can be used as a reference for
further development. The device should wait for the system voltage to become stable
before the writing is attempted. The table below contains write inhibit voltage threshold, as
well as the startup time that has to expire for the device to become fully operational. The
board is powered only by the 3.3V rail of the mikroBUS™.
Specifications
Type
MRAM
Applications
The MRAM click can be used for any application that requires fast
and reliable nonvolatile storage media. Due to its speed and
unlimited endurance, it can be used as a temporary storage for the
application runtime data operations.
On-board
modules
MR25H256A, a 262,144-bit magnetoresistive random access
memory (MRAM) device organized as 32,768 words of 8 bits.
Key Features
MRAM click features an MRAM memory module. Due to the used
memory type, it inherits all the benefits of having both features
typically found RAM and EEPROM modules. Fast, nonvolatile
memory which can endure an unlimited number of write cycles.
Interface
GPIO,SPI
Input
Voltage
3.3V
Click board
size
S (28.6 x 25.4 mm)
Pinout diagram
This table shows how the pinout on MRAM click corresponds to the pinout on the
mikroBUS™ socket (the latter shown in the two middle columns).
Notes
Pin
Pin
Notes
NC
1
AN
PWM
16
NC
Write Protect
WP
2
RST
INT
15
HLD
SPI Chip Select
CS
3
CS
RX
14
NC
SPI Clock
SCK
4
SCK
TX
13
NC
SPI Data Out
SDO
5
MISO
SCL
12
NC
SPI Data In
SDI
6
MOSI
SDA
11
NC
Power Supply
3V3
7
3.3V
5V
10
NC
Ground
GND
8
GND
GND
9
GND
Hold
Ground
MRAM click electrical specifications
Description
Max
Unit
0
40
MHz
Write Inhibit Voltage Threshold
2.2
2.7
V
Startup timer
400
SCK Clock Frequency
Min
Typ
uS
Onboard settings and indicators
Label
LD1
Name
Default
Power LED
-
Description
Power LED indicator
Software support
We provide a library for MRAM click on our LibStock page, as well as a demo application
(example), developed using MikroElektronika compilers and mikroSDK. The provided click
library is mikroSDK standard compliant. The demo application can run on all the main
MikroElektronika development boards.
Library Description
Initializes and defines SPI bus driver and driver functions which are used for storing data
to memory and for reading memory.
Library also communicates with the Status register. For more details check the
documentation.
Key functions
uint8_t mram_checkStatusBit(uint8_t status_bit)- The function checks one bit from
the Status register determined by the function parameter.
void mram_readDataBytes(const uint16_t address, uint8_t *buffer, const
uint16_t nBytes)- The function reads a number of bytes determined by the nBytes
parameter from the memory to the buffer with start address determined by the address
parameter.
void mram_writeDataBytes(const uint16_t address, uint8_t *buffer, const
uint16_t nBytes)- The function writes a number of bytes determined by the nBytes
parameter from the buffer to memory with start address determined by address
parameter.
void mram_enableHoldMode(uint8_t state)- A low on the Hold pin interrupts a memory
operation for another task.
Examples Description
The application is composed of three sections :
•
System Initialization - Initializes peripherals and pins.
•
Application Initialization - Initializes click driver.
•
Application Task - Writes 6 bytes of buffer data in the memory with start address 0x0000. Then
reads 3 bytes from the memory with start address 0x0002 and shows the result on USB UART.
void applicationTask()
{
uint8_t numberBytesWrite;
uint8_t numberBytesRead;
char txt[20] = {0};
uint16_t i;
numberBytesWrite = 6;
numberBytesRead = 3;
mram_writeDataBytes(0x0000, &data_write[0], numberBytesWrite);
mram_readDataBytes(0x0002, &data_read[0], numberBytesRead);
for(i = 0; i < numberBytesRead; i++)
{
WordToStr(data_read[i], txt);
mikrobus_logWrite(txt, _LOG_LINE);
}
Delay_ms(2000);
}
The full application code, and ready to use projects can be found on our LibStock page.
Additional notes and information
Depending on the development board you are using, you may need USB UART click, USB
UART 2 click or RS232 click to connect to your PC, for development systems with no UART
to USB interface available on the board. The terminal available in all
MikroElektronika compilers, or any other terminal application of your choice, can be used
to read the message.
mikroSDK
This click board is supported with mikroSDK - MikroElektronika Software Development
Kit. To ensure proper operation of mikroSDK compliant click board demo applications,
mikroSDK should be downloaded from the LibStock and installed for the compiler you are
using.
For more information about mikroSDK, visit the official page.
Downloads
mikroBUS™ standard specifications
LibStock: mikroSDK
Libstock: MRAM click library
MRAM click schematic
MR25H256A datasheet
MRAM click - 2D and 3D files
https://www.mikroe.com/mram-click 2-13-18