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.

[参考译文] TM4C1290NCPDT:EK-TM4C1294XL 上的深度睡眠

Guru**** 2541120 points
Other Parts Discussed in Thread: TM4C1294NCPDT

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/924516/tm4c1290ncpdt-deep-sleep-on-the-ek-tm4c1294xl

器件型号:TM4C1290NCPDT
主题中讨论的其他器件:TM4C1294NCPDT

我一直在研究   EK-TM4C1294XL 的深度睡眠

我正在研究 EK、并意识到 DK 上已经存在一个单独的线程。 已遵循 DK 论坛帖子上的步骤,但我仍在 JP2上读出5.36mA,数据表中指定了该值作为测量 MCU 本身功耗的点。

并尝试将开发套件上的电流值降至数据表中所示的值。 我注意到、为了将其降至规定的值、需要对 SRAM 和闪存的 MEMTIME0寄存器进行适当配置。

 

如果不设置此寄存器,我仍然只能看到~5.36mA,而不是所述的2.16mA。 这是直接从 MCU 通过3V3跳线(JP2)进行测量。 我的设置如下:

  • 30kHz 内部时钟
  • 0.9V 内部 LDO
  • 启用 UART0
  • 启用 GPIOA
  • 启用自动时钟门控

 

在此模式下,我将根据 TM4C1294NCPDT 数据表第1884页提供的建议,将 MEMTIME0 WAIT 状态位字段设置为0x02u (至少需要1个等待状态)。 设置此值后、会遇到硬故障。

 

适当设置该寄存器并进一步降低电流的步骤是什么? 数据表中列出的电流值是否可在开发套件上实现?

 

我期待您的见解。

 

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

    尊敬的 Paul:

     在深度睡眠模式中、您是否还尝试禁用 MOSC 和 PIOSC?  

     我看到这篇文章也会对您有所帮助。 Amit 具有他说能够在 DK 电路板上实现1mA 电流的示例代码。  

    https://e2e.ti.com/support/microcontrollers/other/f/908/p/381027/1358902

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

    您好、Charles、

     

    感谢您共享 DK 链接。 我目前实际上一直在使用它,但它并未涵盖如何处理 SysClock,我认为这是导致当前主要问题的原因。 应用程序需要 SysClock 该低功耗代码将与结合使用。  

     

    SysClock 设置如下:

     

    G_ui32SysClock = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz |

                                                 SYSCTL_OSC_MAIN |

                                                 SYSCTL_USE_PLL |

                                                 SYSCTL_CFG_VCO_320)、16000000);

     

    和深度睡眠时钟源,如 Amit 的示例所示:

     

    SysCtlDeepSlepClockConfigSet( 63、

                                (SYSCTL_DSLP_OSC_INT30 |

                                   SYSCTL_DSLP_PIOSC_PD |

                                  SYSCTL_DSLP_MOSC_PD );

     

    与 Amit 的示例类似,我只启用了一个 GPIO 接口,以便可以唤醒 MCU。 所有其他外设以相同的方式禁用。

     

    根据以下结果、SYSCLK 机制似乎未按 DEepSlepClockConfig 的预期关闭:

     

    • 使 SysClock 保持原样、即3.76mA 的电流。
    • 使用 SysCtlMOSCConfigSet (SYSCTL_MOSC_PWR_DIS)在深度睡眠前显式禁用 MOSC、电流为2.48mA。
    • 移除 SysClock 设置并关闭 MOSC 电源后、电流为1.15mA、处于预期范围内。

     

    是否有方法可以分配 SysClock、但在深度睡眠之前关闭、以便产生的电流大约为最终值1.15?

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

    尊敬的 Paul:

     [引用 user="Paul Brown"]按原样保留 SysClock,即3.76mA 的电流。

     我了解了 Amit 和海报之间的交流、两个都使用 Amit 的示例测量1mA 电流。 我不知道为什么您无法达到相同的电流。 我在家办公、没有用于执行电流测量的设备。 但根据 Amit 和海报的测量结果、我认为~1mA 是可以实现的。  

    [引用 user="Paul Brown"]删除 SysClock 设置并关闭 MOSC 电源后,电流为1.15mA,处于预期范围内。

     在 Amit 的示例中、他没有使用 SysCtlClockFreqSet()来配置系统时钟、因为缺省情况下、PIOSC 将是时钟源、而不是 MOSC。 如果您需要使 MOSC 保持开启状态、那么我希望总电流更高。  

    [引用 user="Paul Brown"]是否有方法可以分配 SysClock,但在深度睡眠之前关闭系统时钟,使产生的电流大约为1.15?

     我想根据您自己的发现、通过明确禁用 MOSC、您可以获得的最低电流为2.48mA。 我不确定 PLL 是否仍然处于激活状态、即使您禁用 MOSC。 根据数据表、PLL 应在深度睡眠模式下关闭。 您为什么不显式禁用 PLL。  

     另一个理论是、在您明确禁用 MOSC 后、您仍然需要执行一些代码 、例如调用 SysCtlDeepSleep ()。 我想知道、这是否会间接唤醒 MOSC、因为处理器仍有要执行的代码。  

     我还想知道为什么您必须保留 SysCtlClockFreqSet。 将系统时钟频率配置为16MHz。 如果您需要16MHz、那么为什么不能像 Amit 的示例那样只使用 PIOSC 作为时钟源呢? PIOSC 为16MHz。  

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

    感谢 Charles 迄今为止提供的建议。

     

    16MHz 时钟与 PLL 一起使用、因为这是在最终应用和硬件中配置的时钟、此代码将与一起使用。 但是、该时钟 不必 在深度睡眠中保持运行、因此可以断电。  

     

    我从数据表和代码示例中了解到、必须在睡眠前配置时钟、以便在唤醒时正确设置 RSCLKCFG 寄存器。 是这样吗?

     

    此外、为了确保 PLL 掉电、一种有效的方法是切换到 PIOSC、确保在进入深度睡眠时 PLL 和 MOSC 被禁用吗?

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

    尊敬的 Paul:

     [引用 user="Paul Brown"> PLL 使用16MHz 时钟、因为这是在最终应用和硬件中配置的时钟、此代码将与一起使用。 但是、该时钟 不必 在深度睡眠模式下保持运行、因此可以断电[/quot]

     我在上次答复中试图说的是、默认情况下、PIOSC 是 SYSCLK 的时钟源。 因此、在不调用 SysCtlClockFreqSet()来配置 SYSCLK 的情况下、SYSCLK 实际上是由 PIOSC 提供的16MHz。 这就是 Amit 离开 SysCtlClockFreqSet 的原因。 如果您打算以16MHz 运行应用、则只需使用 PIOSC 作为默认值。 使 PLL 能够从 MOSC 获得16MHz 的频率、但正如您一直在实验中所做的那样、它不会为您提供尽可能低的电流。  

     我尝试运行 Amit 的示例并尝试像 你那样添加 SysCtlClockFreqSet(),但在任何一种情况下,当在 JP2上测量时,我都会得到一些奇怪的结果。