基于ESP8266_NONOS_SDK-2.2.0

//flash读写实验
#define SPI_FLASH_SEC_SIZE 4096//FLASH扇区大小
u16 N_Data_FLASH_SEC=0x77;//存储数据的扇区编号
u32 A_W_Data[16]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};//写入flash数据
u32 A_R_Data[16]={0};//缓存都flash数据



//在主函数里面调用如下代码
//flash读写
spi_flash_erase_sector(0x77);//擦除0x77扇区
spi_flash_write(0x77*4096,(u32 *)A_W_Data,sizeof(A_W_Data));//写数据
os_printf("\r\n------------------write flashdata over---------\r\n");
spi_flash_read(0x77*4096,(u32 *)A_R_Data,sizeof(A_W_Data));//读数据
for(i=0;i<16;i++)
{
	os_printf("read data = %d \r\n",A_R_Data[i]);
	delay_ms(10);
}

总结:

  • 读写flash地址,不能和系统程序区冲突,可以放在【0x70000】之后
  • 读写flash,必须4字节对齐。
  • 向某扇区写入数据前,必须先擦除该扇区,擦除调用的是扇区编号,不是扇区地址。

可参考esp8266_flash_rw_operation_cn_v1.0.pdf