一、架构改造 1、双串口架构:Serial (USB-Serial-JTAG, USB2) 用于 Windows 调试日志, SerialLinux (UART0/CH343, USB1) 用于 Android 业务数据收发 2、用 #define SerialLinux Serial0 别名引用 Arduino core 自带对象, 避免自建 HardwareSerial(0) 导致 RX ring buffer 冲突、命令无响应 二、RFID 冷启动稳定性(核心修复) 1、新增 rc522HardResetRuntime():显式拉低拉高 RST 做标准硬件复位时序 2、setup 中 3 次重试初始化 + 读 VersionReg 校验(0x91/0x92 为合法) 3、TaskRFID 运行时每 5 秒健康检查,异常自动恢复 背景:冷启动 GPIO14 浮空 50% 读到 HIGH,库仅软复位失败 → 刷卡永远无效 参考 miguelbalboa/rfid Issue #229、#269、#125 三、数据完整性 1、serialPrintlnSafe:互斥锁 + flush 保护业务数据输出 2、卡号格式校验 (HA + 阿拉伯数字),非法数据不发送 3、命令末尾 trim 兼容 \r\n (CRLF) 和 \n (LF) 两种行尾符 四、命令接收(双向打通) 1、processCommand(cmd, Stream& resp):响应回到发送方串口 2、handleCommandFromStream:双串口独立缓冲,Windows 和 Android 都能下发命令 3、新增 RESET 软复位命令(设备封装后无法物理按 RST 时使用) 五、启动稳定性(防硬件冲击与虚假事件) 1、LED 开机全黑启动,避免 186 颗 WS2812 同时点亮产生 4.5A 瞬时电流 冲击电源导致刚初始化的 RC522 进入异常状态 2、按键任务 lastState 从硬编码改为读取实际 GPIO 电平作为初始值 避免 GPIO16/17/18 无上下拉浮空触发虚假 SO_WAKEUP/SO_BT 事件 六、性能优化 1、TaskRFID 从 Core 1 迁至 Core 0,与 WS2812 关中断窗口物理隔离 2、LED 刷新频率 30FPS 降至 20FPS,关中断时间减少 33% 3、RFID 认证失败后 delay 从 100ms 降至 30ms,提升刷卡响应速度 4、USB CDC TX 缓冲区扩容至 4KB,降低突发输出时的截断概率 七、新增文件 1、ESP32踩坑经验文档.md:记录 11 个踩坑点 + 修复方案(含 GitHub Issue 佐证) 2、01_HOLOMAIN_旧开发板代码.ino:旧开发板稳定版本代码存档 3、02_HOLOMAIN_香橙派CM5开发板代码.ino:香橙派 CM5 适配版本代码存档 4、docs/ESP32-S3-SCH-V1.4.pdf:ESP32-S3 核心板硬件原理图 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Description
洛天依全息仓项目- ESP32代码相关代码
Languages
C++
100%