6428|18

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

STR912长时间睡眠无法唤醒? [复制链接]

                                 STR912长时间睡眠无法唤醒?有谁碰到过这个问题,怎么解决的?
此帖出自stm32/stm8论坛

最新回复

                                 谢谢vigia 修改后,现在这个问题没有再重现了.  详情 回复 发表于 2009-12-14 10:18
点赞 关注
 

回复
举报

74

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
                                 STR9的sleep模式有个limitation,在errata sheet中有详细说明和workaround,看看是不是和你的问题有关?
此帖出自stm32/stm8论坛
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
                                 没碰到过,很想知道怎么解决,2楼的方法可行不
此帖出自stm32/stm8论坛
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

4
 
看datasheet的说法:
After the CPU enters sleep mode, it can be woken up by:
1. External interrupt
2. RTC/USB interrupt
3. External reset
When an oscillator chip is used as the clock source for the STR91xFA, the CPU wakes up
from sleep mode following any of the above three input events. If a crystal is used as the
clock source, the crystal is disabled in sleep mode to save power consumption. When a
wakeup event occurs, the crystal does not recover fast enough and the CPU hangs.
Workarounds
Workaround solutions include:
1. Use the 32 kHz RTC clock as the clock source for sleep mode:
a) Select the RTC clock as the CPU clock source prior entering sleep mode.
b) The CPU wakes up following any of the three wakeup events and waits for the
crystal to start oscillation. A crystal startup time is about 1.5 ms typical.
c) After the crystal wakes up, the CPU waits for a tWAIT time before the first code is
fetched from Flash memory. The software can then change the CPU clock source
back to the OSC or PLL clock. The duration of tWAIT depends on the crystal
frequency. tWAIT equals 50 ?s at 25 MHz and 312 ?s at 4 MHz.
2. Instead of a crystal, use an oscillator as STR91xFA clock source.
This limitation will not be fixed in future silicon revisions
此帖出自stm32/stm8论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

5
 
1.我采用一个25Mhz的oscillator 代替crystal,发现系统还是经常发生不能唤醒

2.设置内部clkfMSTR=fRTC=32.768 kHz, fRCLK=32.768 kHz
fFMICLK=fHCLK=fPCLK=32.768 kHz,
这种办法,仍然不能100%唤醒,
我设置方法: 每次进入待机前设置clk函数 SysClkRTCConfig(),中断后回调 SysClkConfig()函数,还有什么我没有考虑全的?

void SysClkConfig(void)
{

    SCU_MCLKSourceConfig(SCU_MCLK_OSC);
                                                     // Set the PLL's multipliers and dividers         
    SCU_PLLFactorsConfig(BSP_PLL_N, BSP_PLL_M, BSP_PLL_P);
    SCU_PLLCmd(ENABLE);                              // Enable the PLL                                 
    SCU_RCLKDivisorConfig(SCU_RCLK_Div1);            // Set RCLK, the CPU clock's main divider         
    SCU_PCLKDivisorConfig(SCU_PCLK_Div1);            // Set APBDIV, the PCLK divider                  
    SCU_FMICLKDivisorConfig(SCU_FMICLK_Div2);

    SCU_MCLKSourceConfig(SCU_MCLK_PLL);              // Select the PLL output as CPU clock            

}

void SysClkRTCConfig(void)
{
    //SCU_MCLKSourceConfig(SCU_MCLK_RTC);
                                                     // Set the PLL's multipliers and dividers         
   // SCU_PLLFactorsConfig(BSP_PLL_N, BSP_PLL_M, BSP_PLL_P);
    SCU_PLLCmd(DISABLE);                              // Enable the PLL            
    SCU_MCLKSourceConfig(SCU_MCLK_RTC);
       
    SCU_RCLKDivisorConfig(SCU_RCLK_Div1);            // Set RCLK, the CPU clock's main divider ,RClk=Fmstr  
    SCU_PCLKDivisorConfig(SCU_PCLK_Div1);            // Set APBDIV, the PCLK divider                  
    SCU_FMICLKDivisorConfig(SCU_FMICLK_Div1);
       
    SCU_MCLKSourceConfig(SCU_MCLK_RTC);
    //SCU_MCLKSourceConfig(SCU_MCLK_PLL);              // Select the PLL output as CPU clock     

}
此帖出自stm32/stm8论坛
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(中级)

6
 
版主能不能帮忙分析一下,现在产品正在批量,测试出这些问题.比较急!!!
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

7
 
                                 看来楼主真的是比较急
此帖出自stm32/stm8论坛
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

8
 
看看erratasheet的2.10.1和2.10.2,以前有客户有类似的问题,都是在进入sleep模式时出的问题。

具体说说你怎么进的sleep模式,和怎么唤醒的?
此帖出自stm32/stm8论坛
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

9
 
每次准备sleep,调用以下函数
void LPMode_Sleep_ExternalWakeUP_Interrupt_LVD_OFF_PWD_OFF(void)
{
  /*External wake up interrupt configuration on EXINT2 line 16 */
  //ExternalWakeUP_Interrupt_Config();
  
  /*Flash Config */
  FMI_Config(FMI_READ_WAIT_STATE_1, FMI_WRITE_WAIT_STATE_0, FMI_PWD_DISABLE,\
             FMI_LVD_DISABLE, FMI_FREQ_LOW); /* FMI Waite States */
  
  /*The system clock source switched to the RTC clock */  
   SCU_MCLKSourceConfig(SCU_MCLK_RTC);  /* this line is used when a crystal is
                                        connected to the CPU crystal inputs*/
  /*Enter Sleep mode*/  
  SCU_EnterSleepMode();
  /*Dummy instructions*/
  asm_func_Sleep();
  /*Switch to oscillator as clock source after wake up*/
SCU_MCLKSourceConfig(SCU_MCLK_OSC);  
//  Clock_Source(PLL_Clk66);
}

void asm_func_Sleep(void)
{
   __asm( "NOP\n");
   __asm( "NOP\n");
   __asm( "NOP\n");
}

//中断初识化
void PowerSetupVIC_Configuration(void)
{
  WIU_InitTypeDef WIU_InitStructure;
GPIO_InitTypeDef  GPIO_InitStructure;
  /* Enable VIC clock */
  SCU_AHBPeriphClockConfig(__VIC,ENABLE);
  //VIC_DeInit();
  /* Enable WIU clock */
  SCU_APBPeriphClockConfig(__WIU, ENABLE);
  //WIU_DeInit();


     GPIO_StructInit(&GPIO_InitStructure);
     GPIO_InitStructure.GPIO_Direction = GPIO_PinInput;
     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
     GPIO_Init (GPIO5, &GPIO_InitStructure);//RF_INT
     
  /* 多中断响应 */
//Power_key_detect & System_Lock key
//   WIU_ClearITPendingBit(WIU_Line10 );

   WIU_ClearITPendingBit(WIU_Line11 );
   WIU_InitStructure.WIU_Mode = WIU_Mode_WakeUpInterrupt ;
   WIU_InitStructure.WIU_Line = WIU_Line11 ;
   WIU_InitStructure.WIU_TriggerEdge = WIU_FallingEdge ;
   WIU_Init(&WIU_InitStructure);   



   
   /* Configure the External interrupt group 3 priority */
    VIC_Config(EXTIT1_ITLine, VIC_IRQ, 0);
    /* Enable the External interrupt group 3 */
    VIC_ITCmd(EXTIT1_ITLine, ENABLE);                 
       
  /*Configures External interrupt as WakeUp line*/
   SCU_WakeUpLineConfig(11);

}         


中断在别的函数里面设置了,现在问题是他休眠了,就唤不醒.
此帖出自stm32/stm8论坛
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

10
 
我系统中断响应正常,RTC时钟输出也对的
就是 sleep了,他就不能wake up,
此帖出自stm32/stm8论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

11
 
                                 楼主不要着急啊
此帖出自stm32/stm8论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

12
 
这个问题是这样的,绝大部分机器都是可以正常唤醒的,现在就是100台中测试有3台不能正常唤醒.[url][/url]
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

13
 
                                 能理解楼主的心情
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

14
 
一群幸灾乐祸的人呀
我现在正在测试,实在不行,就不让他sleep好了,把时钟打到32.768Khz,连续开机2天,电量还很足!
不过我目前待机电流有6mA,正常工作电流119mA,有些偏大!后面再继续测试优化!
此帖出自stm32/stm8论坛
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

15
 
这个问题是这样的,绝大部分机器都是可以正常唤醒的,现在就是100台中测试有3台不能正常唤醒.
楼主是否能说说你的产品的工作环境,在系统处于休眠状态时电源上是否有干扰?供电电压是否有波动?另外,MCU处于Sleep时,你的系统中的其他电路处在什么状态?MCU的所有I/O引脚处于什么状态?

一般这种多数情况正常,而少数情况下有问题的现象,可以在系统受到干扰方面找找原因。
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

16
 
香水城:

     目前产品就是处于生产车间,没有特意加一些干扰,扰动测试.供电为2000mAH@3.7V Li-电池,供电为Regulator 3.3V,1.8V两颗. 在待机状态时,部分I/O为High或者Low.
现在挑出20台机器连续测试2周,发现就是部分偶尔会出现不能唤醒
此帖出自stm32/stm8论坛
 
 
 

回复

54

帖子

0

TA的资源

一粒金砂(初级)

17
 
                                 我想知道我现在按照上面的方法做,是不是还有什么问题没有考虑周全?
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

18
 
                                 LZ我发你的短消息看了没?
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

19
 
谢谢vigia
修改后,现在这个问题没有再重现了.
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表