feat(canfd): 添加通道使能控制和SPI握手信号支持

- 添加通道使能开关配置,通过sys/config.h中的CONFIG_CAN_CHx_ENABLE控制各通道
- 实现isChannelEnabled()方法用于查询通道使能状态
- 修正CAN1引脚映射配置,将RX/TX引脚对调并禁用重映射
- 修正错误计数器读取逻辑,REC字段从bit24开始提取而非bit8
- 修正busOff状态判断,使用CAN_ERR_BOERR标志位
- 调整滤波器配置时机,移到所有hardReset完成后防止共享寄存器被清零
- 在发送时增加总线健康检查,避免高错误计数时继续发送导致bus off
- 添加SPI Ready握手信号(PB6)控制,改善主从机通信同步

fix(spi): 实现SPI命令处理中的READY信号握手协议

- 添加SPI Ready信号控制,PB6输出指示从机就绪状态
- CS下降沿立即拉低READY信号防主机抢跑
- 命令处理完成且无待处理命令时拉高READY信号
- 忽略无效事务后恢复READY信号避免超时
- 在繁忙期间保持READY信号低电平通知主机等待
This commit is contained in:
cbb
2026-07-06 19:13:56 +08:00
parent 6aa21a1f9d
commit b78e36ff37
6 changed files with 397 additions and 226 deletions
@@ -1,4 +1,4 @@
#ifndef DEVICE_APP_SPI_COMMAND_H
#ifndef DEVICE_APP_SPI_COMMAND_H
#define DEVICE_APP_SPI_COMMAND_H
#include <cstdint>
@@ -84,6 +84,12 @@ private:
void onCsAssert();
void onCsRelease();
void processCommand();
/** @brief 翻转 SPI Ready 握手引脚(PB6)电平。
* @param[in] ready true=就绪(HIGH), false=忙(LOW)。
* @note GPIO BSRR/BRR 写入原子,无需临界区;可由 ISR 与主循环共同调用。
*/
void setSpiReady(bool ready);
};
/** @brief 全局 SPI 命令总线实例。 */