This repository has been archived on 2024-02-21. You can view files and clone it, but cannot push or open issues or pull requests.
开发说明
开发环境
- 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
指令