INT APP_CONNECTION_FUNCTION I启动了一个定时器5秒,以启用扩展睡眠模式,但我看到从500ua到100ua的电流消耗降低,而不是2ua。
因此,可以使DA14850在连接间隔之间睡眠。
代码
in app_connection_func
// Calling timer
ke_timer_set(FLIP_MAIN_TIMER,TASK_APP,500);
/ /定时器处理程序
int flip_main_timer_handler(ke_msg_id_t const msgid,
void const * param,
ke_task_id_t const dest_id,
ke_task_id_t const src_id)
{
app_set_extended_sleep();
return(ke_msg_consumed);
}
这导致100A的电流,我可以使这个低于30 ua或5ua
我正在使用SDK 3.0.8
Thanks
Mohit
你好莫希特,你是如何测量当前的?请注意,如果您使用的是智能片段(专家/专业电路板上的电源Profler),则测量电路具有高偏移电流。从下面的考试,您可以看到连接事件后的设备进入延长睡眠状态,尽管波形不会降至零:这在开发板上的放大器-ADC上的测量中偏移。为了测量UA级别,您需要高分辨率DMM,如AN-B-015所述。
BR JE_DIALOG.
我使用数字万用表测量电流,它显示平均电流。我正在使用Pan1740 USB加密狗。
这是我做的实验: -
1.当设备广告时以及5秒后,我切换到EXT睡眠模式时,电流消耗为5uA至2UA。
//计时器处理程序中的代码
app_adv_stop()
app_set_extended_sleep();
2.当设备连接并在5秒后切换到EXT睡眠模式后当前消耗量为100ua我知道这不能抵消电流,因为我在案件1中实现了5ua。
//计时器处理程序中的代码
app_set_extended_sleep();
我的问题是,即使在启用睡眠外设之后,在连接状态下也与手机通信而不会进入睡眠模式
I am not using keyboard project , i have modified the template project for testing
Thanks
Mohit
嗨Mohit,谢谢:在连接状态下,手机设置的连接间隔是什么?你是测量平均电流......
Consider an average connection event takes approx 5uC... if you have a connection interval of say 100mS, then you will consume 50uC per second just on connection events (ignoring a small amount of sleep energy) : thats equivalent to 50uA on connection events alone. If its a 1 second connection interval, then it comes down to average of 5uA....
BR JE_DIALOG.
目前我的连接间隔约为45ms,但由于中央设备决定连接间隔,可以始终获得1秒的连接间隔。
还用于测量连接间隔,我在rwble.c文件中添加了在ble_event_handler中的systick定时器代码,是当前的位置,或者我必须将其放在其他地方?
Hello Mohit,在45ms的连接内部,这将解释100UA平均电流。
Periperhal可以将新的连接参数索引到连接状态中的主站。这可以使用gapc_param_update_cmd函数完成。这就是14580的从设备如何从主设备请求新的连接参数,以便您可以请求更长的连接间隔。
Systick在DA14580中实现,如Cortex M0用户指南中所述,可从ARM网站获得.Registers是相同的(0xE000E010-01001F)。
请注意,当DA14580进入睡眠时,Systick计数器停止 - 因此不适合测量连接间隔。
BR JE_DIALOG.
我需要一个精确的计时器measure rr interval coming from our heart rate sensor . as u said that SYSTICK is stopped in sleep mode suggest me the another timer ( guess timer0 is also stopped in sleep mode)
此外,我在睡眠模式配置中还有一个疑问,当我在广告模式下做app_set_extending_sleep()和app_ble_ext_wakeup_on()时,电流消耗将减少到5个UA,设备不会通告,直到它得到外部中断。
如果我在连接状态下做ext app_set_extending_sleep()和app_ble_ext_wakeup_on()它意味着它只应该在EXT中断唤醒,但它也唤醒了BLE核心给出的中断,任何解释?
Hello Mohit,如何精确是您需要的计时器功能?
我对锥形状态的设置的理解是不同的:它将同步地唤醒BLE核心,因为这是由带有中央设备拍摄的连接参数管理。
BR JE_DIALOG.
如果可能的话,我需要毫秒的精确定时器,因为睡眠模式中的计时器的不可用来我们正面临RR间隔计算中精度损耗的问题。是否有一种方法可以使用计时器0启用睡眠模式是开启的,我使用了lld_evt_time_get()有时它会给零一个,有时它会给零一个,另一个可能的解决方案是使用ke_timer,但它给出了10ms精度。
嗨Mohit3112.
Sorry but when the da goes in sleep mode you cant use the HW timers of the chip. The only way is to use a 10ms ke_timer.
谢谢mt_dialog.
嗨,我想知道“lld_sleep_enter(sleep_lp_cycles,rwip_env.ext_wakeup_enable)的功能是什么?
嗨Jetliang,
This is the fucntion that instructs the system to go to sleep, the parameters it gets are sleep_duration - after how many cycles its going to wake up and ext_wakeup is if the external interrupt is enabled or not (meaning if its going to wake-up for some external interrupt).
谢谢mt_dialog.