主题中讨论的其他器件: 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