2402012_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2402012_zh-CN

2402012_zh-CN

S32K314 CAN 问题

我正在使用 S32K314,最近在通过短路振荡器进行测试时遇到了 CAN 问题;

恢复后,我监测了SPI和ADC模块,这些模块工作正常,但CAN模块无法正常工作。

调试器显示以下信息:在此状态下,CAN 总线无法接收或发送任何帧。

这是怎么回事?如何通过软件修复这个故障?

Snipaste_2026-08-04_13-32-47.jpg

Re: S32K314 CAN issue

你好,

谢谢你的回复。

我尝试在“Mcu_ClockSourceFailure_Notification”中添加一些测试代码,但此通知没有被触发;

那么从软件方面来说,我们如何才能注意到这个问题并重置CAN模块呢?

谢谢!

以下是您提到的寄存器的值:


MCR

KidhRobin_0-1785975444257.png

CTRL1

KidhRobin_1-1785975470032.png

认知行为疗法:

KidhRobin_2-1785975496485.png

FDCBT:

KidhRobin_6-1785975801928.png

ECR

KidhRobin_4-1785975599003.png

ESR1

KidhRobin_5-1785975618985.png




Re: S32K314 CAN issue

您好,

从提供的屏幕截图来看,接收错误计数器 (RXERRCNT) 正在增加,而 TXERRCNT 保持为 0,这与典型的发送相关问题并不完全吻合,即使 ESR1 指示正在进行传输尝试。

振荡器短路可能会影响时钟,例如导致恢复后 CAN 位时序不正确。然而,目前的信息不足以证实这一点。

请问您能否提供以下信息:

  • 更全面地了解 FlexCAN 寄存器(包括 MCR/CTRL1/CBT/FDCBT、ECR 和 ESR1),
  • 恢复后模块和CAN协议时钟配置,
  • 故障期间是否捕获了TX、RX和CAN总线测量数据?

如果 FlexCAN 模块时钟和 CAN 协议时钟正在运行且频率符合预期,您还可以尝试执行 FlexCAN 模块软件重置,然后完全重新初始化模块,并检查通信是否恢复。

BR,彼得

Re: S32K314 CAN issue

您好,

如果没有进入 Mcu_ClockSourceFailure_Notification(),我的第一个假设是项目中没有配置或启用相应的 MCU 中断/通知路径。

请您核查一下:

  • 是否对受影响的时钟源启用时钟监控(CMU)。
  • CMU中断是否已启用。
  • MCU 模块是否配置为在检测到时钟故障时调用 Mcu_ClockSourceFailure_Notification()。

在振荡器短路事件发生后,检查 CMU 和 RGM 状态寄存器也可能很有用,以验证是否确实检测到了时钟故障。

从 FlexCAN 寄存器转储可以看出,该模块似乎已启用并与总线同步 (SYNCH=1),而 RXERRCNT 增加,TXERRCNT 保持 0,现在没有总线活动。我看到显示的位定时寄存器(CTRL1、CBT、FDCBT)不包含有效的 CAN 定时配置,尽管如果使用增强型 CAN 位定时并且实际定时是通过相应的增强型 CAN 位定时寄存器配置的,这是可以预期的。

因此,在实施 CAN 复位策略之前,最好先验证是否检测到时钟故障事件以及通知机制是否已正确配置。

BR,彼得

Tags (1)
No ratings
Version history
Last update:
yesterday
Updated by: