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:睡眠模式

Guru**** 2387380 points
Other Parts Discussed in Thread: TM4C1290NCPDT, EK-TM4C1294XL
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1063841/tm4c1290ncpdt-sleep-mode

器件型号:TM4C1290NCPDT
Thread 中讨论的其他器件: EK-TM4C1294XL

您好!

我正在使用 TM4C1290NCPDT 定制板和 IAR 编译器。  

Timer0配置为每100ms 生成一次 ISR。

当系统获得 NMI ISR 尝试将系统置于睡眠模式时。

使用以下配置序列启用睡眠模式、

SysCtlPeripheralClockGating (真);
SysCtlPeripheralSlepEnable (SYSCTL_Periph_TIMER0);
SysCtlPeripheralSlepEnable (SYSCTL_Periph_UART6);
SysCtlSleep ();

系统未唤醒、始终处于睡眠模式。处于睡眠模式时、Timer0 ISR 也不会发生。

如果电压增加到正常状态、系统仍处于睡眠模式。

请帮帮我。

谢谢。

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

    您好!

     请参考 位于 C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c1294xl\sleep_modes 的 TivaWare 示例工程。 此示例演示了如何使用 Timer0进入睡眠模式并从睡眠模式中唤醒、这与您尝试实现的目标非常相似。  

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

    您好!

    SysCtlPeripheralSlepEnable (SYSCTL_Periph_TIMER0);
    SysCtlPeripheralSlepEnable (SYSCTL_Periph_Timer1);
    SysCtlPeripheralSlepEnable (SYSCTL_Periph_UART6);
    SysCtlPeripheralClockGating (真);
    SysCtlLDOSleepSet (SYSCTL_LDO_1_15V);
    SysCtlSleep ();

    采用类似配置、但系统保持睡眠模式。 当系统进入睡眠模式时、似乎不会生成任何中断(定时器/UART)。

    睡眠模式不适用于调试器?(不适用于深度睡眠)

    是否无法使用相同的时钟频率?  MAP_SysCtlClockFreqSet 需要在睡眠和运行模式下进行不同的配置。

    请帮帮我。

    谢谢。

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

    您好!

     很抱歉、我目前不在办公室、将于2022年4月1日回来。  

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

    你(们)好

    在睡眠模式下、未发生中断、

    也尝试了 timer0和 UART。 是否需要配置用于启用/禁用的所有外设。

    例如、在应用中、如果使用 CAN、UART、Timer0、1、SPI、NMI、它是否需要在  睡眠模式下启用/禁用所有外设? 使用 API  SysCtlPeripheralSlepDisable (uint32_t ui32Peripheral)或 SysCtlPeripheralSlepEnable (uint32_t ui32Peripheral)

    MAP_SysCtlClockFreqSet ((SYSCTL_OSC_INT |
    SYSCTL_USE_OSC |
    SYSCTL_MAIN_OSC_DIS)、
    16000000);如果没有设置、它是否可以工作?

    谢谢。

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

    您好!

    [引用 userid="487825" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1063841/tm4c1290ncpdt-sleep-mode/3944616 #3944616"]例如,在应用程序中,如果使用了 CAN、UART、Timer0、1、SPI、NMI,它是否需要在  睡眠模式下启用/禁用所有外设?

    如果您要在睡眠模式下使用这些外设、则需要启用它们以进入睡眠模式。  

    我修改现有的 TivaWare SLEEP_MODES 示例、仅侧重于睡眠模式、而不是深度睡眠模式。 我在 LaunchPad 上运行时没有任何问题。 您需要确保在未连接调试器的情况下仅运行任何睡眠和深度睡眠模式。   

     另请注意数据表中提到的关于睡眠模式进入和退出的以下注释。  

    警告–如果 Cortex-M4F 调试访问端口(DAP)已启用、并且器件从中唤醒
    在低功耗睡眠或深度睡眠模式下、内核可以在所有外设时钟之前开始执行代码
    已恢复到运行模式配置。 DAP 通常由软件工具启用
    在调试或闪存编程时访问 JTAG 或 SWD 接口。 如果出现这种情况、
    当软件访问具有无效时钟的外设时、就会触发硬件故障。
    软件延迟环路可在用于唤醒的中断例程的开头使用
    系统发出 WFI 指令(等待中断)。 这会停止任何访问代码的执行
    可能导致故障的外设寄存器。 对于生产软件、可以将该环路作为移除
    DAP 很可能在正常执行期间未启用。
    由于 DAP 默认处于禁用状态(上电复位)、因此用户也可以对器件进行下电上电。 。
    DAP 只有在通过 JTAG 或 SWD 接口使能后才能使能。

    注意:如果在运行模式中启用了调试访问端口并尝试转换到深度睡眠模式
    模式下、器件被阻止进入深度睡眠模式

    我建议您执行以下操作。

    -在 LanchPad 上运行随附的示例并查看其是否正常工作。  

    -如果上述操作有效,请将示例与您自己的代码进行比较。  

    -在您的定制板上运行随附的示例并查看它是否起作用。 如果不起作用、则可能表示定制板和 LauchPad 之间存在一些硬件差异、从而阻止示例进入/退出睡眠模式。  

     -在 LanchPad 上运行您的自定义代码。 如果无法正常工作、请将您的代码与示例进行比较、因为我们知道该示例在 LaunchPad 上工作。  

     -确保在运行示例时断开调试器与目标的连接,并注意上述注意事项。  

    e2e.ti.com/.../sleep_5F00_mode_5F00_only.zip