收藏官网首页

ESP8266_12f中写flash的问题

查看数: 20646 | 评论数: 1 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2017-3-1 16:48

正文摘要:

本帖最后由 杀进丧尸城 于 2017-3-8 14:03 编辑 不管在哪个项目里基本上都会用到掉电记录数据的,所以不得不搞清楚。 根据2C-esp8266__SDK__Programming Guide__CN_v1.2.0中38页所说一个扇区4KB,读写必须4字节对 ...

回复

杀进丧尸城 发表于 2017-3-17 16:31:43
终于搞明白了,读和写必须四个字节四个字节的读写;擦出一次就是一个扇区,一个扇区就是4K=41024=4096,转换成16进制就是0x1000;写一次必须4个字节,如果再次写,在当前扇区就必须先擦出再写了,并且先前写的数据也不见了,所以写那么一次写一个扇区的数据,要么就换一个扇区写;读取数据的时候可以4个字节的读,没什么问题。
比如:第一次写入:
spi_flash_erase_sector(0x7C);//擦出当前地址的flash
spi_flash_write(0x7C000,(uint32 *)addr_case1,sizeof(addr_case1));//写flash,4个字节共32位
spi_flash_write(0x7C010,(uint32 *)adlr_case1,sizeof(adlr_case1));//写flash,4个字节共32位
spi_flash_write(0x7C020,(uint32 *)adcr_case1,sizeof(adcr_case1));//写flash,4个字节共32位

第二次写入:
spi_flash_erase_sector(0x7D);//擦出当前地址的flash
spi_flash_write(0x7D000,(uint32 *)addr_case1,sizeof(addr_case1));//写flash,4个字节共32位
spi_flash_write(0x7D010,(uint32 *)adlr_case1,sizeof(adlr_case1));//写flash,4个字节共32位
spi_flash_write(0x7D020,(uint32 *)adcr_case1,sizeof(adcr_case1));//写flash,4个字节共32位

第三次写入:
spi_flash_erase_sector(0x7E);//擦出当前地址的flash
spi_flash_write(0x7E000,(uint32 *)addr_case1,sizeof(addr_case1));//写flash,4个字节共32位
spi_flash_write(0x7E010,(uint32 *)adlr_case1,sizeof(adlr_case1));//写flash,4个字节共32位
spi_flash_write(0x7E020,(uint32 *)adcr_case1,sizeof(adcr_case1));//写flash,4个字节共32位

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表