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.

[参考译文] TMS320F28069:CAN 中断唤醒

Guru**** 2540720 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/596268/tms320f28069-wake-on-can-interrupt

器件型号:TMS320F28069

C2000团队、

我们的客户希望将 F28069置于睡眠模式并在 CAN 活动时唤醒。  唤醒需要哪些中断?  WAKEINT 是触发的还是 ECAN0_INT0 (INT9.y)?

谢谢、

Darren

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

    CAN 活动时的唤醒对 eCAN 模块来说是完全本地的、所以它是将被触发的 eCAN 中断。 WAKEINT 与器件级断电模式有关。 您的查询与仅适用于 eCAN 外设的断电模式有关。

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

    我是有问题的客户。

    那么、唤醒 CAN 与任何其他类型的 CAN 中断没有什么不同?

    我想、然后我必须检查 CAN 中断处理程序以了解中断的原因、并采取适当的操作。 在这种情况下、是否将微处理器从待机模式唤醒? (更改 LPMCR0.bit.LPM = 0)

    在 CAN 中断上从该唤醒状态返回后、程序计数器从哪里开始? 是从呼叫后开始
    _asm (" idle");?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    那么、唤醒 CAN 与任何其他类型的 CAN 中断没有什么不同?

    答->正确。

     

    我想、然后我必须检查 CAN 中断处理程序以了解中断的原因、并采取适当的操作。

    答->正确。

     

    在这种情况下、是否将微处理器从待机模式唤醒? (更改 LPMCR0.bit.LPM = 0)

    答案->否 在待机模式下、不能使用 CAN 的唤醒功能。 这是因为所有外设时钟(包括 CAN)在待机模式下自动关闭。 您可以在空闲模式下执行此操作、前提是代码在空闲模式下不会关闭 CAN 模块的时钟。

     

     在 CAN 中断上从该唤醒状态返回后、程序计数器从哪里开始? 是从呼叫后开始

     _asm (" idle");?

    answer-->如前一篇文章中所述、有两个不同的低功耗模式域。 空闲、待机和 HALT 是系统级低功耗模式、并影响整个芯片。 您所指的断电模式(由 PDR 位启动)完全是 CAN 模块的本地模式。 在 CAN 模块断电后、CPU 的代码执行会继续正常进行。 而在空闲、待机和停止模式下、在执行空闲指令后、CPU 会"在其轨道中停止"并保持此"冻结"状态、直到它被其中一种唤醒方法唤醒。

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

    "不 您不能在待机模式下使用 CAN 的唤醒功能。"

    文档似乎与此有所矛盾(pg1108 SPRUGH18G)。 此外、我使用 ESTOP0来停止微控制器(因为工具链似乎无法识别 HALT)、如果存在 CAN 流量、微控制器会再次启动。

    我要做的是使电机控制处于可能的最低功耗模式、但当开/关按钮(CANbus 上的另一个节点)按下时仍能唤醒。

    因此、我怀疑如果使用 HALT (或 ESTOP0)、所有时钟将停止(也许 xtal osc 仍在运行)、这应该是我的最低功耗模式、我 根本不需要使用 LPMCR0.bit.LPM = 0。

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

    Tom、

               正如我在上一个帖子中解释的、有一个低功耗模式完全是 eCAN 模块的局部模式。 这通过设置 PDR=1激活。 (芯片的其余部分继续正常工作)。 CAN 模块可在看到 CAN 流量时自动唤醒。 这样可以节省大约2.5mA 的电流、如 SPRS698F 的表5-2所示。 不多。

     

    如果您希望实现更低的功耗并能够在 CAN 总线活动时唤醒、则可以在器件上使用空闲模式。 这会冻结 CPU。 您可以关闭除 CAN 外的所有外设的时钟。 接收到一个帧后、CAN 模块向 CPU 发出一个中断、并在这个过程中将其唤醒。

     

    STANDBY 或 HALT 模式关闭到所有外设的时钟。 如果您希望实现尽可能低的功耗并且仍然能够在 CAN 总线活动时唤醒、则可以使用 HALT 模式。 使用 GPIOLPMSEL 寄存器并配置 GPIO30以实现唤醒。 (您可能必须为 GPIO 操作配置 GPIO30。 您可以在唤醒后切换到 CAN 操作)。 器件进入 HALT 模式后、GPIO30上的活动应该将其唤醒、前提是该活动符合数据表中为唤醒信号指定的最小脉冲宽度。

     

    请指出文档中的矛盾之处(章节#、行#等)