我的项目是从DSPS项目的修改.MY配置如下所示
const static sleep_state_t app_default_sleep_mode = arch_deep_sleep_on;
#undef cfg_boot_from_otp.
#undef cfg_mem_map_ext_sleep.
#define cfg_mem_map_deep_sleep.
#undef cfg_development_debug.
static const struct _configuration user_adv_conf = {
.............
///广告的最小间隔
.intv_min = ms_to_bleslots(10000),// 100ms(160 * 0.625ms)
///广告的最大时间间隔
.intv_max = ms_to_bleslots(10000),// 100ms(160 * 0.625ms)
......
}
我的睡眠api定义如下
app_easy_gap_disconnect(spss_env.con_info.conidx);
power_off_humi_sensor();
app_easy_gap_advertise_stop();
ARCH_SET_DEEP_SLEEP();
ARCH_BLE_EXT_WAKEUP_ON();,
为了方便测试,我将这些代码放在user_on_connection的函数中,如下所示
void user_on_connection(uint8_t connection_idx,struct gapc_connection_req_ind const * param)
{
app_easy_gap_disconnect(spss_env.con_info.conidx);
power_off_humi_sensor();
app_easy_gap_advertise_stop();
ARCH_SET_DEEP_SLEEP();
ARCH_BLE_EXT_WAKEUP_ON();
}
当连接代码时,通过Printf我已经看到了user_on_disconnect在执行后执行
app_easy_gap_disconnect(spss_env.con_info.conidx);
但该器件不睡眠深入睡眠。当前是1.46mA
还存在一个奇怪的问题,我的JTAG可以在调试中使用,虽然我打开宏Const static sleep_state_t app_default_sleep_mode = arch_deep_sleep_on;
我有3天的成本来实现我的产品的深度睡眠模式,众多论坛上的主题已经看到并包括UM-B-006和Traning_04,但仍然非常混乱。在论坛中,我发现某人只配置宏可以实现睡眠。不需要使用arch_set_deep_sleep()等一些api来支持它?如果需要,Traning_04的Deatils正在误导。
如果你能给我一个详细的指导,我会非常伟大。谢谢你的重播!
我把代码放在主要,也没有使用
int main_func(void)
{
sleep_mode_t sleep_mode;
//全球初始化
system_init();
/ *
************************************************************************************
*平台初始化
************************************************************************************
* /
ARCH_SET_DEEP_SLEEP();
ARCH_BLE_EXT_WAKEUP_ON();
而(1)
{
做 {
//安排所有待处理的事件
schedule_hile_ble_on();
}
嗨兰迪宇,
我不确定在深度睡眠模式下的DSP将正常运行,因为只支持延长的睡眠模式,如应用说明(简介部分)所示,我的修改甚至没有宣传了我的修改。ARCH_SET_DEEP_SLEEP()函数和ARCH_SET_EXTEDDE_SLEEP()函数用于在操作时动态更改设备的睡眠模式,仅通过将ARCH_DEEP_SLEEP_ON放置在APP_DEFAULT_SLEEP_MODE中足以深入睡眠。还为了在深度睡眠中正确运行,您将不得不在OTP中刻录您的代码,以便为OTP镜像发生,在开发模式下,没有OTP刻录设备处于扩展的睡眠模式,但仍然是您所看到的电流睡眠太多了。您可以在DEV套件上运行项目,并在断开连接后检查设备是否进入睡眠模式。
谢谢mt_dialog.
我有一个da14580devkt-b,电路板与traning_04使用不同,你能告诉我如何测量当前。最好给我一个关于董事会的PDF。
而且我想知道哪个版本的Dev套件是最新的,如何购买?我在中国。
谢谢你
正如您所说的,“只是通过将Arch_Deep_sleep_on放在App_default_sleep_mode中足够深入睡眠”
我有一个问题,在哪里以及将设备设置为睡眠状态(代码)?我使用jatg在wfi()之前添加一个断点,但程序无法在此处执行。如果不是所有睡眠事件在此职位的过程中都无法执行。
是否存在一些特殊的GPIO请求在睡眠模式下配置?
如果芯片落在睡眠模式下,并且电流是leg(1.4mA),通常会导致这个问题的原因是什么?
嗨兰迪宇,
培训的套件是您使用的Pro套件和套件是基本套件,它们的主要区别是Pro套件包括的功率测量电路。除了电路板几乎是相同的标题,以便测量功耗。Pro套件(具有电源测量电路的Pro套件是与智能片段上的电源分布器兼容的那个)。
该设备在主循环中执行一系列检查,如果有挂起消息,请检查内核的队列如果它计算睡眠持续时间的量。
没有GPIO没有从SDK中涉及睡眠过程,我的意思是您可以设置GPIO以唤醒您的设备,但默认情况下不会实现这一点,DSP不会实现它。对于您看到的1.4毫安,即使在不睡觉时,您看到的DSP足够足够,您是否确定580正在消耗该电源而不是附件的传感器?
谢谢mt_dialog.
感谢您的重播,我已经检查了问题,APOSES indciate LED消耗了很多电源,当删除它时,它仍然很多时间调试,我发现程序不能超出(BLE_IS_POWERED())。
我想知道这个功能的三个术语
静态内联bool ble_is_powered()
{
返回((getBits16(clk_radio_reg,ble_enable)== 1)&&
(getBits32(BLE_DEEPSLCNTL_REG,Deep_sleep_stat)== 0)&&
!(rwip_prevent_sleep_get()&rw_wake_up_ongoing)));
}
Q1:用户需要考虑哪一个,需要我编写setbits16(clk_radio_reg,ble_enable,0)?或者所有这些都由核心事件处理,我不需要关心?
Q2:我还没有在da14580_ds_v3.3中找到ble_deepslcntl_reg.w.这是什么意思?
我的睡眠是如下配置,它在user_on_connection中调用
app_easy_gap_disconnect(spss_env.con_info.conidx);
app_easy_gap_advertise_stop();
power_off_humi_sensor();
ARCH_BLE_EXT_WAKEUP_ON();
ARCH_SET_DEEP_SLEEP();
lock_sleep_mode = true;
我也在system_init()后进行测试;
ARCH_TURN_PERITERALS_OFF(MODE_DEEP_SLEEP);
WFI();
在两个句子之后。我可以测量电流为6.5μA,所以我认为我的电路板是OK,大电流不包括传感器消耗
很高兴告诉你,我只是把它的问题加剧了。我将其修改为扩展DSP Project.I成功的睡眠模式,
但也有一些问题
1.如何配置睡眠时间,我希望它睡得更长?
2.指出有一个参数来控制广告时间?因为我发现广告时间很短。
3.在advertise_configuration struct中介绍了什么是intv_min和intv_max?
我并不真正了解广告意义的最低/最大间隔!
它是否可以是广告间隔的固定值?
4.我在电路板中使用DIP开关,当它开启时,DA14580引脚将读取高电平。但是当开关打开时,我发现了,电流将变大,更多更大。
你能告诉我如何在睡觉前和醒来后处理它
感谢您的帮助。
嗨兰迪宇,
如我之前的帖子所示,DSP不设计用于在深度睡眠模式下运行,无论如何都很高兴您达到了目标。
1)关于睡眠时间,您选择广告的时间越长,您的间隔越多,您将越多,您将越多,所以更大的广告间隔,更大的连接间隔意味着更多的睡眠时间。
2)是的,您可以在user_config.h文件中在.intv_min和.intv_max成员处更改user_adv_conf结构中的广告参数。
3)请检查答案2.关于MIN和MAX值,您可以以相同的值设置它们,以便有修复广告间隔。BLE规范使用了这个Min和Max在广告中的原因,以便向控制器提供一些填充,以便纠正给予其他活动的最佳广告间隔。
4)我不太接受你的问题,我想有一些泄漏导致这个额外的电流,你可以重新配置交换机的输入引脚,以避免在退出时使用runtimer期间的GPIO_CONFIGUREPIN()避免这种效果。进入睡眠模式。
谢谢mt_dialog.