fix(spi-ota): SPI刷写初版已可完整进行刷写流程
- 在SPI OTA ISR处理函数入口立即设置已响应标志,防止帧被重复处理,避免状态机错误推进 - 修正DMA启动前预填SPI发送缓冲区,覆盖旧字节,解决MISO线输出旧ACK字节导致序号错位问题 - 改为SPI从机内部NSS固定低电平,防止因EXTI延迟丢失首字节,提升帧接收稳定性 - 优化CS下降沿处理流程,确保DMA停止后重新配置并启动,避免数据丢失和标志位误触发 - CS上升沿停止DMA但保持内部NSS低电平,提高下一次事务的接收连续性 - SPI中断处理加入对上次事务提前检测和补充分支,增强系统鲁棒性 - 降低调试打印频率,减少ISR日志开销 - 修复看门狗复位检测代码,阻止BOOT跳转至卡死的APP,进入等待OTA修复模式 - 在工程配置文件中添加bin格式输出支持
This commit is contained in:
@@ -64,6 +64,8 @@ public:
|
||||
static u8 s_isrLogBuf[kIsrLogBufSize];
|
||||
static u16 s_isrLogLen;
|
||||
|
||||
static void sender(ota_link_tx_type_t type, u8 len, const u8 *data);
|
||||
|
||||
private:
|
||||
static u8 crc8(const u8 *data, u16 len);
|
||||
static bool buildFrame(spi_ota_frame_type_t type, const u8 *payload, u16 payload_len,
|
||||
@@ -73,7 +75,6 @@ private:
|
||||
const u8 **payload,
|
||||
u16 *payload_len);
|
||||
static ota_link_msg_type_t mapMsgType(spi_ota_frame_type_t type);
|
||||
static void sender(ota_link_tx_type_t type, u8 len, const u8 *data);
|
||||
static void queueTxFrame(const u8 *frame, u16 len);
|
||||
static uint32_t enterCritical();
|
||||
static void exitCritical(uint32_t primask);
|
||||
|
||||
Reference in New Issue
Block a user