完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
` 前几年感觉还是冷门的铁电存储(FRAM)貌似这几年一下子很火,可能与富士通这几年参与这个市场有关,最近在不同的活动中看到他们家在推他们的FRAM应用,特别是三表中。铁电存储的优势很明显,这几年火爆起来可能与他们家自己的FRAM生产线降低成本有关吧,我们的水表和电表中,部分高Margin的产品都在用他们的。最近在做相关的方案设计,网上搜到一个关于FRAM应用的心得总结,转发分享下,供还不太了解铁电的同学们参考: 前段时间曾在代理申请过铁电的锐创(Ramtron)的样品,苦苦等了两个多月,后来由于锐创被赛普拉斯(Cypress)收购导致样品没能申请成功就暂停了我们的铁电之旅。 近期EEWORLD有了富士通FRAM的活动,真心的感觉非常好,让我有机会圆了铁电的梦,以前还真不知道富士通原来这么牛X,连铁电都出了这么多型号。 因为最近的工作重点不在铁电,申请到样品MB85RC256V后简单做了解,就把样品收好等着拿淘宝上转卖了(开个玩笑)。 样品图片如下: 一直以蹭网为生的我,这几天又赶上断网,今天一看临期末晚了么,赶紧用手机流量下了个手册下了个I2C的代码,准备正式测试这个神奇的铁电。因为上一篇贴子也提到过,经过研究想在这短短的几天时间写死MB85RC256V这家伙是不太现实的,而且还费电字儿。所以咱们就玩点有意思的,测试一下MB85RC256V的写入速度和低功耗,因为家里没有各种先进仪器也没有各种互联网,时间也有限,就只好写一个简单程序,测试的方法虽然简单,而解决的这个问题正是我们以前遇到过的,下面正式开始。 首先是飞线,因为哥的焊功超凡,这个片子没费多少功夫就焊成这样: 还是挺漂亮的,然后连接到LaunchPad的效果是这样。 具体的测试方法流程和测试环境和代码这样: 富士通铁电存储器MB85RC256V写入速度与功耗测试程序 检测原理: 1.通过二极管将外部电源与测试板电源隔离测试板使用1个10uF和1个100nF电容畜电 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 #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; //清中断标志 } //掉电中断 #pragmavector=PORT2_VECTOR __interrupt voidPort_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 具体测试视频 ` |
|
相关推荐
|
|
德仪也掌握铁电存储技术,不过貌似别人主推集成FRAM的MSP430低功耗解决方案,铁电的低功耗优势很明显,他们的MSP430就在打超低功耗的卖点,这个也是富士通目前主推的卖点啊,FRAM低功耗优势确实很明显,特别是电池供电的三表系统(当然几乎无限制的擦写次数是最大的卖点啦)
|
|
|
|
|
|
德仪也掌握铁电存储技术,不过貌似别人主推集成FRAM的MSP430低功耗解决方案,铁电的低功耗优势很明显,他们的MSP430就在打超低功耗的卖点,这个也是富士通目前主推的卖点啊,FRAM低功耗优势确实很明显,特别是电池供电的三表系统(当然几乎无限制的擦写次数是最大的卖点啦) |
|
|
|
|
|
|
|
|
|
|
|
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
1591 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1112 浏览 0 评论
1557 浏览 0 评论
1402 浏览 0 评论
1044 浏览 0 评论
74661 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 09:39 , Processed in 0.701822 second(s), Total 82, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号