我正在现场测试一个带有DA14580和外部MCU管理传感器的定制板。当连接时(在我的情况下是连接到Android平板电脑),外部MCU每秒通过UART向DA14580发送一次传感器数据。断开连接后,我正在调用扩展睡眠模式,等待由外部MCU切换的GPIO引脚上的唤醒。从功能上来说,这工作得很好,但当我们应该处于睡眠模式时,我们没有看到预期的低功耗。我想确保当平板电脑断开连接时,UART处于接收模式不会阻止长时间睡眠的发生。
我查看了UART驱动程序,没有看到取消接收或关闭UART的函数。任何关于如何正确处理此事的建议都将不胜感激。
谢谢你,马克斯
设备:
嗨Max44,
你能告诉我自从设备进入延长睡眠模式后你的耗电量是多少吗?另外,你能否澄清一下设备是否会进入延长睡眠状态?如果DA14580进入睡眠状态,您获得意外功耗的最可能原因是您的自定义板可能漏电。我不明白你的意思:“我想确保当平板电脑断开连接时,UART处于接收模式不会阻止长时间睡眠的发生。”你能解释一下你的问题吗?请注意,由于设备进入延长睡眠状态,包括UART在内的所有外围模块都已关闭。
谢谢,PM_Dialog
点,
谢谢你的回复。对不起,我试图保持它的简单性,而不是让您对系统操作的无关细节感到负担。而且我确实意识到功耗很可能来自自定义板的其他地方。我只是想排除一切可能性。当DA14580和外部MCU应该处于低功耗状态时,我们看到的是1.5 mA。我们期待一个更低的电流绘制,不幸的是,我没有连接器来隔离自定义板上的电源分析模块。
当平板电脑断开连接时,在user_app_disconnect中调用arch_set_extended_sleep()和app_easy_wakeup_set。然而,此时,uart2_read(uint8_t *bufptr, uint32_t size, void (*callback) (uint8_t))正在等待来自外部微控制器的数据包。
从你上面所说的,听起来延长睡眠时间会关闭UART。对吗?不管uart2_read状态如何,都会发生这种情况吗?
谢谢你,马克斯
嗨Max44,
请尝试检查您的定制PCB,并检查增加的功耗是否来自您的电路板。最可能的原因是为什么你有渗漏到你的板。正如我从你的帖子中看到的,设备进入了延长睡眠状态。如果我能够正确理解,由于设备断开连接,您将其置于延长睡眠状态,然后您试图通过UART发送数据来唤醒它?我理解对了吗?
谢谢,PM_Dialog
不,我是用外部MCU的GPIO开关唤醒DA14580,这就像一个按钮。然后将uart2初始化为在唤醒期间调用的外围init()例程的一部分。就像我说的,从功能上来说,这运行得很好。
从我们的讨论中,我将假设设置延长睡眠会关闭UART,并如您所建议的那样,在黑板上的其他地方进行检查。
谢谢你,马克斯
嗨Max44,
由于您的设备进入扩展睡眠模式,所有外设模块都关闭了。对于DA14580数据表,除PD_AON、程控PD_RRx和PD_SR外,所有电源域都是关闭的。有关睡眠模式的更多信息,请查看数据表。
谢谢,PM_Dialog