feat(SpiOta): 添加SPI OTA协议硬件握手功能

- 添加对BOOT实际支持的OTA协议帧(REQ/DATA/CANCEL)的过滤,
  对不支持的帧类型(如CAN bridge命令)返回ERROR响应,避免误处理

- 实现SPI Ready硬件握手功能,复用PB6引脚作为SPI Ready信号输出,
  CS下降沿拉低表示从机忙碌,响应完成后拉高表示就绪

- 新增setSpiReady接口用于控制SPI Ready引脚状态,
  确保与DCU_APP行为一致,适配ESP32的硬件握手时序

- 修复因未知帧类型被误认为CANCEL而导致OTA状态机被频繁重置的问题
```
This commit is contained in:
cbb
2026-07-06 19:13:36 +08:00
parent 0b086d4b86
commit 52e59876cf
3 changed files with 63 additions and 3 deletions
+6
View File
@@ -46,6 +46,12 @@ public:
static bool hasActiveSession();
static u16 copyTxFrame(u8 *out, u16 max_len);
/** @brief 翻转 SPI Ready 握手引脚(PB6)电平。
* @param[in] ready true=就绪(HIGH), false=忙(LOW)。
* @note GPIO BSRR/BRR 写入原子,无需临界区;可由 ISR 与主循环共同调用。
* 与 DCU_APP AppSpiCommand::setSpiReady 行为一致,适配 ESP32 硬件握手。 */
static void setSpiReady(bool ready);
static void isrProcessFrame();
static void tryProcessCompleteFrame();
static void isrLogFrame(const char *tag, const u8 *data, u16 len);