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**** 2473270 points


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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1553340/tcan1145-q1-inquiry-regarding-tcan1145-selective-wakeup-issue

器件型号:TCAN1145-Q1


工具/软件:

我们目前在控制器开发中使用 TCAN1145 器件、特别是使用选择性唤醒功能。 但是、我们遇到了这样的问题:即使发送了唤醒 CAN 消息、器件偶尔也无法唤醒。

在检查故障寄存器时、我们观察到以下情况:

  • INT_1 :设置 FRAM_OVF、CANSLNT 和 CANTO 位
  • INT_3 :设置 SWERR 位

关于这种情况、我们有两个问题:

问题 1:  这些故障情况 (FRAM_OVF、CANSLNT、CANTO、SWERR) 同时发生并阻止唤醒的可能原因是什么?

问题 2:  在这种故障状态下、应采取哪些步骤来恢复器件并使其恢复正常运行?
例如:

  • 将 INT_1、INT_2、INT_3 和 CAN_BUS 寄存器清零
  • 将 SW_CONFIG_4 寄存器中的 SWCFG 位设置为 1

我们感谢您提供有关正确的恢复程序和我们应考虑的任何预防措施的指导。

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

    嗨、Jaehyeon、

    在此处唤醒失败是由于设置了帧溢出位。 由于接收到的错误帧太多、超过 0x46 寄存器中的错误计数器阈值、因此设置该位。 帧溢出也将设置 SWERR 位、这将禁用选择性唤醒。 CANSLNT 和 CANTO 会被置位、这是因为总线在特定时间段内处于空闲状态、请注意、一旦设置了这些中断、它们不会自动清除、因此您需要手动清除这些位。

    在这种故障情况下、您可以清除所有中断寄存器、然后将 SW_EN 设置为 1。 除非您更改任何选择性唤醒配置寄存器、否则 SWCFG 位仍应保持为 1、此处似乎并非如此。 我还建议在初始化期间、或者每次您希望在启用选择性唤醒的情况下进入睡眠模式时、请确保在将 SW_EN 设置为 1 之前清除这些中断寄存器。

    如果这不能解决您的问题、请告诉我。

    此致、

    Sean

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    清除 INT 寄存器时、我应该写入 0 还是 0xFF? 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Jaehyeon、

    请写入 0xFF、当写入 1 时该位会被清除。

    此致、

    Eric Hackett  

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

    最后一个问题。 上电时、INT_2 寄存器中的 PWRON 位设置为 1、对吧? 该位是否会导致全局错误? 在某些情况下、INT_GLO 的值为 0xA0、但当检查 INT_2 时、值为 0x40。

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

    嗨、Jaehyeon、

    是、任何中断都会设置全局中断。 0xA0 表示设置了 GLOBALERR 和 INT_2、INT_2 寄存器中设置的 PWRON 为 0x40。

    此致、

    Sean