C2000团队、
我们的客户希望将 F28069置于睡眠模式并在 CAN 活动时唤醒。 唤醒需要哪些中断? WAKEINT 是触发的还是 ECAN0_INT0 (INT9.y)?
谢谢、
Darren
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.
C2000团队、
我们的客户希望将 F28069置于睡眠模式并在 CAN 活动时唤醒。 唤醒需要哪些中断? WAKEINT 是触发的还是 ECAN0_INT0 (INT9.y)?
谢谢、
Darren
那么、唤醒 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上的活动应该将其唤醒、前提是该活动符合数据表中为唤醒信号指定的最小脉冲宽度。
请指出文档中的矛盾之处(章节#、行#等)