乐鑫技术交流
直播中

李进锋

7年用户 912经验值
私信 关注
[问答]

如何使用ESP12-E的Flash内存来存储用户配置数据?

我想使用 ESP12-E 的 Flash 内存来存储用户(不是静态)配置数据。数据每天最多从用户应用程序更改一次。它应该是这样的:

AT+FLASH= for set command
在闪光灯?          回应

255 字节的数据长度对于我的应用程序来说已经足够了。

有人能够创建这样的 AT 命令吗?我不是很有经验,我只使用 AT 命令而不是 SDK。

回帖(1)

王桂英

2024-7-16 17:53:39
要使用ESP12-E的Flash内存存储用户配置数据,您可以使用以下步骤创建自定义AT命令。这里假设您已经有了基本的ESP8266 AT命令知识。

1. 首先,您需要定义一个新的AT命令。例如,我们可以将其命名为`AT+SETFLASH`。这个命令将用于设置Flash内存中的数据。

2. 接下来,您需要确定数据存储的位置。ESP8266的Flash内存大小为1MB,您可以根据需要选择一个合适的地址。例如,我们可以选择从地址0x10000开始存储数据。

3. 编写AT命令处理函数。在ESP8266的固件中,您需要添加一个新的函数来处理`AT+SETFLASH`命令。以下是一个简单的示例:

```c
void ICACHE_FLASH_ATTR user_setFlashData() {
    char *data;
    uint16_t data_len;

    // 检查参数数量
    if (param_count != 2) {
        sendATResponse("ERROR");
        return;
    }

    // 获取数据和长度
    data = param[1];
    data_len = strlen(data);

    // 检查数据长度是否符合要求
    if (data_len > 255) {
        sendATResponse("ERROR: Data length exceeds 255 bytes");
        return;
    }

    // 存储数据到Flash内存
    spi_flash_erase_sector(0x10000 / SPI_FLASH_SEC_SIZE);
    spi_flash_write(0x10000, (uint32 *)data, data_len);

    sendATResponse("OK");
}
```

4. 注册AT命令。在ESP8266的固件中,您需要将新的AT命令添加到命令表中。例如:

```c
const at_cmd_t at_cmd_table[] = {
    // 其他AT命令
    {"+SETFLASH", "AT+SETFLASH=", user_setFlashData, 2, 0},
    // ...
};
```

5. 编译并烧录固件到ESP12-E模块。

6. 使用AT命令设置Flash内存中的数据。现在,您可以使用以下命令将数据存储到Flash内存中:

```
AT+SETFLASH=
```

其中``是您要存储的数据,长度不超过255字节。

7. 读取Flash内存中的数据。您可以使用`AT+READFLASH`命令读取存储在Flash内存中的数据。您需要实现这个命令的解析和处理逻辑。

请注意,这里提供的代码示例仅供参考。您可能需要根据您的具体需求和ESP8266固件版本进行调整。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分