4 posts / 0 new
Last post
RandyYu
Offline
Last seen:2 years 9 months ago
加入:2015-01-28 08:49
关于睡眠模式的一些问题

我在看关于睡眠模式的一些资料,
1.在Traning_04_sleep_modes_current_measurement_v1.0.pdf中设置为深度睡眠时,程序烧录在OTP中?只能这样做吗?烧录在EEPROM中不可以吗?
2.我没看懂UM-B-006和Traning_04_有什么关系啊?感觉怎么讲的不是一个东西!前者文档中讲的CFG_EXT_SLEEP在DSPS的工程中也没有。
3.在DA1458x_IOT的工程中,我看有好多地方写了这句
if(GetBits16(SYS_STAT_REG,PER_IS_DOWN))
{
periph_init();
}
这个是唤醒后重新初始化外设的意思吗?为什么DSPS的工程中和上述资料都没有讲这个?
4.唤醒后程序是从哪里开始执行的?main()还是进入睡眠的地方?如果说是睡眠的地方,那我该怎么设置程序从哪里进入睡眠呢?

问题有点多,麻烦啦,谢谢!

Device:
Gongyu_Dialog
Offline
Last seen:4天22小时前
加入:2016-04-27 07:07
1.如果是深度睡眠,一般因为考虑retention

1.如果是深度睡眠,一般因为考虑retention memory里存的一些信息,建议代码只能烧在OTP里面。但是如果你不需要保存,直接冷启动,你用外部flash或者E2PROM也没问题。
调用这个SetBits16(PMU_CTRL_REG, RESET_ON_WAKEUP, 1);直接重启

2.UM-B-006有点像睡眠模式设计的思路,列出了一些软件的回调接口。CFG_EXT_SLEEP是在SDK3里面出现的;在DSP SDK5的工程里面,有个宏做了同样的事情,static sleep_state_t app_default_sleep_mode = ARCH_SLEEP_OFF; //可以改

3.一般涉及睡眠的工程都会加这个,DSPs里的工程里有啊,在BLE_WAKEUP_LP_Handler函数里面会访问到

4.唤醒后,会首先回到中断处理函数BLE_WAKEUP_LP_Handler里面,处理完后会从之前“WFI”停下来的地方继续走。睡眠的判断都在main_func里面。

RandyYu
Offline
Last seen:2 years 9 months ago
加入:2015-01-28 08:49
可是Traning_04_sleep_modes

可是Traning_04_sleep_modes_current_measurement只是修改了一些配置文件就实现了睡眠功能。用户到底需不需要按照UM-B-006介绍的那样去修改呢?还是只按照Traning_04_sleep_modes_current_measurement的说的区修改(我用的DSPS的工程修改的)。有没有示例工程给看一下啊?
谢谢

Gongyu_Dialog
Offline
Last seen:4天22小时前
加入:2016-04-27 07:07
直接宏来控制就可以,对睡眠模式来说

直接宏来控制就可以,对睡眠模式来说,不需要修改现有的代码就能实现。