我的主板上面的工作流程:DA14580作为从机与另一个型号的单片机进行串口通讯,DA14580由外部上升沿电平触发唤醒后接收串口数据。接收完数据后进入休眠。外部主机每隔1s对DA14580进行一次唤醒并以9600波特率发送8个字节的数据。之后DA14580进入extend sleep 模式。
我用多个样机进行测试的时候,发现串口通讯5分钟左右后,DA14580的功耗不再动态的变化而是维持在400ua左右。 跟踪发现用于定时使DA14580进入extend sleep 模式的软件定时器被杀死了(失效了),导致了DA14580没进入extend sleep 模式,此时DA14580功能还是正常的。进一步跟踪发现其他所有软件定时器也都失效了。
一开始我怀疑是低频RC(32Khz)不稳定,于是我在主板上添加了32K晶振时钟,结果并没有改变。然后我又进行了进一步实验,发现只串口有收发数据的时候,才会出现5分钟左右软件定时器都被kill的情况。如果串口不收发数据则软件定时器工作正常。
近一步跟踪发现,如果不让蓝牙唤醒和休眠(每1s内蓝牙唤醒大约唤醒100ms然后进入休眠)而是一直唤醒就不会出问题。
请问上述问题我该如何追踪?
Device:
你好,
你首先发现的是:设备工作一段时间后电流变大,这个问题;
然后调试发现设备工作一段时间之后,定时器失效,这个问题;
我们首先应该确认:设备电流变大,肯定是因为定时器失效导致的;才能进行下一步分析。
故,我们可以先设计一个测试,使设备不是通过定时器进入低功耗的,以此验证、确定该问题的现象是:在使能休眠功能,串口通讯功能的情况下,定时器工作一段时间后会失效。