工具与软件:
大家好、团队成员:
我已配置选择性唤醒寄存器、以在接收到 CAN ID:0x123、DLC = 8、数据字节7掩码= 0x01标准 CAN 时将收发器从睡眠模式唤醒。 这按预期运行。 但在测试过程中观察到以下情况。
1.根据上述配置和波特率等配置所有选择性唤醒相关寄存器
2.设置 DATA_MASK_EN
设置 SWCFG
4.启用 SW_EN 位
5.通过 SPI 更改为正常模式
6.通过 SPI 更改为待机模式
7.立即通过 SPI 更改为睡眠模式
8.发送无效 WUF ->设备未唤醒
9.发送一次有效的 WUF ->器件未唤醒
10.发送两次有效 WUF、其间隙约为1秒->器件未唤醒
11、发送两次有效的 WUF、它们之间的间隙约为800ms ->器件唤醒。
即使我在它们之间的800ms 间隔内发送无效的 WUF 后跟有效的 WUF、器件也会唤醒。 但是、如果这2个帧之间的延迟更长、则器件也不会使用有效的 WUF 唤醒。 这一观察导致以下问题。
根据手册、对于选择性唤醒、我们需要发送 WUP 后跟 WUF、以便完全转换到待机模式。 否则、如果 tSILENCE (大约1.2s)到期、则器件切换回低功耗模式。

1.这是否意味着在我们的测试中、发送的第1个 CAN 帧被视为 WUP、而收发器期望 tSILENCE 内有下一个有效的 WUF? 原因是、测试在步骤11中有效、而在步骤10中无效吗?
tSILENCE 介于0.6到1.2s 之间。 我观察到的是、如果我在840ms 内发送 WUF、器件会唤醒、否则不会。 考虑到 tSILENCE 值直到1.2秒、这是否是预期的行为?
3.当我在唤醒后进行读取时(即使我在发送第一个 WUP 后发送连续的 WUF 帧而没有使 tSILENCE 到期时也是如此)、INT_1寄存器位 CANINT、CANSLNT、CANTO 会被置位。 预计为 CANINT。 然而、为什么 CANSLNT 和 CNTO 位被置位呢? 在器件进入睡眠状态后、会从测试环境每100ms 持续发送一次唤醒帧。
此致、
Punith Chandra