这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 这两年很火的FRAM使用心得(转)

共11条 1/2 1 2 跳转至

这两年很火的FRAM使用心得(转)

菜鸟
2014-12-01 17:43:33     打赏

前几年感觉还是冷门的铁电存储(FRAM)貌似这几年一下子很火,可能与富士通这几年参与这个市场有关,最近在不同的活动中看到他们家在推他们的FRAM应用,特别是三表中。铁电存储的优势很明显,这几年火爆起来可能与他们家自己的FRAM生产线降低成本有关吧,我们的水表和电表中,部分高Margin的产品都在用他们的。最近在做相关的方案设计,网上搜到一个关于FRAM应用的心得总结,转发分享下,供还不太了解铁电的同学们参考:

 

 

前段时间曾在代理申请过铁电的锐创(Ramtron)的样品,苦苦等了两个多月,后来由于锐创被赛普拉斯(Cypress)收购导致样品没能申请成功就暂停了我们的铁电之旅。


近期EEWORLD有了富士通FRAM的活动,真心的感觉非常好,让我有机会圆了铁电的梦,以前还真不知道富士通原来这么牛X,连铁电都出了这么多型号。


因为最近的工作重点不在铁电,申请到样品MB85RC256V后简单做了解,就把样品收好等着拿淘宝上转卖了(开个玩笑)。


样品图片如下:


一直以蹭网为生的我,这几天又赶上断网,今天一看临期末晚了么,赶紧用手机流量下了个手册下了个I2C的代码,准备正式测试这个神奇的铁电。因为上一篇贴子也提到过,经过研究想在这短短的几天时间写死MB85RC256V这家伙是不太现实的,而且还费电字儿。所以咱们就玩点有意思的,测试一下MB85RC256V的写入速度和低功耗,因为家里没有各种先进仪器也没有各种互联网,时间也有限,就只好写一个简单程序,测试的方法虽然简单,而解决的这个问题正是我们以前遇到过的,下面正式开始。


首先是飞线,因为哥的焊功超凡,这个片子没费多少功夫就焊成这样:


还是挺漂亮的,然后连接到LaunchPad的效果是这样。


具体的测试方法流程和测试环境和代码这样:

富士通铁电存储器MB85RC256V写入速度与功耗测试程序

 

检测原理:

 

1.通过二极管将外部电源与测试板电源隔离 测试板使用110uF1100nF电容畜电

 

2.使用单片机I/O口检测外部电源电平,掉电检测I/O使用下拉电阻

 

3.工作时掉电检测I/O由外部电源拉高

 

4.单片机工作时处于低功耗状态

 

5.当外部电源掉电后,掉电检测I/O通过下拉电阻产生下降沿中断

 

6.产生下降沿中断时唤醒单片机 同时向MB85RC256V 地址0写入0x55 并点亮LED耗尽测试板电容剩余电量

 

7.单片机每次上电会从MB85RC256V 地址0读取一个字节数据,判断是否为0x55,如果是则点亮LED说明曾向此处写过数据

 

8.为方便下一次测试,使用按键清除MB85RC256V 地址0数据,将数据置零

 

测试流程:

 

1.开发板上电工作

 

2.断开测试板外部电源

 

3.开发板由电容器内部存储的电能短时供电

 

4.I/O产生中断

 

5.写入 0x55数据到MB85RC256V 地址0

 

6.LED点亮耗尽剩余电量

 

7.测度板重新上电

 

8.通过查看LED状态,如果LED点亮说明写入0x55成功,否则失败

 

开发环境:

 

1.使用TI LaunchPad MSP430G2553开发板

 

2.使用物理I2C P1.6 SCL P1.7 SDA

 

3.使用P1.3作为按键 输入 上拉电阻 下降沿中断检测

 

4.使用P2.0作为掉电检测引脚 输入 下拉电阻 下降沿中断检测

 

5.下好程序后需去掉J3所有跳帽 防止电流通过I/O流入

 

6.MB85RC256V使用杜邦线飞线连接

 

7.使用47K外部上拉电阻

 

8.MB85RC256V地址线全部拉地


*/

 

#include <msp430.h>

 

#include "i2c.h"

 

#define SlaveAddr  0x50        //MB85RC256V 地址

 

#define POWER_DOWN  0x01       //掉电标志

 

#define S2          0x02       //S2按键标志

 

 

 

unsigned int rx_data;          //用于存放读取到的数据

 

unsigned char state = 0;       //掉电或按键中断标志

 

int main(void)

 

{

 

        WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT

 

        BCSCTL1 = CALBC1_1MHZ;                    // Set DCO

 

        DCOCTL = CALDCO_1MHZ; 

 

        

 

        P1OUT &= ~BIT0;  //LED关闭

 

        P1DIR |= BIT0;   //LED输出使能

 

      

 

        P1REN |= BIT3;   //S2上拉电阻

 

        P1IE |= BIT3;    //中断

 

        P1IES |= BIT3;   //下降沿

 

        P1IFG &= ~BIT3;  //清标志

 

      

 

        P2REN &= ~BIT0;    //掉电检测 下拉电阻

 

        P2IE |= BIT0;     //中断

 

        P2IES |= BIT0;    //下降沿

 

        P2IFG &= ~BIT0;   //清标志

 

 

 

      

 

         I2CInit(SlaveAddr);//初始化I2C

 

         rx_data = I2C_Read(0); //读取MB85RC256V 地址0数据

 

        if(rx_data == 0x55)//如果为0x55说明执行过掉电中断

 

        {

 

          P1OUT |= BIT0; //点亮LED

 

        }

 

        else//如果没有执行过掉电中断

 

        {

 

          P1OUT &= ~BIT0; //关闭LED 初始化时已经关闭LED 故此处无用

 

        }

 

         while(1)//循环

 

         {

 

           __bis_SR_register(LPM0_bits + GIE); //低功耗并等待中断触发

 

           if(state == POWER_DOWN)//如果触发过中断且为掉电中断

 

           {

 

              I2C_Write(0,0x55);//MB85RC256V 地址0写入0x55

 

              P1OUT |= BIT0; //点亮LED此处用LED来耗尽电容剩余电量

 

           }

 

           else if(state == S2)//如果为按键中断

 

           {

 

              I2C_Write(0,0x00);//MB85RC256V 地址0写入0x00

 

              P1OUT &= ~BIT0; //关闭LED证明写零成功

 

           }

 

        }

 

}

 

//按键中断

 

#pragma vector=PORT1_VECTOR

 

__interrupt void Port_1(void)

 

{

 

  state = S2; //设置状态为S2

 

  __bic_SR_register_on_exit(LPM0_bits);  //退出低功耗,代码从上一次进入低功能处继续执行

 

  P1IFG &= ~BIT3; //清中断标志                  

 

}

 

//掉电中断

 

#pragma vector=PORT2_VECTOR

 

__interrupt void Port_2(void)

 

{

 

  state = POWER_DOWN; //设置状态为POWER_DOWN

 

  __bic_SR_register_on_exit(LPM0_bits);   //退出低功耗,代码从上一次进入低功能处继续执行

 

  P2IFG &= ~BIT0;  //清中断标志

 

}

代码打包如下:

I2c.c的代码是网上抄来了,简单修改,把高地址默认改成0了,需要写其它地址需留意此处。太懒,没爱改成15bit

   I2CSendBuffer[1] = 0;

   I2CSendBuffer[0] = address;

我的测试心得就是,MB85RC256V绝对是个很牛B的东西,配合msp430使用10uF+100nF来实现掉电数据保存真的是绝配,如果留心看视频会发现,每次掉电后红色LED是会闪亮一小下的。也就是说MB85RC256V写完数据后还有很多电量供LED发光。

这种情况下普通的EEPROM是不可能实现的(我也不敢保证),不信的朋友可以试试。

好了,今天就到这儿,等着拿大奖喽。

:D


具体测试视频

http://v.youku.com/v_show/id_XNjYwOTkzMDE2.html?firsttime=0






关键词: 使用     心得    

院士
2014-12-02 09:54:06     打赏
2楼
不错,不过论坛提供贴代码的功能哦

院士
2014-12-02 16:47:54     打赏
3楼

我是不理解这个东西具体有什么用。



菜鸟
2014-12-02 17:36:27     打赏
4楼
确实很火的样子,以前以为FRAM只是适合于物联网应用呢,这几年好像物联网应用提的少了

菜鸟
2014-12-03 17:31:49     打赏
5楼
经验有用,谢过

菜鸟
2014-12-05 10:50:51     打赏
6楼
赛普拉斯Ramtron后,FRAM就富士通一家在玩了吗?

菜鸟
2014-12-05 11:00:09     打赏
7楼
看不太懂

菜鸟
2014-12-08 18:12:47     打赏
8楼
德仪也掌握铁电存储技术,不过貌似别人主推集成FRAM的MSP430低功耗解决方案,铁电的低功耗优势很明显,他们的MSP430就在打超低功耗的卖点,这个也是富士通目前主推的卖点啊,FRAM低功耗优势确实很明显,特别是电池供电的三表系统(当然几乎无限制的擦写次数是最大的卖点啦)

菜鸟
2014-12-11 16:51:39     打赏
9楼

据说电表主要是应用在三相电表啊?为啥?居民单相电表有用到吗


菜鸟
2014-12-12 17:27:40     打赏
10楼
工业电表的擦写次数、性能很关键,和普通居民电表还是不一样滴

共11条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]