This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TCAN1145-Q1:TCAN1145意外唤醒

Guru**** 2465890 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1475693/tcan1145-q1-tcan1145-wake-up-accidentally

器件型号:TCAN1145-Q1

工具与软件:

你(们)好

客户在其 OBC 产品中使用 TCAN1145。  

它们的系统中存在一个问题:主机发送的任何帧都可能意外唤醒辅助源。 它们将 固定帧配置为唤醒、而非固定帧将不会触发唤醒。

配置的 SWCFG=1、当意外唤醒时、它会更改为0。

 

原理图如下所示:

 

并且客户已排除以下情况:通过 WAKE 引脚唤醒;BAT12V 的电源电压在12.9V - 12.12V 之间波动、这是正常范围内;SPI 通信、读取和写入均正常。

他们的问题是:这是什么样的情况  SWERR 将显示为 1(正常原型为 0)? 如何解决该问题?  

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    哈利、您好!

    有两种情况会设置 SWERR、如数据表中所述。

    • SW_EN 设置为1、但 SWCFG 为0
    • 帧溢出会导致禁用选择性唤醒

    在这种情况下、意外唤醒是由于帧溢出引起的、有关详细信息、请参阅10.4.5.2。 只要存在意外唤醒、它们就可以检查 FRAME_OVF 中断以进行确认。

    当器件处于睡眠模式且启用了选择性唤醒时、它们是否发送 CAN FD 帧?

    此致、

    Sean

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Sean

    1:我想询问当 FRAME_OVF 事件发生时 INH 引脚是否转换为高电平。
    2 μ s:睡眠模式时是否可以关闭帧错误检测? 我不希望发生 FRAME_OVF 事件。
    3 μ s 当在:模式下发生 FRAME_OVF 事件(SW_EN=1)时、它是否会触发芯片进入待机模式?

    此致、
    凌志



  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的灵芝:

    是的、它会唤醒并更改为待机模式、因此 INH 将输出高电平。

    遗憾的是、无法在选择性唤醒模式下禁用帧检测、这是 ISO 11898-2的一项要求。 当节点接收到过多的错误帧时、局部联网需要将节点唤醒。

    3.是的、它将进入待机模式。

    当芯片在启用选择性唤醒的情况下进入睡眠模式时、您是否仍在发送 CAN FD 帧? 请注意、选择性唤醒仅支持传统 CAN 帧、因此任何 CAN FD 帧都将被识别为错误帧。 您可以将该位设置为1、以便错误计数器会忽略 CAN FD 帧。

    此致、

    Sean

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Sean、ć

    感谢您的专业回答。

    我知道选择性唤醒不支持 CAN FD。 感谢大家的关注!

    此致、

    凌志

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Sean、

    感谢您的回答。

    通过 分析设置 SWERR 的情况、我们发现:

    1. FRAME_OVF 帧溢出:当发生意外唤醒并且 SWERR 设置为1时、在清除中断标志之前、我们读取  寄存器51h 位3中的 FRAME_OVF 中断标志、值为0、并且读取  寄存器45h 中的帧错误计数器、最大值为1、未达到寄存器46h 中的阈值0x1F;因此可能不会发生帧溢出。
    2. SW_EN = 1  SWCFG = 0:在进入睡眠模式之前、成功配置与选择性唤醒相关的寄存器 、然后在最后一步中将 SWCFG 写入1、然后 将 TCAN1145配置为睡眠模式。 但是 、选择性唤醒仍然无效、在 发生意外唤醒并将 SWERR 设置  为1后、SWCFG 值读取为0。 这一步中是否有错误?  我们不知道寄存器值为什么更改了? 您能帮助我们吗? 谢谢。

    对于 CAN FD 帧、 在睡眠模式下、CAN 总线中没有 CANFD 帧、只有传统 CAN 帧(ID 11位)、这会触发上述问题。

    此致、
    John

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(John)好

    1.关于所配置的选择性唤醒、可以参考 以下两个来源。
    英语版本:选择性唤醒如何实现局部联网(修订版 B)
    中文版
    选择性唤醒如何实现局部联网(修订版 B)

    此致、

    凌志

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 John:

    设置 SWERR 后、它指示选择性唤醒配置存在问题、需要先解决该问题、器件才能在启用局部联网的情况下进入睡眠模式。 SWERR 集将禁用选择性唤醒、因此总线上的任何 CAN 帧都可以是 WUP 来唤醒器件。 在这种情况下、 应重新配置选择性唤醒寄存器、以确保所有寄存器值都处于适当的值。 该配置应该通过向 SWCFG 写入1来锁定当前配置。

    您是否能够在进入睡眠模式之前检查中断寄存器、以确保 SWERR 标志未被设置为指示当前配置有问题? 此外、意外唤醒后、软件是否会写入任何选择性唤醒配置寄存器?

    此致、

    Sean

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Sean、

    我们检查了以下项目:

    1. 在进入睡眠模式之前、添加一个 步骤来清除所有中断寄存器(将值0写入寄存器51h、52h、53h)、 然后 选择性唤醒是正常的;然后恢复以前的代码、选择性唤醒无效;因此可以得出结论:当发生某些问题并且 设置了 SWERR 标志时、我们需要在进入睡眠模式之前清除寄存器中的中断标志、这样可以确保下次选择性唤醒正常工作。  
    2. 有一个新问题、我们 使用相同的硬件和相同的软件(不清除 SWERR 中断严格执行的软件)进行了比较测试。 我们发现一些原型样本始终正常(选择性唤醒正常且从未设置 SWERR 标志)、但 一些原型样本始终异常(  每次设置选择性唤醒无效和 SWERR 标志)、我们不知道为什么、您能帮助我们还是给我们一些想法?
    3. 我们的软件在 进入睡眠模式之前仅写入选择性唤醒配置寄存器、并且每次配置的寄存器的地址和值都 是相同的、并且  与 唤醒的不同原因无关。
    4. 正如 我之前的回复、 在 进入 睡眠模式之前、SWCFG 在最后一步写入为1、在意外唤醒发生且 SWERR 设置为1后、SWCFG 值读取为0。 根据 今天的测试和结论、我们仍然有 这样一个问题:  SWCFG 和  SWERR 之间的时序和逻辑是什么?  谁影响谁?  

    谢谢 !

    此致、

    John

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 John:

    是、始终建议在进入睡眠模式之前清除中断。  

    如果在进入睡眠模式之前它已经为1、则 CANINT、FRAME_OVF 等中断标志将不会再次设置、一旦存在有效的唤醒源、它就不会自动返回到0但设置为1、则 WUF 接收器可能会丢失 WUF、如果中断未被清除、则它将在睡眠模式中被阻止而无法唤醒。

    在将 SWCFG = 1写入最后一个寄存器后、请确保在进入选择性唤醒模式(设置 SW_EN =1)之前再次读取该位、如果未正确配置选择性唤醒、SWCFG 将返回0。 如果 SW_EN = 1但 SWCFG = 0、SWERR 将设置为1。

    此致、

    Sean

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Sean、

    感谢您的帮助! 我们将添加清除 所有中断寄存器的步骤(将值0写入寄存器51h、52h、53h)以解决此问题。

    我们已再次进行检查、我们确保在 当前软件中(不清除 SWERR 中断注册表)、在我们写入 SWCFG = 1作为最后一次之后、 我们在进入选择性唤醒模式(设置 SW_EN =1)之前再次读取该位、每次读取 的 SWCFG 值为1时都正确。 但是、选择性唤醒无效、 发生了意外唤醒、我们读取的 SWCFG 变为值0。

    这是否意味着当 SWERR 中断标志不被清除时 、即使 SWCFG 写入1且读取为1、选择性唤醒 仍然无效、进入睡眠模式后、SWCFG 将自动设置为0并触发 SWERR 位?  

    此致、

    John

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、John、请查看我在电子邮件中的回复。

    此致、

    Sean