我只想存一个字节的数据,不想擦除太多,所以想问问这个函数擦除的最小单位是什么,最小可以擦除多少?block_erase_flash(uint32_t addr, uint32_t block_size, uint32_t n)
QN902x 中的Flash 类似 W25X10 可以参考该ic datasheet
Sector Erase (4K-bytes)
就算你只改一个bit,为保证正确,也需要擦除一个扇区再写入,
建议使用nvds
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);
thong 发表于 2015-6-5 11:47
NVDS有没有读写的方法,以下方法写一个字节不成功,读出来的为0,256字节又可以,不知道为什么?
uint8 …
看一下nvds 的 的api ,论坛上有个帖子也讲了,可以看一下,有读写接口
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);
}
本帖最后由 FireBLE_blue 于 2015-6-8 10:56 编辑
方法一:
1->在“usr_config.h ”头文件打开宏定义
#define CFG_NVDS_WRITE
2->在enum NVDS_TAG 枚举中增加TAG ,如下所示:
NVDS_TAG_WR_TESET = 0x14,
3->在enum NVDS_LEN 枚举中增加TAG的长度,如下所示:
NVDS_LEN_WR_TESET = 5,//这里看要求,并不是一定要这个数
4->测试代码如下:
uint8_t* test1="Helon",test2[5]={0};
nvds_tag_len_t length=strlen(test1);
if (NVDS_OK==nvds_put(NVDS_TAG_WR_TESET,length,test1))
{
nvds_get(NVDS_TAG_WR_TESET,&length,test2);
}
5->测试结果:
![]()
方法二:
使用QBlue里的Quintic NVDS Configurator软件

