stm32f103 stop模式定时唤醒,休眠一段时间一段时间后死机,无法复位单片机

2019-07-14 14:35发布

求助,做了一个低功耗的项目,使用STM32f103C8T6,初始化做了这些工作:         RCC_Configuration();//内部RC  没有用PLL,8M直接做系统时钟
        WATCHDOG_init(5000);//看门狗 5s
        TIMER_Configuration();//定时器1ms
        USART_Configuration();//串口1 2 波特率9600
         I2C_Configuration();//软件模拟I2C(硬件的出了问题,不敢用了)
        RTC_Configuration();//外部RTC(内部的有问题,不敢用了)
        NVIC_Configuration();//中断配置
        GPIO_Configuration();//GPIO初始化
        程序在主循环里喂狗,在没有外部条件触发的情况下延时进入stop模式。
        在进入stop模式前,把必要的输入口配置成外部中断,必要的输出口配置成相应输出,其他所有IO全部配置成模拟输入。
        外部RTC芯片每2s输出一个上升沿,触发中断,唤醒单片机,单片机唤醒后对单片机进行一次初始化,和上边的初始化一模一样,然后进行一次喂狗,并做一些任务(所有工作耗时大概15ms),然后再次进入休眠。这里我称它为心跳休眠。
        如果单片机被外部条件触发,会退出心跳休眠,进入正常模式,当外部条件消失,会延时再次进入心跳休眠。


那么问题来了:
        单片机在进入心跳休眠一段时间之后,会完全死掉,外部复位都无法复位单片机,只能重新上电才能正常工作。
     
问题分析:


        这个问题复现的概率很小,1000片板子,有10片板子出现了这样的问题。出现问题的板子重新上电后大部分没有再出现过死机的情况。
        有一片我在反复上电的过程中,多次出现死机的情况,但过了一会,我再去测,直到现在,都没有出现过死机的情况。

        我有一个假设,假设如下:
        单片机上电正常工作,然后进入休眠,休眠时所有时钟停止(除了LSI,因为要给看门狗提供时钟),但是如果某一次唤醒后,HSI并没有起振,那么程序不会往下执行,喂狗失败导致看门狗复位,复位后,所有寄存器变为初始值,HSI仍然在一个停振的状态,程序停在入口处不会继续往下执行,即使外部复位,程序依然停在入口处。这就可以解释为什么外部复位不起作用了。

        功耗描述:
        单片机正常功耗9mA左右,休眠功耗120uA左右(整板功耗,单片机休眠功耗13uA左右),单片机死掉后,整板功耗稳定在400uA左右(单片机此时功耗在300uA左右),当我外部复位的时候,功耗会跳一会(时间在几秒-二三十秒不等),最终会又稳定400uA左右,一般很快就会稳定到400uA左右。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
该带1986
1楼-- · 2019-07-15 16:45
还有一个问题:        板子在上电前,有一个排线要先插上,排线能给VCC供一个电压,但没有电流驱动能力,我量了下,3.3V LDO输出是1.89V。
        用示波器抓电源波形,发现是一个20ms周期震荡的波形,电压从1.86缓缓上升到1.94,然后被拉低到1.86,依次循环。
        这种情况是否是内核在将要工作的时候,电压被拉低,造成掉电复位,然后电压回升,上电复位,将要工作的时候,电压被拉低,依次循环。
        这种情况会不会导致单片机出现异常?
        还有上电时,电源波动,会不会造成异常,如这个帖子里描述的:
        http://www.51hei.com/bbs/dpj-40958-1.html
TOPCB
2楼-- · 2019-07-15 17:56
没有碰到类似的情况,楼主用的是内部看门狗还是外部的?
可以考虑晶振失败的情况,不要在那死等,当外部启动失败,可以试着切换到内部,保证本次能够正常工作。2s的唤醒频率是不是有电太频繁了?
该带1986
3楼-- · 2019-07-15 23:52
 精彩回答 2  元偷偷看……
该带1986
4楼-- · 2019-07-16 04:17
还有一个问题:
        板子用超声波洗过,洗的方式是板子串在粗铜丝上,吊在超声波清洗机里,板子下边缘接触到了清洗机的底部,洗板水大概有5mm-10mm深,只有板子下边缘的两个接插件没入洗板水中,单片机没有没入洗板水,晶振也没有没入洗板水,洗了大概3分钟,不知道跟这个有没有关系。
csw_ying
5楼-- · 2019-07-16 09:38
楼主,粗看了你的大部分测试,我认为这个是晶振质量不过关造成,不知你的晶振来源,但是这个现象,就是和晶振有很大的关系,我们以前的产品有许多奇怪的问题,后来都是更换晶振最终解决问题。

一周热门 更多>