首页 新闻资讯 技术资料 论坛 网站地图
医疗电子 通信产品 接口电路 消费电子 嵌入式软件 嵌入式开发新闻 存储器
电子元器件搜索:
IC库存(8958万) PDF资料(329万) IC价格 IC求购 资讯 技术资料
维库电子市场网是知名的电子元器件交易网站, 为电子生产企业提供IC库存和技术资料查询服务。
位置: 首页 > 详细信息
  sst29sf040作数据存储器,数据会丢失吗?
出处:21ic 时间: 2007-10-01
ccjchen 发布于 2007-9-26 21:12:00
请问各位大虾我把sst29sf040当作数据存储器时为什么在单片机掉电或复位后数据又恢复原来初始化的值啊?sst29sf040是flash阿,数据怎么会丢失呢?


wwh 发布于 2007-9-27 21:46:00
是不是没有关锁阿?


zzh4641726 发布于 2007-9-28 8:28:00
在每次写完之后加锁,写之前解锁可以很好的避免这个问题。



lypd96 发布于 2007-9-28 18:48:00
先仔细的看看sst29sf040的资料


ccjchen 发布于 2007-9-29 14:15:00
这说明编址应该正确吧,读写也应该正确吧,但是为什么断电后数据恢复为初始化时的数值呢?我是将uchar idata syn[8]={"24.5 6 0"}调在LCD中显示出来,然后通过增减按键改变syn[8]={"24.5 6 0"}的数值,保存在sst29sf040中,但是为什么一断电后从新接好电源或单片机复位后,在LCD中显示的值又恢复为syn[8]={"24.5 6 0"},这是怎么回事呢?


xplore 发布于 2007-9-30 20:15:00
是读正确,写错误, 就是你没有正确运行写指令


ccjchen 发布于 2007-10-1 21:33:00
uchar idata syn[8]={"24.5 6 0"};
void main(void)
{    
     initlcm();//初始化LCD
     initmcu();//初始化单片机
     for(;;)
     {
       if(ByteRead(0x0080+7)==3)//这里应该可以证明数据能否写进吧?
      //检查最后一个数据是否是3,如果是从Flash中读取数据更新syn
          {
            sst_read();
          }
         else//否则往sst29sf040写入数据
          {
             sst_write();
          }
       syn_add();//syn增
       syn_dec();//syn减
        Write595((syn[1]<<4)|(syn[3]&0x0f),(syn[5]<<4)|(syn[7]&0x0f));
        sst_write();
     }
}



void  ByteProgram(uchar data SrcByte,uint Dst)
{
    XBYTE[0x0555] = 0xAA;
    XBYTE[0x02AA] = 0x55;
    XBYTE[0x0555] = 0xA0;
    XBYTE[Dst]   = SrcByte;
    wait(1,9);//等待25us
}

int Erase_One_Sector(uint Dst)
{

        /*  Issue the Sector Erase command to 39SF040   */

        XBYTE[0x0555] = 0xAA; /* set up address to be 555h    */
                             /* write data 0xAA to the address     */
        XBYTE[0x02AA] = 0x55; /* set up address to be 2AAh    */
                             /* write data 0x55 to the address     */
        XBYTE[0x0555] = 0x80; /* set up address to be 555h    */
                             /* write data 0x80 to the address     */
        XBYTE[0x0555] = 0xAA; /* set up address to be 555h    */
                             /* write data 0xAA to the address     */
        XBYTE[0x02AA] = 0x55; /* set up address to be 2AAh    */
                             /* write data 0x55 to the address     */
        XBYTE[Dst]   = 0x20; /* set up starting address to be erased */
                             /* write data 0x30 to the address     */
        wait(85,134);        /* check DATABOOK for the most  */
                             /* accurate value -- Tse        */
}

uchar ByteRead(uint addr)
{
    uchar GetData;
    GetData = XBYTE[addr];       
    return(GetData);
}


关闭】 【打印
相关专题  
软件开发
消费电子
综合电子技术
AD/DA
计算机外设
接口电路
工业控制
电源系列
嵌入式软件
军工/航空航天
存储器
嵌入式硬件
安防产品
CPLD/FPGA
嵌入式系统
开发工具
测试测量
嵌入式开发新闻
应用产品
IC设计
医疗电子
数控系统
汽车电子
通信产品
SOPC

© 2007 百斯嵌入式开发网 网站地图