SPI Flash 接口位于 /ESP8266_NONOS_SDK/include/spi_flash.h。
uint32 spi_flash_get_id (void)
SpiFlashOpResult spi_flash_erase_sector (uint16 sec)
typedef enum{
SPI_FLASH_RESULT_OK,
SPI_FLASH_RESULT_ERR,
SPI_FLASH_RESULT_TIMEOUT
} SpiFlashOpResult;
写入数据到 Flash。 Flash 读写必须 4 字节对齐。
SpiFlashOpResult spi_flash_write (
uint32 des_addr,
uint32 *src_addr,
uint32 size
)
从 Flash 读取数据。 Flash 读写必须 4 字节对⻬齐。
SpiFlashOpResult spi_flash_read(
uint32 src_addr,
uint32 * des_addr,
uint32 size
)
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]);
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 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 不会误操作擦写了正在运行行的应用程序。
bool spi_flash_erase_protect_enable(void)
bool spi_flash_erase_protect_disable(void)