6474|6

74

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

NORFLASH读写问题 [复制链接]

要将一些重要参数保存到flash里,代码如下:
UInt8 hwFlashWriteSetup(UInt8 *pData, UInt32 nSize)
{
        UInt8 *pTemp;
        crc_t crc, i;
        int   status=0;

        FlashInit();

        pTemp = (UInt8 *)malloc(nSize+4);
        crc = crc32(pData, nSize);           //校验码
        memcpy(pTemp+nSize, (UInt8 *)&crc, 4);

        // 擦除并写入
        FlashErase(tmUnit0, gConfigBlock1, nSize+4);
        for (i=0; i<3; i++)                // 写入后,再读出比较,最多3次
        {
                memcpy(pTemp, pData, nSize);
                FlashWrite(tmUnit0, pTemp, gConfigBlock1, nSize+4);//先写入
                FlashRead(tmUnit0, gConfigBlock1, pTemp, nSize);//再读出
               
                Sleep(200);//延时200ms,若去掉此延时,下面的比较验证会失败

                if (!memcmp(pData, pTemp, nSize)) break; // 如果比较相同,直接跳出
        }
        if (i >= 3) status |= 0x01; // 写入错误

        free(pTemp);
         pTemp = NULL;

        return status;
}
简短起见,去掉了一些检验语句,但可以保证各函数调用成功。
问题在于:若去掉Sleep(200)语句,则接下来的比较会失败.
哪位大哥有经验指教一下,先谢谢了

最新回复

对,你可以查一下芯片手册,上面一般都提到 擦写整片 擦写块所需要的时间。  详情 回复 发表于 2010-3-10 17:25
点赞 关注

回复
举报

65

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
少些是需要时间的,延时是必要的。
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
烧写需要时间,延时是必要的。
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

4
 
针对这个问题,建议楼主先了解下:
NOR flash和NAND flash的区别
http://blog.eeworld.net/linweig/archive/2009/12/18/5030724.aspx

NOR FLASH的绝大数写入操作需要先进行擦除操作,所以必须等待一定的延时。
这个在NOR FLASH芯片的技术手册中,其对应的写操作和擦除操作的流程框图中也有提到,建议楼主看下你NOR FLASH的技术手册。
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 3 楼 kyzf 的回复:
针对这个问题,建议楼主先了解下:
NOR flash和NAND flash的区别
http://blog.eeworld.net/linweig/archive/2009/12/18/5030724.aspx

NOR FLASH的绝大数写入操作需要先进行擦除操作,所以必须等待一定的延时。
这个在NOR FLASH芯片的技术手册中,其对应的写操作和擦除操作的流程框图中也有提到,建议楼主看下你NOR FLASH的技术手册。
1.我这个延时是加在读操作之后啊,而且底层都有相应延时的
2.我晚上试着在最简环境下(无其他模块)测试了一下,不加这个延时是没有问题的。说明是我的应用程序某些地方产生了干扰,但这个函数只有这一处调用。memcmp()函数也看不出有什么问题。不解。
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

6
 
烧写需要时间,延时是必要的。
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

7
 
对,你可以查一下芯片手册,上面一般都提到 擦写整片 擦写块所需要的时间。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表