2324|2

9798

帖子

24

TA的资源

版主

楼主
 

富士通FRAM心得提交 [复制链接]

本帖最后由 littleshrimp 于 2014-1-13 12:19 编辑

家里断网 明天到单位上传文字 照片和视频
敬请期待(^_-)-☆






前段时间曾在代理申请过铁电的大哥大锐创(Ramtron)的样品,苦苦等了两个多月,后来由于锐创被赛普拉斯(Cypress)收购导致样品没能申请成功就暂停了我们的铁电之旅。
近期EEWORLD有了富士通FRAM的活动,真心的感觉非常好,让我有机会圆了铁电的梦,以前还真不知道富士通原来这么牛X,连铁电都出了这么多型号。
因为最近的工作重点不在铁电,申请到样品MB85RC256V后简单做了解,发了一篇帖子(https://bbs.eeworld.com.cn/thread-427677-1-2.html)就把样品收好等着拿淘宝上转卖了(开个玩笑)。
样品图片如下:
一直以蹭网为生的我,这几天又赶上断网,今天一看临期末晚了么,赶紧用手机流量下了个手册下了个I2C的代码,准备正式测试这个神奇的铁电。因为上一篇贴子也提到过,经过研究想在这短短的几天时间写死MB85RC256V这家伙是不太现实的,而且还费电字儿。所以咱们就玩点有意思的,测试一下MB85RC256V的写入速度和低功耗,因为家里没有各种先进仪器也没有各种互联网,时间也有限,就只好写一个简单程序,测试的方法虽然简单,而解决的这个问题正是我们以前遇到过的,下面正式开始。
首先是飞线,因为哥的焊功超凡,这个片子没费多少功夫就焊成这样:
file:///C:\Users\zf\AppData\Local\Temp\msohtmlclip1\01\clip_image004.jpg
这样:
file:///C:\Users\zf\AppData\Local\Temp\msohtmlclip1\01\clip_image006.jpg
还是挺漂亮的,然后连接到LaunchPad的效果是这样。
file:///C:\Users\zf\AppData\Local\Temp\msohtmlclip1\01\clip_image008.jpg
也不懒,硬件电路是这样:

file:///C:\Users\zf\AppData\Local\Temp\msohtmlclip1\01\clip_image010.jpg
具体的测试方法流程和测试环境和代码这样:
  1. /*

  2. 2014-1-12 富士通铁电存储器MB85RC256V写入速度与功耗测试程序

  3. 检测原理:

  4. 1.通过二极管将外部电源与测试板电源隔离 测试板使用1个10uF和1个100nF电容畜电

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

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

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

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

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

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

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

  12. 测试流程:

  13. 1.开发板上电工作

  14. 2.断开测试板外部电源

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

  16. 4.I/O产生中断

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

  18. 6.LED点亮耗尽剩余电量

  19. 7.测度板重新上电

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

  21. 开发环境:

  22. 1.使用TI LaunchPad MSP430G2553开发板

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

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

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

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

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

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

  29. 8.MB85RC256V地址线全部拉地

  30. */

  31. #include <msp430.h>

  32. #include "i2c.h"

  33. #define SlaveAddr  0x50        //MB85RC256V 地址

  34. #define POWER_DOWN  0x01       //掉电标志

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



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

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

  38. int main(void)

  39. {

  40.         WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT

  41.         BCSCTL1 = CALBC1_1MHZ;                    // Set DCO

  42.         DCOCTL = CALDCO_1MHZ;  

  43.          

  44.         P1OUT &= ~BIT0;  //LED关闭

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

  46.       

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

  48.         P1IE |= BIT3;    //中断

  49.         P1IES |= BIT3;   //下降沿

  50.         P1IFG &= ~BIT3;  //清标志

  51.       

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

  53.         P2IE |= BIT0;     //中断

  54.         P2IES |= BIT0;    //下降沿

  55.         P2IFG &= ~BIT0;   //清标志



  56.       

  57.          I2CInit(SlaveAddr);//初始化I2C

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

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

  60.         {

  61.           P1OUT |= BIT0; //点亮LED

  62.         }

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

  64.         {

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

  66.         }

  67.          while(1)//循环

  68.          {

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

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

  71.            {

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

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

  74.            }

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

  76.            {

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

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

  79.            }

  80.         }

  81. }

  82. //按键中断

  83. #pragma vector=PORT1_VECTOR

  84. __interrupt void Port_1(void)

  85. {

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

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

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

  89. }

  90. //掉电中断

  91. #pragma vector=PORT2_VECTOR

  92. __interrupt void Port_2(void)

  93. {

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

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

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

  97. }
复制代码


具体测试视频发下:
[视频刚刚上传正在审核]


代码打包如下:
2014-1-12 MSP430G2553 HARD IIC I2C MB85RC256V FRAM(整理前好用,添加注释).rar (136.46 KB, 下载次数: 4)
I2c.c的代码是网上抄来了,简单修改,把高地址默认改成0了,需要写其它地址需留意此处。太懒,没爱改成15bit
   I2CSendBuffer[1] = 0;
   I2CSendBuffer[0] = address;
我的测试心得就是,MB85RC256V绝对是个很牛B的东西,配合msp430使用10uF+100nF来实现掉电数据保存真的是绝配,如果留心看视频会发现,每次掉电后红色LED是会闪亮一小下的。也就是说MB85RC256V写完数据后还有很多电量供LED发光。
这种情况下普通的EEPROM是不可能实现的(我也不敢保证),不信的朋友可以试试。
好了,今天就到这儿,等着拿大奖喽。
:D


最新回复

我也申请了一直没有消息估计被拒了 我也申请了一直没有消息估计被拒了 我也申请了一直没有消息估计被拒了 我也申请了一直没有消息估计被拒了 我也申请了一直没有消息估计被拒了 我也申请了一直没有消息估计被拒了 我也申请了一直没有消息估计被拒了 我也申请了一直没有消息估计被拒了 我也申请了一直没有消息估计被拒了 我也申请了一直没有消息估计被拒了  详情 回复 发表于 2014-1-17 07:05
点赞 关注
 
 

回复
举报

384

帖子

2

TA的资源

纯净的硅(初级)

沙发
 
写的很详细
个人签名

I-Love-MCU

 
 
 

回复

35

帖子

7

TA的资源

一粒金砂(中级)

板凳
 

我也申请了一直没有消息估计被拒了
我也申请了一直没有消息估计被拒了
我也申请了一直没有消息估计被拒了
我也申请了一直没有消息估计被拒了
我也申请了一直没有消息估计被拒了
我也申请了一直没有消息估计被拒了
我也申请了一直没有消息估计被拒了
我也申请了一直没有消息估计被拒了
我也申请了一直没有消息估计被拒了
我也申请了一直没有消息估计被拒了
个人签名
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表