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.

[参考译文] TM4C123GH6PM:TM4C123GH6PM 中休眠的工作车间代码不工作。

Guru**** 2609895 points
Other Parts Discussed in Thread: EK-TM4C123GXL, TM4C123GH6PM

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/760873/tm4c123gh6pm-workshop-code-for-hibernation-in-tm4c123gh6pm-not-working

器件型号:TM4C123GH6PM
Thread 中讨论的其他器件:EK-TM4C123GXL

 

我阅读了电路板的数据表和原理图、但我感到很困惑、就像地狱一样

HIB、WAKE、VBAT 等引脚是否内部连接?

如果否,为什么板上不存在这些引脚?

如果是、那么为什么只有红色电路板(EK-TM4C123GXL)上才存在 WAKE 引脚 、为什么不存在 HIB 和 VBAT 等其他引脚?

我假设 Vbat 未在内部连接,如 Texas 的技术讲座中所述。 但它在电路板外部不存在?

 那么、我如何为休眠模块供电、以便能够运行代码。//跳线上的电流为60mA、但不会降至 nA (这意味着它不会进入休眠模式)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请参阅用户指南 www.ti.com/.../spmu296.pdf 中的 EK-TM4C123GXL Launchpad 电路板原理图
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Vinayak 您好!

    除了 Bob 建议的内容之外、我认为您还可以阅读 LaunchPad 用户手册中有关休眠模式的第2.2.2节。

    在该部分中有一个差异、即实际上不会引出 HIB 引脚、因此您只能使用 WAKE 引脚。

    查看原理图、您将看到 LaunchPad 不支持电池供电、因此 VBAT 也连接到主 MCU 电源线。

    另外一个注意事项是、由于 ICDI 电路、您将无法在 LaunchPad 上看到 uA 的电流。 您的功耗对于 ICDI 来说似乎太高了、因此我怀疑您没有进入休眠模式、但即使解决了休眠问题、您也不会看到您所期望的低电流。 有关此内容的更多详细信息、请参阅此帖子: e2e.ti.com/.../2528593
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经使用 DMM 测量了3.3V 引脚和 MCU_PWR 引脚之间的电流、并尝试使用其他 MCU 供电。 在运行模式下、IDD 介于40-60mA 之间、但不会下降到 nA、这表示未进入休眠状态。 。 我已正确阅读原理图。 PL、帮我处理这一问题、因为我必须使用休眠来获取数据和进行传输
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Vinayak 您好!

    我想我知道您提到的技术讲座、但我不熟悉其中使用的代码。 这是一个很老的车间、我(或 Bob)在团队中不在团队中。 如果您认为问题基于代码、请发布代码以供我们审核。

    此外、我还必须迭代您在 LaunchPad 上看不到低 nA、但我也同意当它以40-60mA 的电流运行时、它不能处于休眠模式。 只需了解当我们休眠工作时、它不会以 nA 为单位。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../hibernation_5F00_workshop.txte2e.ti.com/.../hibernation_5F00_workshop.txthere这是,先生 Ralph

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

    Vinayak 您好!

    我不确定您的代码为什么不会进入休眠模式、但我发布的代码经过测试、确保它确实进入休眠模式。

    int main (void)
    {
    volatile uint32_t ui32Loop;
    uint32_t ui32Status = 0;
    
    SysCtlClockSet (SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XT_XTAL_16MHz|SYSCL_MAIN);SysCtlPeripheralEnable
    
    (SYSCTL_USE_GPIO_PUT_GPIO_PUT_GPIO_PUT_GPIO_PUT_PIN_GPIO_PUT_GPIO_PUT_GPIO_PUT_GPIO_PUT_GPIO_PUT_GPIO_PUT_GPIO1_PIN_PIN_PIN_GPIO_PIN_GPIO_PIN_GPIO1_GPI
    
    
    GPIOPPTL PinWrite (GPIO_PORTF_BASE、GPIO_PIN_1_GPIO_PIN_2|GPIO_PIN_3、GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);
    
    SysPeripheralEnable (SYSCTL_PERIPH_HIBERNATE);
    
    if (HibernateIsActive ()
    {
    //
    //读取导致唤醒的状态。
    //
    ui32Status = HibernateIntStatus (0);
    HibernateIntClear (ui32Status);
    }
    
    HibernateEnableExpClk (SysCtlClockGet ());
    HibernateGPIORetentionEnable ();
    
    HibernateWakeSet (HIBERNATE_WAKE_PIN);
    
    HibernateRequest();
    
    SysCtlDelay (16000000);
    
    while (1)
    {
    //
    ////打开 LED。
    //
    GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_3、GPIO_PIN_3);
    
    //
    位延迟。
    //
    for (ui32Loop = 0;ui32Loop < 2000000;ui32Loop ++)
    {
    }
    
    //
    //关闭 LED。
    //
    GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_3、0x0);
    
    //
    位延迟。
    //
    for (ui32Loop = 0;ui32Loop < 2000000;ui32Loop ++)
    {
    }
    
    } 

    使用此代码、在休眠模式下、板上的 LED 将呈白色亮、当您按住唤醒按钮 SW2时、LED 将会闪烁。

    在此设置下、电流约为0.85mA。 但是、如果您对 LED 亮度的处理不好、则可以进一步降低亮度。 如果您移除 LED、则电流约为0.20mA。

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

    我想、我不需要启用中断和写入 inthandler 函数 来使用休眠 int 状态和休眠 int 清除。

    即使在尝试您的代码后、我也无法获得上述的当前读数。 在闪烁和白光亮起时、我的电流大约为58-60mA。  

    即使在我添加了休眠 GPIO 保持启用注释时、白光也会在开始时和 HIB 期间出现。

    然后、在唤醒后、粉色 LED 和白光会一个接一个地闪烁?

    WAKE 管脚之后,它将首先进入 POR,或者在?

    如果 POR 是代码的开始 、则永远不会进入 while  

    如果不是、则只有 LED 应以粉色闪烁、同时(1)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经尝试了所有操作、以使休眠模块在 TM4C123GH6PM 中工作。 我想知道它背后的原因、例如、我觉得内部开关不工作、如果是、原因可能是什么? 过去是否与其他人发生过这种情况?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Vinayak 您好!

    进行测量时、是否移除 VDD 跳线并测量这些接头引脚上的电流? 我再次测试了代码、代码的运行完全符合预期。

    是的、白光应该存在。 GPIO 保持很重要、具体取决于供电方式、但在这种情况下、技术上不需要、但最好不要忽略、因为 LaunchPad 不像典型应用那样受电。

    关于 POR 与执行 while、它的行为类似于 POR:

    "需要一个外部唤醒事件或 RTC 事件
    微控制器返回运行模式。 Cortex-M4F 处理器和外部外设
    休眠模块看到正常的"上电"序列、处理器开始运行代码。
    软件可以通过检查来确定微控制器是否已从休眠模式重新启动
    休眠模块寄存器"

    我不知道内部开关是什么意思、但这不是其他用户在电路板上的正确引脚上进行测量时遇到的问题。