现在在调试代码的过程中发现
1 .我在da14580_config.h中配置了# define CFG_EXT_SLEEP之后,发现去读写i2c接口的时候出现了蓝牙死机的现象
2.没有配置#定义CFG_EXT_SLEEP i2c读写正常
3.在配置了# define CFG_EXT_SLEEP之后,在读写i2c之前调用
app_disable_sleep ();
如果(GetBits16 (SYS_STAT_REG PER_IS_DOWN)) {
periph_init ();
}
之后,读写i2c正常。
请问是什么原因
设备:
因为进入延长睡眠模式后,会关外设的电。在每次醒来的中断函数里面BLE_WAKEUP_LP_Handler会有相同的调用periph_init()。
不知道你的I2C读写函数是不是含在任务任务里面来处理的?
怎么确定蓝牙是否进入到延长睡眠模式
怎么确定I2C读写函数是不是含在任务任务里面吗?
现在发现在i2c读写之前,重新初始化i2c,能够进行读写
1 .一种方式就是看电流,延长sleep模式下底电流一般都在1mA以下。
2.这取决于你的设计。之前我只是问一下,如果你的I2C模块是独立于蓝牙的,那就必须在睡眠醒来重新初始化。但是比如suota的应用里面会用到flash存储,这就是和消息同步进行操作的。