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.

[参考译文] TMS570LC4357:TMS570LC4357 无法从低功耗模式唤醒。

Guru**** 2692745 points

Other Parts Discussed in Thread: TMS570LC4357, TMS570LS3137, HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1597841/tms570lc4357-tms570lc4357-unable-to-wake-up-from-low-power-mode

器件型号: TMS570LC4357
TMS570LS3137HALCOGEN》中讨论的其他器件

您好、

我正在尝试让 TMS570LC4357 进入低功耗模式、所有时钟都被禁用、然后通过 GIO、CAN 或 SCI 唤醒(尽管我尚未尝试后者)。

这一过程的文档看起来是倾斜的极端,不幸的是,十几个左右的主题要求帮助有关低功耗模式似乎已经结束了,与一般的想法是:这种芯片理论上确实支持它,但有泄漏问题。 可提供不同芯片的示例(与 TMS570LC4357 不同、一个芯片具有有关此芯片的正式文档“ TMS570LS3137 的功耗降低“)。 不幸的是,即使一些消息表明试图使其与 TMS570LC4357 兼容,也没有决定性的“我让它工作“答案。

在添加越来越多的功能之前、我尝试将此部分代码保持在最低水平。 因此、我当前不关心关闭闪存模块、仅关注时钟。 我不知道是否有影响。 我用于关闭系统(代码如下所示)的函数在 RAM 中。

我的代码非常有效:
-*(SYS_BASE_ADDR + SYS_CLKTEST_OFFSET)= 0x30A0000;
-打开 LED0。
-*(SYS_BASE_ADDR + SYSCSDISSET_OFFSET)= 0x000000FF;
-打开 LED1。
- asm volatile(“ WFI “);
-开启 LED2。
-永远循环。

LED0 和 LED1 亮起。 LED2 没有亮起。 此时我无法有效地进行调试(此时 JTAG 不工作)。
根据文档、这不应关闭时钟、因为我不会接触时钟域(仅是源)。 但事实确实如此。 如果我不使用 ASM volatile(“ WFI “)、而是继续打开和关闭 LED(而不是通过循环,只是对一系列易失性 GPIO 寄存器进行的修改)、它将在进入睡眠状态之前经历其中一些更改。

我已设置 CAN 来执行唤醒中断。 我可以在时钟未睡眠时验证中断是否有效。 我还可以验证、如果时钟未处于睡眠状态、CAN 器件能够退出其本地断电模式(当时钟处于睡眠状态时,我无法对此进行任何说明)。

我还设置 GPIO、以便执行常规中断。 如果在时钟处于睡眠状态之前完成、则会触发而不出现问题。 时钟处于睡眠状态时无反应。

我已经验证 VIM 模块的唤醒屏蔽寄存器全部为 0xFFFFFFFF(暂时并不精确,它甚至无法处理允许的所有信号)。

我表示时钟确实处于睡眠状态的主要指示器是电源使用情况、该情况会显著下降。

使用 HALCoGen 尝试不同的“Wakup [Power] src“和“Power sic src“设置似乎没有任何效果。 无论如何、如果重新启用所有时钟、我预计功耗会发生变化。

我是否遗漏了一些明显的信息?

对于 TMS570LC4357 是否支持通过 CAN/SCI/GIO 唤醒来禁用所有时钟、我能否给出决定性的答案?

谢谢。