feat(canfd): 添加CANFD自检功能和桥接模式支持
- 添加完整的CANFD初始化流程,包括硬复位机制解决CAN1卡死问题 - 实现CANFD自检功能,包含物理总线测试和内部回环测试 - 支持CAN0到CAN1/CAN2的透传桥接模式 - 添加详细的初始化诊断信息输出 - 修复CAN滤波器配置和GPIO映射问题 - 增强错误处理和状态监控功能 perf(system): 优化系统时钟配置提高性能 - 将AHB时钟从SYSCLK/4调整为SYSCLK/2 (60MHz) - 优化PLL预分频配置参数 - 更新相关时序注释以反映实际频率变化 docs(esc): 更新EXMC总线时序配置注释 - 添加LAN9252 HBI时序要求详细说明 - 注明当前ESC未启用状态下的占位符说明 - 提供实际计算得出的HCLK延迟要求
This commit is contained in:
@@ -313,6 +313,7 @@ void AppSpiCommand::init()
|
||||
m_txLen = 0U;
|
||||
m_txPos = 0U;
|
||||
m_logPending = false;
|
||||
m_txActiveThisCs = false;
|
||||
m_commandCount = 0U;
|
||||
memset(m_txBuf, 0xFF, sizeof(m_txBuf));
|
||||
memset(m_logBuf, 0, sizeof(m_logBuf));
|
||||
@@ -495,6 +496,7 @@ void AppSpiCommand::onCsAssert()
|
||||
m_csActive = true;
|
||||
m_rxLen = 0U;
|
||||
m_txPos = 0U;
|
||||
m_txActiveThisCs = false;
|
||||
|
||||
/* 停止 DMA 并清理旧状态 */
|
||||
DMA_CHCTL(SPI_TX_DMA_PERIPH, SPI_TX_DMA_CH) &= ~DMA_CHXCTL_CHEN;
|
||||
@@ -516,6 +518,7 @@ void AppSpiCommand::onCsAssert()
|
||||
|
||||
/* 启动 DMA 发送响应帧(与 BOOT 完全一致) */
|
||||
if (m_txLen > 0U) {
|
||||
m_txActiveThisCs = true;
|
||||
spi_dma_enable(SPI0, SPI_DMA_TRANSMIT);
|
||||
startSpiTxDma(m_txBuf, m_txLen);
|
||||
} else {
|
||||
@@ -545,8 +548,19 @@ void AppSpiCommand::onCsRelease()
|
||||
|
||||
if (shouldIgnoreTransaction(m_rxBuf, m_rxLen)) {
|
||||
m_rxLen = 0U;
|
||||
if (m_txActiveThisCs) {
|
||||
m_txLen = 0U;
|
||||
m_txPos = 0U;
|
||||
memset(m_txBuf, 0xFF, sizeof(m_txBuf));
|
||||
}
|
||||
m_txActiveThisCs = false;
|
||||
return;
|
||||
}
|
||||
|
||||
m_txLen = 0U;
|
||||
m_txPos = 0U;
|
||||
m_txActiveThisCs = false;
|
||||
memset(m_txBuf, 0xFF, sizeof(m_txBuf));
|
||||
m_cmdPending = true;
|
||||
TaskManager::set(1UL << TASK_SPI_CMD_PROCESS);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user