MR25H40
第一次写ram的程序,留下笔记。
首先看芯片的主要特征
无写入延迟
•无限制的写入续航能力
•数据保留期超过20年
•断电时的自动数据保护
•快速、简单的SPI接口,MR20H40的时钟频率高达50 MHz。
•3.0至3.6伏电源范围
•低电流睡眠模式
•工业(-40至85°C)、扩展(-40至105°C)和AEC-Q100
1级(-40至125°C)温度范围选项。
•可提供8引脚DFN或8引脚DFN-小型标志,符合RoHS标准
包装。
•直接替换串行EEPROM、闪存和FeRAM
•MSL等级3
MR2xH40是一系列4194304位磁阻随机存取存储器(MRAM)器件
组织为524288个8比特的字。它们是应用程序的理想内存解决方案,这些应用程序必须
使用少量I/O引脚快速存储和检索数据和程序。它们具有串行EE PROM和串行闪存兼容的读/写定时,无写延迟和无限读/写
耐力与其他串行存储器不同,MR2xH40系列可以同时进行读取和写入
随机存储在内存中,两次写入之间没有延迟。
MR2xH40系列可在各种温度范围内提供高度可靠的数据存储。这个
MR20H40(50MHz)具有工业(-40°C至+85°C)范围。提供MR25H40(40MHz)
具有工业级(-40°C至+85°C)、扩展级(-40至105°C)和AEC-Q100 1级(-40℃至+125°C
操作温度范围选项。
两者均提供5 x 6mm、8引脚DFN封装。引脚输出与串行SRAM兼容,
EEPROM、闪存和FeRAM产品。
硬件部分:
芯片是个简单的8引脚封装,看一下他的信号
发现除了电源和地,以及spi通信接口外还有两个引脚,spi大家应该都没问题,现在只看WP和HOLD引脚,
WP: 低电平时阻止写入,也就是写保护。
Hold:中断对内存的操作。发生在CS低的时刻。
我们发现,在一般应用场景下这两个引脚直接忽略即可。但是需要注意的是,如果不使用的话记得拉高,以防出现意料之外的情况。会给调试带来大麻烦。
对这两个引脚解读之后我相信大家应该就觉得小CASE了。接下来我们说控制的部分。见下图:
这张图是芯片控制的核心部分,我们可以看到一共有8个命令。对于第一次写的我来说不明白后三列的意义是什么,看了半天后面的时序图才明白,直接说结论:这款芯片的SPI帧的组成分为三部分,命令、地址、数据。后面为字节数。如果为0表示不需要,并且在波形上不需要提供对应的时隙。
从时序上分为三类,用1表示有、0表示没有,表示为100,101,110.但是仔细想,在数据上又分为mosi和miso。因此状态机可不止三种跳转序列,而是五种。
然后我就开始了读数、写数,结果完全读不到。我就开始检查spi_mode。
结果0和3均可。我使用的mode3,所以没问题。
然后开始检查wp、hold,将其拉高,结果没有作用。
然后开始发现这样一张图
就是说出厂默认为全0。又看到下面这张图,全0明显是全保护状态。
所以我需要对其进行解锁,也就是配置状态寄存器。我给状态寄存器配置了0x02,也就是按照第二个真值表来配置,无果。
我突然想起来,配置寄存器会不会也需要写使能,说干就干。然后我惊奇的发现,可以读到非0的数了,也就是说,配置寄存器也需要写使能。但是我读了随机区域的一个数据,仍然是全0。一头雾水。好像是内存区域还在保护。于是我改成0x82,大功告成。
到现在都没有明白,出厂时wel为0,那么就全保护状态,还怎么能写状态寄存器来改变wel呢?这不是死循环么?