NodeMCU NO_OS SDK 开发——Flash接口

SPI Flash接口

SPI Flash 接口位于 /ESP8266_NONOS_SDK/include/spi_flash.h。

查询SPI Flash的ID

uint32	spi_flash_get_id	(void)
  • 返回 spi flash id

擦除Flash扇区

SpiFlashOpResult	spi_flash_erase_sector	(uint16	sec)
  • uint16 sec:扇区号,从扇区 0 开始计数,每扇区 4 KB
  • 返回 SpiFlashOpResult
typedef	enum{
				SPI_FLASH_RESULT_OK,
				SPI_FLASH_RESULT_ERR,
				SPI_FLASH_RESULT_TIMEOUT
}	SpiFlashOpResult;

写入数据到 Flash

写入数据到 Flash。 Flash 读写必须 4 字节对齐。

SpiFlashOpResult	spi_flash_write	(
				uint32	des_addr,	
				uint32	*src_addr,	
				uint32	size
)
  • uint32 des_addr:写入 Flash 目的地址
  • uint32 *src_addr:写入数据的指针
  • uint32 size:数据长度,单位 byte,必须 4 字节对齐进行行读写
  • 返回 见上文定义

从Flash读取数据

从 Flash 读取数据。 Flash 读写必须 4 字节对⻬齐。

SpiFlashOpResult	spi_flash_read(
				uint32	src_addr,	
				uint32	*	des_addr,	
				uint32	size
)
  • uint32 des_addr:写入 Flash 目的地址
  • uint32 *des_addr: 存放读取到数据的指针
  • uint32 size:数据长度,单位 byte,必须 4 字节对齐进行行读写
  • 返回 见上文定义

从Flash读取数据示例

	uint32	value;
	 uint8	*addr	=	(uint8	*)&value;
	 spi_flash_read(0x3E	*	SPI_FLASH_SEC_SIZE,	(uint32	*)addr,	4);
	 os_printf("0x3E sec:%02x%02x%02x%02x\r\n",	addr[0], addr[1], addr[2], addr[3]);

使用带读写保护机制的方式,写入数据到 Flash

bool	system_param_save_with_protect	(
				uint16	start_sec,	
				void	*param,	
				uint16	len
)
bool	system_param_load	(
	 	 uint16	start_sec,	
	 	 uint16	offset,
	 	 void	*param,	
	 	 uint16	len
)

注册用户自定义的 SPI Flash 读取接口函数

仅支持在 SPI overlap 模式下使用,请用户参考
ESP8266_NONOS_SDK\driver_lib\driver\spi_overlap.c

void	spi_flash_set_read_func	(user_spi_flash_read	read)
typedef	SpiFlashOpResult	(*user_spi_flash_read)(
	 	 		SpiFlashChip	*spi,
				uint32	src_addr,	
				uint32	*	des_addr,	
				uint32	size
)

使能 flash 擦写保护

使能后,将保护 flash 不会误操作擦写了正在运行行的应用程序。

bool	spi_flash_erase_protect_enable(void)

关闭 flash 擦写保护功能

bool	spi_flash_erase_protect_disable(void)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值