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.

[参考译文] CC2538:如何配置 CC2538进入睡眠模式2或睡眠模式3

Guru**** 2533840 points
Other Parts Discussed in Thread: CC2538

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/700137/cc2538-how-to-config-to-cc2538-enter-sleep-mode-2-or-sleep-mode-3

器件型号:CC2538

大家好、

我正在使用 CC2538、我遇到了有关低功耗模式的问题

1.我尝试使用  cc2538_믹 뒡 固件_1_0_1_0中的源代码 sleepmode.c 运行 CC2538进入睡眠模式2

2.为了测量电流、我移除了跳转 P403、P404、P405 并 测量  SmartRF06 EB 上的功耗

结果(~6mA)高于数据表(~1.6uA)

此外,如果我调用函数  SysCtrlDeepSlep(),则 cc2538进入睡眠模式,但  测量电流大约为0.5mA

我想、我尚未使 CC2538进入睡眠模式成功。

有人可以帮助我解决这个问题吗?

很抱歉我的英语不好。

谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否拍摄一张图片、向我展示如何测量 SmartRF06上的电流消耗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请查看以下帖子:

    e2e.ti.com/.../369843

    BR

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

    尊敬的 YiKai Chen:

    这是我使用的照片和源代码。

    {
    uint32_t ui32Val;
    
    //
    //将时钟设置为直接从外部晶振/振荡器运行。
    //(无外部32k osc、无内部 osc)
    //
    SysCtrlClockSet (false、false、SYS_CTRL_SYSDIV_32MHz);
    
    //
    //将 IO 时钟设置为与系统时钟相同
    //
    SysCtrlIOClockSet (SYS_CTRL_SYSDIV_32MHz);
    
    //
    //设置用于显示消息的串行控制台。 这是
    //仅用于此示例程序,SSI 操作不需要。
    //
    InitConsole();
    
    //
    //在控制台上显示设置。
    //
    UARTprintf ("Sleep 模式定时器\n");
    
    //
    //在深度睡眠时禁用 UART0
    //
    SysCtrlPeripheralDeepSlepDisable (SYS_CTRL_Periph_UART0);
    
    //
    //在进入深度睡眠时让系统进入功率模式2
    //
    SysCtrlPowerModeSet (SYS_CTRL_PM_2);
    
    //
    //启用睡眠定时器唤醒
    //
    GPIOIntWakeupEnable (GPIO_IWE_SM_TIMER);
    
    //
    //启用睡眠模式中断
    //
    IntEnable (INT_SMTIM);
    
    //
    //将计时器设置为高于当前值10000
    //
    ui32Val = SlepModeTimerCountGet ();
    SlepModeTimerCompareSet (ui32Val + 10000);
    
    //
    //在控制台上显示计时器值。
    //
    UARTprintf ("定时器 val =%d\n"、ui32Val);
    
    //
    //等待 UART 被清空
    //
    while (UARTBusy (UART0_BASE))
    {
    }
    //
    //进入睡眠状态
    //
    SysCtrlDeepSlep();
    
    //
    //在控制台上显示计时器值。
    //
    ui32Val = SlepModeTimerCountGet ();
    UARTprintf ("定时器 val =%d (唤醒后)\n"、ui32Val);
    
    //
    //完成-输入无限循环。
    //
    while (1)
    {
    }
    } 

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

    我在帖子中完成了、但没有运行。 你可以在我对陈义凯的答覆中看到

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我看到您没有删除 P408。 如果将其移除并再次测量、它是否起作用?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、我删除了 P408、结果不变
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否更改了原始示例中的任何内容?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我运行源代码示例、不会更改原始代码。
    我在 cc2538_믹 뒡 固件_1_0_1_0中运行源代码 sleepmode.c
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果你看看芯片在给定的时间进入睡眠状态的代码、那么打印定时器值、然后进入无限 while 循环。  

    换言之,设备通常仅在 SysCtrlDeepSlep()处于活动状态的时间(10000个周期)内处于深度睡眠状态。 您可以尝试更长的时间和/或在使用 SysCtrlDeepsle()的代码中添加循环,在退出睡眠状态时点亮 LED,关闭 LED 并再次调用 SysCtrlDeepsle()。 然后、在进行电流测量时、更容易看到您处于所需状态。