示例24:SD卡读写
实验概述
当前开发源码通过 SPI 接口提供 SD 卡/TF 卡挂载与 Web 文件操作,沿用 SDIO 外设类型(type 37)。运行时不支持 SDMMC,SD 卡不自动替代 LittleFS 或承担日志/离线报告缓存。
待验示例:SPI 配置保持禁用;先核对目标板、引脚、供电及固件版本。年龄、恢复、只读规则及页面已有局部Host验证记录;统一候选仍待完整门禁,现场挂载、文件读写、故障恢复、资源测量与长稳均为 NOT_RUN。任意路径文件写入动作未实现,专用数值记录动作40见下文。
硬件接线
SPI 模式
| 开发板标识 | GPIO引脚 | SD卡引脚 |
|---|---|---|
| MOSI | GPIO23 | DI(CMD) |
| MISO | GPIO19 | DO(DAT0) |
| CLK | GPIO18 | CLK |
| CS | GPIO5 | CS(DAT3) |
SDMMC六线模式不受当前运行时支持,不能导入旧占位配置。
JSON 配置示例
SPI 模式
json
{
"peripherals": [
{
"id": "sd_spi",
"name": "SD卡-SPI",
"type": 37,
"enabled": false,
"pinCount": 4,
"pins": [18, 23, 19, 5],
"params": {"interface": 1, "frequency": 10000000}
}
]
}SPI 引脚顺序为 SCK、MOSI、MISO、CS。这些引脚只是 classic ESP32 示例,不能直接套用到其它板卡;应在外设配置流程核对预检与导入格式。
外设执行联动
已加入的动作38“SD 状态快照(只读)”输出质量/年龄/诊断JSON文本,可选择相应禁用规则模板后预览,不会自动保存或启用。它不会挂载、查卡或写文件,也不是数值历史或实时容量条件。平台需配置对应文本属性;旧固件不支持动作38。
Web文件操作限制、显式恢复流程与容量质量说明见 SD卡存储。容量年龄是本次启动的64位单调毫秒,不是UTC;刷新不重新采样,也不证明卡仍在线。卸载/失败后文件访问不自动挂载,恢复不重放失败写入。
⚠️ 注意:当前外设执行没有内置
file_append/file_write文件动作。动作40已提供专用数值记录,但不是任意路径文件写接口。
专用数值记录模板(动作40)
- 先保存温度读取规则(动作19),启用并勾选数值历史;明确核对来源及测量质量。
- 完成SD外设配置与显式挂载。新增执行规则,选择“数值采集来源 → SD 持续记录”,选择该SD及温度来源。
- 预览并填入禁用草稿;检查采样/失鲜/刷写时间、文件大小和数量。模板采用独立1秒定时触发,无历史、屏幕控制、延时或脚本。
- 正常保存及服务端预检通过后,确认允许持续写卡再启用。手动执行只读状态;全局仅一个记录器。轮转会覆盖旧日志,故障恢复不重放失败批次。
详细参数、来源约束及计数质量见SD卡存储。模板完成不代表真实卡或24h/7d长稳通过,未执行的现场项目保持NOT_RUN。
注意事项
- 格式:建议使用 FAT32;其它格式(含 exFAT)未在本候选验收,不能仅凭卡容量推断支持。挂载不会自动格式化。
- 供电:SD 卡工作电流可达 100mA,确保 3.3V 供电稳定
- SPI 共享:SD 卡使用 SPI 总线时,CS 引脚用于选择设备
- 引脚核验:按SPI配置核对总线共享、片选和板级保留引脚
- 写入频率:避免过于频繁的写入操作,建议批量写入
- 文件系统:FastBee 使用 LittleFS 管理内部 Flash,SD 卡使用 FAT 文件系统
- 热插拔:不支持热插拔,SD 卡需在断电时插拔
- 当前状态:SPI/Web文件操作、只读动作38及专用数值记录动作40已有候选源码;任意路径文件追加动作仍未支持。局部软件验证不等于完整候选通过;真实卡故障恢复、资源/内存测量及长稳仍为 NOT_RUN。

