2个帖子/ 0新
最后一篇
溧阳
离线
最后一次露面:9个月2个星期前
专家
加入:2014年9月24日11:51
什么情况下,软件定时器被全部杀死

我的主板上面的工作流程:。DA14580作为从机与另一个型号的单片机进行串口通讯,DA14580由外部上升沿电平触发唤醒后接收串口数据接收完数据后进入休眠外部主机每隔1秒对DA14580进行一次唤醒并以9600波特率发送8个字节的数据。之后DA14580进入睡眠延伸模式。

我用多个样机进行测试的时候,发现串口通讯5分钟左右后,DA14580的功耗不再动态的变化而是维持在400UA左右。跟踪发现用于定时使DA14580进入睡眠延伸模式的软件定时器被杀死了(失效了),导致了DA14580没进入睡眠延伸模式,此时DA14580功能还是正常的。进一步跟踪发现其他所有软件定时器也都失效了。

一开始我怀疑是低频RC(32KHZ)不稳定,于是我在主板上添加了32K晶振时钟,结果并没有改变。然后我又进行了进一步实验,发现只串口有收发数据的时候,才会出现5分钟左右软件定时器都被杀死的情况。如果串口不收发数据则软件定时器工作正常。

近一步跟踪发现,如果不让蓝牙唤醒和休眠(每1秒内蓝牙唤醒大约唤醒100毫秒然后进入休眠)而是一直唤醒就不会出问题。

请问上述问题我该如何追踪?

设备:
CYibin
离线
最后一次露面:10个月3天前
职员
加入:2017年12月14日02:48
你好,

你好,

你首先发现的是:设备工作一段时间后电流变大,这个问题;

然后调试发现设备工作一段时间之后,定时器失效,这个问题;

我们首先应该确认:设备电流变大,肯定是因为定时器失效导致的;才能进行下一步分析。

故,我们可以先设计一个测试,使设备不是通过定时器进入低功耗的,以此验证,确定该问题的现象是:在使能休眠功能,串口通讯功能的情况下,定时器工作一段时间后会失效。