admin 管理员组

文章数量: 893893

重启碰上FLASH

一:简述

8266芯片有自己的外部flash,可以存放一些用户参数,对flash的操作主要有擦,读,写。这里记录一下自己的对这部分的运用。

硬件:ESP-LAUNCHER开发板

二:SPI Flash API接口展示

注:读/写Flash的地址,不能够和系统程序区产生冲突,建议放在0x70000之后。

       Flash的读写,必须与4字节对齐

       向某一个扇区写数据之前,要先擦除该扇区


三:程序

// 宏定义
#define		SPI_FLASH_SEC_SIZE	4096		// Flash扇区大小,4KB,每1KB=1024// 全局变量
//u16 Sector_Flash = 0x90;	// 存储数据的扇区编号
u32 W_Data[6] = {1,2,3,4,5,6};// 写入Flash的数据
u32 R_Data[6] = {0};			// 缓存读Flash的数据// 毫秒延时函数
void ICACHE_FLASH_ATTR delay_ms(u32 C_time)
{	for(;C_time>0;C_time--)os_delay_us(1000);
}void ICACHE_FLASH_ATTR user_init(void)
{u8 i = 0;uart_init(115200,115200);	// 初始化串口波特率os_delay_us(10000);			// 等待串口稳定os_printf("\t SDK version:\t%s", system_get_sdk_version());// 向0x90地址起,写入6个数据(每个数据占4字节)spi_flash_erase_sector(0x90);	// 擦除0x90扇区		参数==扇区编号// 向Flash写数据(参数1=字节地址、参数2=写入数据的指针、参数3=数据长度)spi_flash_write(0x90*4096, (uint32 *)W_Data, sizeof(W_Data));os_printf("-_- -_- -_- -_- -_- -_- -_- -_- -_- -_- -_- -_- -_- -_- -_- \n");// 从0x90 地址起,读出6个数据(每个数据占4字节)spi_flash_read(0x90*4096, (uint32 *)R_Data, sizeof(W_Data));// 串口打印读出的数据for(i=0; i<6; i++){os_printf("Read Data = %d \r\n",R_Data[i]);delay_ms(10);}
}

 

本文标签: 重启碰上FLASH