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.

[参考译文] CC3200:器件不进入/退出休眠模式

Guru**** 2539500 points
Other Parts Discussed in Thread: CC3200

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1055797/cc3200-device-does-not-enter-exit-hibernate

器件型号:CC3200
主题中讨论的其他器件: CC3235MODASF

您好!

我们现场有数千台设备配备了 cc3200。 在大多数基础设施中、它们运行完美、但在少数客户中、我们有一个低发生错误、这会在大约一天的时间内消耗电池。 我想了解错误的原因。

我们电池供电的器件通常使用慢时钟从休眠状态唤醒、连接到最后一个接入点(使用快速连接)、连接到 http 服务器、执行一些请求并返回休眠状态、持续时间为几秒到24小时。 当错误发生时、我们看到器件未按预期的时间进行连接、但电池电量消耗非常快。 当我们的电池控制杆观察程序电路重置 cc3200时、它会在之后完美地工作。  

错误的频率通常介于从不(在某些客户)和每隔几周(在某些"幸运"客户)之间。  

我将一个器件连接到计算机5周、以记录我们的 UART 输出、看看发生错误时会发生什么情况。 在这5周内发生了一次错误。 日志仅显示正常输出、就好像它正确进入休眠状态2201秒、但在接下来的6天内没有唤醒、直到我将其复位(器件由 USB 供电)

最后一个 UART 输出:

现在=349851932、RTCnow_wake=422002766
进入休眠状态、计划在2201秒内进行下一次唤醒
拜拜,拜拜

我怀疑器件未正确进入休眠状态。 但我目前对原因没有任何线索。  

查看我们的休眠代码:

    MAP_PRCMHibernateIntervalSet(next_wakeup_ullTicks);
    
    MAP_PRCMHibernateWakeupSourceEnable(PRCM_HIB_SLOW_CLK_CTR | PRCM_HIB_GPIO4);
    MAP_PRCMHibernateWakeUpGPIOSelect(PRCM_HIB_GPIO4, PRCM_HIB_HIGH_LEVEL);
    
    UART_PRINT("Bye");
    Utils_SpiFlashDeepPowerDown();
    UART_PRINT("bye\r\n\r\n\r\n");
    
    MAP_UtilsDelay(20000);
    
    MAP_PinTypeGPIO(PIN_55, PIN_MODE_0, false);
    MAP_GPIODirModeSet(GPIOA0_BASE, 0x2, GPIO_DIR_MODE_OUT);
    GPIO_IF_Set(1, GPIOA0_BASE, 0x2, 0);

    MAP_PinTypeGPIO(PIN_57, PIN_MODE_0, false);
    MAP_GPIODirModeSet(GPIOA0_BASE, 0x4, GPIO_DIR_MODE_OUT);
    GPIO_IF_Set(2, GPIOA0_BASE, 0x4, 0);

    MAP_UtilsDelay(8000);

    // this ensures pin TDO is Hi-Z when entering hibernate
    HWREG(0x4402FC14) |= 0x100;
    HWREG(0x4402FC14) &= ~0x2;

    //
    // Enter HIBernate mode
    //
    MAP_PRCMHibernateEnter();
    
    UART_PRINT("We should not be here");

服务包: 2.12.2.8.31.5.0.10.1.0.3.37

我接下来的计划:

-尝试使用 SDK 1.5.0和相应的 Service Pack

-尝试增加通信,以更快地重现错误

我的问题:  

——如果我在休眠代码中做一些很愚蠢的事情,有什么想法?

-是否有人建议如何解决此类问题?

您是否能够读取非常长的 NWP 日志?  

注意:我在另一个产品上遇到类似的问题(由于电池电量耗尽而导致在复位之前失去通信)、但我尚未使用 UART 复制它、因此现在将保持这种分离。

感恩节快乐

C é dric

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

    我不熟悉类似的问题、您的代码似乎正常。

    在  本例中、您是否有关于电流消耗的任何数据?

    您是否启用了看门狗计时器? (如果器件不能进入休眠状态、它可能会保存系统)。

    我不确定 NWP 日志、但我们可以尝试、尽管它看起来像是主机问题。

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

    在"中断"持续时间(~65h)和电池尺寸(可用时间~6000mAh)的情况下、我们可以 估算出 cc3200在100mA 左右的功耗。  

    是的、看门狗已设置且工作正常。 我现在通过在 MAP_PRCMHibernateEnter 之前添加延迟来测试它。

    在我的测试过程中、我意识 到由于上述模式的改变、UART_PRINT ("我们不应该在这里")将永远不会被显示。  

    什么通常会导致此消耗和看门狗失效?

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

    在进入休眠模式之前、是否关闭 NWP (ST_Stop (200))?

    在休眠序列期间、您可能会遇到某种异常。 这可以解释消息。 我不确定它能解释看门狗复位缺失的原因。

    我将尝试在内部检查是否有人熟悉类似问题和/或调试选项。  

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

    另外、您在哪里找到了以下寄存器(0x4402fc14)的定义? 它不在 TRM 中。  

    HWREG (0x4402FC14)|= 0x100;
    HWREG (0x4402FC14)&=~0x2;

    我假设它不会导致问题、但可能最好将其删除。

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

    发生错误时调用了 sl_stop (200)。

    为了完成、有时会调用 sl_stop、有时会不会调用、具体取决于之前发生的情况。 我只是通过始终调用它来修复它。

    该寄存器记录在旧文档中:

    http://software-dl.ti.com/ecs/CC3200SDK/1_3_0/exports/CC3200-SDK_Release_Note.pdf

    我可以看看如何使用 GPIO 库执行相同的操作。

    感谢您检查 类似问题和/或调试选项!

     

    另一个信息是、当从 sdk1.3和 sp 2.10切换到 SDK 1.5和 sp2.12时、错误似乎已启动。 我这边也有一些变化、主要是连接策略从 "auto"更改为"fast + auto"。

    我将在下周与我们的客户联系、安装几个变体、尝试找出问题所在。 我很乐意接受有关其他日志记录/调试的任何建议。

    -1个设备的固件有问题,sp 并配备 NWP 日志

    1台设备,带有旧固件和  sp 2.10

    1个具有新固件的器件,带有一些修补程序和 sp 2.14

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

    好的、谢谢。

    cc3200使用了这么长时间、我们不熟悉类似的问题。 我 真的希望您能够找出问题所在。  

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

    是的、希望我将在星期三安装的器件将有所帮助。

    关于看门狗的一个问题、我只是注意到它被设置为 ~0、我知道这是最低优先级。

    我的理解是否正确、 即中断优先级设置只会影响回调函数、即使它完全被挤占、看门狗也会执行复位?

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

    "~0"是什么意思? 您能否提供代码?