SPI ISR在外部唤醒后花费了很长时间

2个帖子/ 0个新
最后发表
拉尔夫。
离线
最后看到:4年3个月前
加入:2016-02-16 08:06
SPI ISR在外部唤醒后花费了很长时间

你好,

我从示例“ble_app_sleepmode”中实现了外部唤醒,以便能够永远休眠,并从外部中断中唤醒。

当设备保持唤醒时,SPI ISR工作良好,但当设备将休眠,并稍后被外部中断唤醒时,ISR需要很长时间才能完成,有时很晚才调用,所以我丢失了字节。保持设备清醒后,ISR工作正常。那么,我的假设是正确的,系统在完全激活之前需要一些时间来解决?

这只发生在外部唤醒,当我使用同步唤醒每10秒,ISR是正常工作后醒来?

那么从计时器中醒来和从外部醒来有什么区别呢?

设备:
MT_dialog
离线
最后看到:三个月三个星期前
工作人员
加入:2015-06-08 34
嗨,拉尔夫年代,

嗨,拉尔夫年代,

是的,系统不立即睡觉时醒来,它通过一系列的操作,直到可用之前执行任何唤醒代码需要一次1.5毫秒2女士,当然它需要设置其针和外围设备,您需要调用periph_setup()函数。当你提到你使用同步唤醒每10秒,你的意思是你配置580与ke_timer每10秒唤醒?也许当中断发生时,580已经被唤醒了,这就是为什么你不会错过任何ISR。此外,当您从ke_timer中醒来时,由于BLE核心是调度消息和调用回调所需的,首先执行的函数是LP_Handler()和SLP_Handler(),这意味着XTAL16被用作系统时钟,并初始化外围设备。

当使用外部唤醒时,没有BLE唤醒,因此系统上没有XTAL16(除非调用了arch_ble_force_wakeup),使用的时钟是RC16。通常你应该能够获得数据通过使用RC16但这取决于你喂养频率580设备,自580年据我记得是奴隶,在那种情况下你的时钟的奴隶应该有4倍的主人。

由于MT_dialog