我正在实地测试一个定制板与DA14580和一个外部MCU管理传感器。当连接(在我的情况下连接到Android平板电脑)时,外部MCU通过UART每秒向DA14580发送一次传感器数据。断开连接后,我将调用由外部MCU切换的GPIO引脚上等待唤醒的扩展睡眠模式。从功能上来说,这工作得很好,但是当我们应该处于睡眠模式时,我们并没有看到预期的低功耗。我想确保当平板电脑断开连接时,UART坐在那里处于接收模式,不会阻止长时间睡眠发生。
我看了UART驱动程序,我没有看到一个功能取消接收或关闭UART。如果您能给我一些建议,我将不胜感激。
谢谢你,马克斯
设备:
嗨Max44,
你能告诉我自从设备进入延长睡眠模式后你的耗电量是多少吗?另外,你能解释一下设备是否进入了长时间睡眠状态吗?如果DA14580进入休眠状态,出现意外功耗的最可能原因是您的定制板可能出现电源泄漏。我不明白你的意思“我想确保当平板电脑断开连接时,UART处于接收模式,不会阻止长时间睡眠。”请你解释一下你的问题好吗?请注意,由于设备进入了扩展睡眠状态,包括UART在内的所有外设块都关闭了电源。
谢谢,PM_Dialog
点,
谢谢你的回复。抱歉,我试图保持它简单,而不是让您负担与系统操作无关的细节。而且我确实意识到功耗可能来自定制板的其他地方。我只是想排除可能性。当DA14580和外部MCU应该处于低功耗状态时,我们将看到大约1.5 mA的电流。我们期待一个更低的电流,不幸的是,我没有连接器隔离模块功率分析自定义板。
当tablet断开连接时,在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 datasheet,除PD_AON、程序化PD_RRx和PD_SR外,所有电源域都关闭。请查看数据表以获得关于睡眠模式的更多信息。
谢谢,PM_Dialog