我正在使用连接到 FlexCAN1 上的 S32K146 CPU 的 UJA1169ATK/F/3。UJA1169ATK/F/3 用于部分联网,通过唤醒帧(无 FD!)将整个系统从深度睡眠模式唤醒。
实际上,只要在 CAN 总线上发送有效的帧(有效帧是指与所选过滤掩码兼容的帧),一切都能正常工作。
当发送不需要的帧(即语法正确但未通过 WUP 过滤的非 FD 帧)时,就会出现问题。通常情况下,如果发送了一个这样的帧,那么任何后续的有效帧都不会再唤醒收发器。似乎当出现不需要的帧时,UJA1169ATK/F/3 经常会锁定其正确识别有效帧的能力,从而无法唤醒。
首先我猜测问题可能是总线上的某些东西产生了总线错误,进而导致 UJA1169ATK/F/3 进入 RESET 模式,而没有移动 RX 信号,因此没有通知 CPU。但事实并非如此,因为我使用了 CAN 总线监测器,没有记录到总线错误(请注意,我使用 Windows 应用程序在 CAN 总线上生成消息,并使用另一个应用程序监测总线;这两个应用程序都使用单独的 USB/CAN 变流器)。
您知道问题可能出在哪里吗?
你好,米歇尔,
您描述的行为很可能与 UJA1169A 的内部 PN 错误处理有关。
该设备维护一个内部帧检测错误计数器。如果接收到的帧序列与配置的 PN 滤波器不匹配(或在 PN 评估中被解释为无效),则此计数器可能会溢出并触发 PN 帧检测错误 (PNFDE)。
一旦出现这种情况,SBC 可能会暂时停止正确识别有效的唤醒帧,这可以解释为什么后续的有效帧不再唤醒设备。
我建议检查 PNFDE 状态位并验证 PN 配置(ID/掩码、DLC、数据掩码和数据速率设置)。作为调试步骤,您可以尝试禁用数据字段评估 (PNDM = 0) 以确定问题是否与数据筛选有关。
请告知我观察到的 PNFDE 状态和 PN 配置,以便我能进一步支持您的分析。
BRs,托马斯