3.4 KiB
3.4 KiB
开发说明
开发环境
- Windows
- PlatformIO + VSCode
- Python3.8 及以上版本
文件介绍
src
中的源文件与 include
中的头文件一一对应。
- main.cpp: 入口函数
- VFileSystem: 文件系统接口
- DataRecorder: 数据读写接口
- ConfigManager: 配置项接口
- InterSerial: 与 STM32 通讯的串口功能
- UpperSerial: 与上位机通讯的串口功能
固件烧录流程
- 在 PlatformIO 中打开项目并等待依赖库加载完成
- 进入
tools
目录,并用 Python 运行init_fs.py
- 设备上电,按 boot 和 reset 进入 boot 模式
- 点击侧边栏的 PlatformIO 工具,在
PROJECT TASKS
选项卡下,点击esp32-s2-sensor-recorder
->Platform
->Upload Filesystem Image
等待文件系统上传完成 - 编译并上传代码固件
- 手动 reset
指令列表
注意,所有指令要以“回车换行”结尾。
内部串口指令
指令格式 | 请求样例 | 回复格式 | 回复样例 | 说明 |
---|---|---|---|---|
AT | AT | OK | OK | 测试串口是否连通 |
AT+MSGSTORE=len ,data |
AT+MSGSTORE=10,00AA02F556789098783E | OK/ERROR | OK | 向队尾存储一条数据 |
AT+MSGREAD=? | AT+MSGREAD=? | index ,len ,data /ERROR |
25,10,00AA02F556789098783E | 读取队头的一条数据,但不删除此数据 |
AT+MSGPOP=? | AT+MSGPOP=? | index ,len ,data /ERROR |
25,10,00AA02F556789098783E | 读取队头的一条数据,并删除此数据 |
AT+DEVIDREAD=? | AT+DEVIDREAD=? | ID /ERROR |
NHND02458821 | 读取设备唯一序列号 |
AT+SYSCFGREAD=? | AT+SYSCFGREAD=? | config /ERROR |
0,9,6 | 读取配置 |
AT+FORCESAVE | AT+FORCESAVE | OK/ERROR | OK | 强制写入队列数据至 Flash |
上位机串口指令
指令格式 | 请求样例 | 回复格式 | 回复样例 | 说明 |
---|---|---|---|---|
AT | AT | OK | OK | 测试串口是否连通 |
AT+MSGREAD=? | AT+MSGREAD=? | index ,len ,data * 100/ERROR |
25,10,00AA02F556789098783E * 100 | 读取队头最多 100 条数据,并删除这些数据 |
AT+MSGREAD=index |
AT+MSGREAD=100 | index ,len ,data * 100/ERROR |
25,10,00AA02F556789098783E * 100 | 从 Flash 的指定位置开始读 100 条数据,不影响队列指针 |
AT+DEVIDREAD=? | AT+DEVIDREAD=? | ID /ERROR |
NHND02458821 | 读取设备唯一序列号 |
AT+DEVIDSET=ID |
AT+DEVIDSET=NHND12222333 | OK/ERROR | OK | 写入设备唯一序列号 |
AT+SYSCFGREAD=? | AT+SYSCFGREAD=? | config /ERROR |
0,9,6 | 读取配置 |
AT+SYSCFGSET=config |
AT+SYSCFGSET=0,9,6 | OK/ERROR | OK | 写入配置 |
AT+FORCESAVE | AT+FORCESAVE | OK/ERROR | OK | 强制写入队列数据至 Flash |
AT+RECHEADINDEX=? | AT+RECHEADINDEX=? | head |
34 | 读取当前队头 index |
AT+RECTAILINDEX=? | AT+RECTAILINDEX=? | tail |
56 | 读取当前队尾 index |
AT+RECCOUNT=? | AT+RECCOUNT=? | count |
46 | 读取当前存储的数据条数 |
注意
- 文件系统和固件烧录后会报一个错,
WARNING: ESP32-S2 chip was placed into download mode using GPIO0.
因为 USB 烧录无法自动 reset。直接忽略即可。 - 与上位机通讯的串口,请在上位机打开 DTR 和 RTS 流控
- 存储数据时,至多要存储 8 条数据才会实际写入 Flash。读取数据时,至多要读取 64 次才会将队列指针写入 Flash。
- 若要立刻保存,请使用
AT+FORCESAVE
指令