重启碰上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);
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值