Firefly开源社区

打印 上一主题 下一主题

flash擦除

53

积分

0

威望

0

贡献

游客

积分
53

flash擦除

发表于 2015-6-5 09:25:04      浏览:8150 | 回复:5        打印      只看该作者   [复制链接] 楼主
我只想存一个字节的数据,不想擦除太多,所以想问问这个函数擦除的最小单位是什么,最小可以擦除多少?block_erase_flash(uint32_t addr, uint32_t block_size, uint32_t n)
回复

使用道具 举报

151

积分

0

威望

0

贡献

技术小白

积分
151
发表于 2015-6-5 11:33:44        只看该作者  沙发
QN902x 中的Flash  类似 W25X10 可以参考该ic datasheet
Sector Erase (4K-bytes)
就算你只改一个bit,为保证正确,也需要擦除一个扇区再写入,

建议使用nvds
回复

使用道具 举报

53

积分

0

威望

0

贡献

游客

积分
53
发表于 2015-6-5 11:47:26        只看该作者  板凳
FireBLE_blue 发表于 2015-6-5 11:33
QN902x 中的Flash  类似 W25X10 可以参考该ic datasheet
Sector Erase (4K-bytes)
就算你只改一个bit, ...

NVDS有没有读写的方法,以下方法写一个字节不成功,读出来的为0,256字节又可以,不知道为什么?
uint8_t buffer[256];
uint8_t rxbuffer[256];
for (j = 1; j < 256; j++) {
        rxbuffer[j] = 0;
        buffer[j] = j;
    }
sector_erase_flash(0x4000, 1);
write_flash(0x4000, (uint32_t *)buffer, 1);
read_flash(0x4000, (uint32_t *)rxbuffer, 1);
回复

使用道具 举报

151

积分

0

威望

0

贡献

技术小白

积分
151
发表于 2015-6-5 11:56:26        只看该作者  地板
thong 发表于 2015-6-5 11:47
NVDS有没有读写的方法,以下方法写一个字节不成功,读出来的为0,256字节又可以,不知道为什么?
uint8 ...

看一下nvds 的 的api ,论坛上有个帖子也讲了,可以看一下,有读写接口
回复

使用道具 举报

53

积分

0

威望

0

贡献

游客

积分
53
发表于 2015-6-5 16:20:56        只看该作者  5#
FireBLE_blue 发表于 2015-6-5 11:56
看一下nvds 的 的api ,论坛上有个帖子也讲了,可以看一下,有读写接口

这个nvds的方法要怎么用,下面的方法无法正常写入?
uint8_t test1 = 0xf1,test2;
       
        nvds_tag_len_t len = 1;
         
        if(retu==nvds_put(NVDS_END_MARKER_TAG,1,&test1))
        {
       
          nvds_get(NVDS_END_MARKER_TAG,&len,&test2);
       
        }
       
回复

使用道具 举报

151

积分

0

威望

0

贡献

技术小白

积分
151
发表于 2015-6-8 10:02:09        只看该作者  6#
本帖最后由 FireBLE_blue 于 2015-6-8 10:56 编辑

方法一:
1->在“usr_config.h ”头文件打开宏定义
  1. #define CFG_NVDS_WRITE
复制代码
2->在enum NVDS_TAG 枚举中增加TAG ,如下所示:
  1. NVDS_TAG_WR_TESET         = 0x14,
复制代码
3->在enum NVDS_LEN 枚举中增加TAG的长度,如下所示:
  1. NVDS_LEN_WR_TESET         = 5,//这里看要求,并不是一定要这个数
复制代码
4->测试代码如下:
  1. uint8_t* test1="Helon",test2[5]={0};
  2. nvds_tag_len_t length=strlen(test1);
  3. if (NVDS_OK==nvds_put(NVDS_TAG_WR_TESET,length,test1))
  4. {
  5.         nvds_get(NVDS_TAG_WR_TESET,&length,test2);
  6. }
复制代码
5->测试结果:


方法二:
使用QBlue里的Quintic NVDS Configurator软件



回复

使用道具 举报

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

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表