CH579M低功耗(shutdown)模式无法使用的问题

????一个调试了一周的问题,虽然现在临时解决了,但是没有找到原因,心里不踏实,在这里向大家求助下,看有没有遇到相同的问题

? ? 使用芯片是CH579M,外围没接电路,都拆掉了,只保留了最小系统 3.7V锂电池供电,电容,32M晶振,32K晶振,按键(下拉,触发高电平),DCDC电感,XC6504 LDO,20K-10K电池电压检测电阻,这些几个原件。目的是实现最低功耗关机,同时需要保存2K RAM的内容与RTC计时,按键唤醒。

????发现一个问题是无法保存2K RAM,RTC,这些唤醒后就丢失了。配置了POWER PLAN 寄存器值为 0x9002,实际度回来时0x9003,RB_PWR_PLAN_EN|PB_PWR_RAM2K 配置这两个位,然后设置SCB的SCB_SCR_SLEEPDEEP_Msk位 之后调用__WFI()函数进入掉电模式

????这时测试掉电模式电流为26.5uA(可能有一些别的东西耗电),再开机后RTC复位,2Kram数据随机改变,无法记录,但是另一个同事用同样的程序就都正常,都能保存。

????后来发现是在LDO电压=3.3v的板子上所有东西都无法保存,SRAM RTC。但是在LDO=3.0V的板子上,所有功能就全都正常,请教版主 或者各位朋友,有没有遇到过这样的情况,或者大概是设么原因呢?

Shutdown睡眠唤醒之后必定会复位,RAM会丢失。

针对你的问题,需要在Shutdown模式下,进行RTC的数据保持,可以通过复位状态寄存器进行判断是否重新初始化RTC,因为我们的RTC是一个独立的定时器。image.png

status?=?R8_RESET_STATUS;
if(((status?&?0x07)?==?0x01?)||?((status?&?0x07)?==?0x03?)){
  RTC_InitTime(2022,3,31,23,59,40);
  printf("Init?RTC?OK\r\n");
}

2K的RAM的数据如果需要在复位的情况下保持,可以定义一个变量放在RAM中,并指定一个绝对地址,芯片执行复位时,RAM的值不会被复位。

1.png


是这样的,我现在遇到的问题是 ,芯片再3.3V供电下,进入掉电模式后再唤醒 ,RTC时钟无法保存,会丢失时间,什么都不动,将电压变成3.0V    ,就一切正常了


只有登录才能回复,可以选择微信账号登录