微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 关于CC2530 FLASH操作的问题,是否需要HalFlashErase()先,才能HALFlashWrite()?

关于CC2530 FLASH操作的问题,是否需要HalFlashErase()先,才能HALFlashWrite()?

时间:10-02 整理:3721RD 点击:

TI的工程师,

在进行CC2530的flash读写操作的时候,是否需要先HalFlashErase()先,才能HALFlashWrite()?

看网上的资料,说需要将Flash先初始化才能写操作,有一个HALFlashInit()函数,但是我找了 hal_flash.c里面都没有,其他也没有这个函数。

不知道是不是版本的问题,我的协议栈版本是:2.5.1a。

目前采用 先 HalFlashErase();然后HALDMAINIT()是可以正常写的,也能正常读。

但是因为我每次HALFlashWrite都是写4个字节,而存储的数据可能有30+字节,每次写之前都HalFlashErase()一下不免需要重新全部写入。

请问是否有更好的办法?等待回复。谢谢。

flash的规则是,初始化时都是0xff, 写的时候你可以把1改为0,但是没法再从0改到1,需要重新擦除。而擦除需要按页擦除也就是2K一擦。

所以,使用协议栈的osal_nv.c 对flash有很好的管理。建议使用osal_nv的flash操作接口。代码都可见,自行研究。

擦除按一页进行的!

谢谢TY,还有一个疑问。

因为需要初始化,如果系统在写flash的时候,先初始化了一个page,刚好执行写入的时候,突然断电,就会产生该页flash数据丢失。

在考虑是否可以用两个page做备份:比如119页用来实际存储,120页用备份。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top