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:
cbb
2026-07-02 02:02:41 +08:00
parent b171767023
commit 6aa21a1f9d
11 changed files with 608 additions and 57 deletions
+42 -4
View File
@@ -60,6 +60,40 @@
#define CONFIG_SPI_APP_OTA_BOOT_ACK_OK 0xB5U
/** @brief SPI 进入 Bootloader OTA 命令确认状态:失败。 */
#define CONFIG_SPI_APP_OTA_BOOT_ACK_ERROR 0xE2U
/* ============================================================
* CAN-FD 位时序配置(三路 CAN0/CAN1/CAN2 共用)
* 时钟链: SYSCLK=180MHz → AHB=/1=180MHz(RCU_MODIFY_UP 强制)
* → APB1=/2=90MHz (CAN_CLK)
*
* 仲裁段目标: 1.0 Mbps = 90MHz / (9 × 10 TQ)
* 数据段目标: 2.0 Mbps = 90MHz / (9 × 5 TQ)
*
* @note RCU_MODIFY_UP 宏在 system_clock_180m_hxtal() 末尾将 AHB 从 /4
* 临时切到 /1,这是 GigaDevice 官方行为,不可删除。
* 最终 AHB=180MHz, APB1=90MHz, APB2=180MHz, TIMER2_CLK=180MHz。
* ============================================================ */
/** @brief 仲裁段预分频值。 */
#define CONFIG_CAN_NOMINAL_PRESCALER 9U
/** @brief 仲裁段再同步跳跃宽度。 */
#define CONFIG_CAN_NOMINAL_SJW CAN_BT_SJW_1TQ
/** @brief 仲裁段时间段 1(PHSEG1)。 */
#define CONFIG_CAN_NOMINAL_BS1 CAN_BT_BS1_7TQ
/** @brief 仲裁段时间段 2(PHSEG2)。 */
#define CONFIG_CAN_NOMINAL_BS2 CAN_BT_BS2_2TQ
/** @brief 数据段预分频值。 */
#define CONFIG_CAN_DATA_PRESCALER 9U
/** @brief 数据段再同步跳跃宽度。 */
#define CONFIG_CAN_DATA_SJW CAN_BT_SJW_1TQ
/** @brief 数据段时间段 1。 */
#define CONFIG_CAN_DATA_BS1 CAN_BT_BS1_3TQ
/** @brief 数据段时间段 2。 */
#define CONFIG_CAN_DATA_BS2 CAN_BT_BS2_1TQ
/** @brief BRS(比特率切换)使能开关:1=启用数据段加速,0=关闭仅经典 CAN。 */
#define CONFIG_CAN_FD_BRS_ENABLE 1U
/** @brief CAN 接收过滤器目标标准帧 ID。 */
#define CONFIG_CAN_RX_FILTER_ID CONFIG_CAN_STATUS_ID
/** @brief CAN 接收过滤器标准帧掩码;`0x7FFU` 表示精确匹配 11-bit ID。 */
@@ -81,7 +115,10 @@
#define CONFIG_SCHED_TIMER_IRQn TIMER2_IRQn
/** @brief 用户调度定时器时钟使能宏参数。 */
#define CONFIG_SCHED_TIMER_RCU RCU_TIMER2
/** @brief 用户调度定时器预分频值。 */
/** @brief 用户调度定时器预分频值。
* 时钟链: SYSCLK=180MHz → AHB=/1=180MHz(RCU_MODIFY_UP 强制) → APB1=/2=90MHz → TIMER2_CLK=APB1×2=180MHz。
* 保持 100us tick: (PSC+1)×(PER+1)=18000 → 180×100 → PSC=179, PER=99。
*/
#define CONFIG_SCHED_TIMER_PRESCALER 179U
/** @brief 用户调度定时器周期重装值。 */
#define CONFIG_SCHED_TIMER_PERIOD 99U
@@ -127,7 +164,7 @@
/** @brief APP 主版本号。 */
#define APP_FW_VERSION_MAJOR 1U
/** @brief APP 次版本号。 */
#define APP_FW_VERSION_MINOR 1U
#define APP_FW_VERSION_MINOR 2U
/** @brief APP 补丁版本号。 */
#define APP_FW_VERSION_PATCH 2U
/** @brief APP 构建编号。 */
@@ -179,8 +216,9 @@
#define CONFIG_ETHERCAT_SYNC_MODE 0
/** @brief periodicIsr 最大执行时间告警阈值(µs)。实测超过此值需评估减小 PDO 大小或优化 EXMC 时序。
* 当前阈值 5µs:基于 32 字节 PDO + EXMC 6 HCLK 时序的估算上限。
* preempt=0 ISR 阻塞窗口 ≤ 此阈值时,CAN/SPI 中断需容忍。 */
* 当前阈值 5µs:基于 180MHz + 32 字节 PDO + EXMC 6 HCLK 时序的估算上限。
* preempt=0 ISR 阻塞窗口 ≤ 此阈值时,CAN/SPI 中断需容忍。
* @note 启用 ESC 后需根据实测 HCLK 数重新评估。 */
#define CONFIG_ETHERCAT_ISR_MAX_US_THRESHOLD 5U
/** @brief 输入 PDO(TxPDO)在 PDI 内存区的起始偏移。