你好,
我从示例“BLE_APP_SLEEPMODE”中实现了外部唤醒,以便能够永远睡眠并从外部中断唤醒。
当设备保持唤醒时,SPI ISR正好工作,但是当设备睡觉时,随后通过外部中断醒来时,ISR需要很长时间才能完成,有时呼叫很晚,所以我缺少字节。保持设备醒来后,ISR正常工作。所以我的假设是正确的,系统需要一段时间在完全活跃之前解决?
这只发生在外部唤醒中,当我使用同步唤醒时,每10秒都在唤醒后正常工作?
那么从计时器和外部唤醒醒来之间有什么区别?
设备:
嗨Ralf S,
是的,在睡觉时,系统不会立即醒来,它会通过一系列操作,直到它可以在执行任何唤醒代码之前,它需要1.5ms到2ms和OFCOUSS需要设置其引脚和外围设备需要调用periph_setup()函数。当您提及每10秒使用同步唤醒时,您的意思是使用ke_timer配置580以每10秒唤醒一次?也许当中断发生的时候,580就是唤醒,这就是为什么你不会错过任何ISR。此外,当您从ke_timer唤醒时,由于BLE核心是必需的,以便调度消息并调用回调,所以首先执行的函数是LP_Handler()和SLP_Handler(),这意味着XTAL16用作系统时钟并且外围设备被初始化。
当使用外部唤醒时,没有唤醒,因此系统上没有XTAL16(除非调用ARCH_BLE_FORCE_WAKEUP)以及使用的时钟是RC16。所以通常你应该能够通过使用RC16获取数据,但这取决于您对580个设备馈送的频率,因为我记得580作为从属操作,并且在这种情况下,您的奴隶应该有4次你的主人的时钟。
谢谢mt_dialog.