6个帖子/ 0新
最后一篇
fxishui
离线
最后一次露面:4年1小时前
加入:2016年4月12日13:27
用sdk5.0.4睡眠例程的深睡眠问题

1,用sdk5.0.4睡眠例程为基础创建的的工程,在延长睡眠模式下,调式模式,程序烧写到OTP,一切都正常,
2,当换到深睡眠模式,修改配置如下:

和#undef CFG_MEM_MAP_EXT_SLEEP
#定义CFG_MEM_MAP_DEEP_SLEEP

量静态sleep_state_t app_default_sleep_mode = ARCH_DEEP_SLEEP_ON;
还有就是把所有用到arch_set_extended_sleep()地方换为arch_set_deep_sleep();

问题:
如图1所示,程序烧写到OTP后,无法进入睡眠
2,我的广播设备名为固定的名字动态的加上MAC地址;如对话框80EACA000005; MAC烧写在otpHeader里面的,第一轮广播的时候名字没有问题,但在第二轮广播后名字里面的MAC部分就没有加上,我的名字逻辑部分添加在app.c里面的静态结构gapm_start_advertise_cmd * app_easy_gap_undirected_advertise_start_create_msg(无效)这个函数里面的。
请问这是什么原因,怎么解决呢,谢谢!

设备:
qinjiny_dialog
离线
最后一次露面:1个月3周前
职员
加入:2016-11-01 05:47
1.你的方法应该没有问题

1.你的方法应该没有问题,是不是在完成测试烧录OTP之前忘记把CFG_DEVELOPMENT_DEBUG去定义了?如果CFG_DEVELOPMENT_DEBUG还是定义过的话设备是无法进入深度睡眠状态的,因为

/ * - SysRAM不是在深度睡眠模式下断电。允许开发人员使用深度休眠运行应用程序* /雷竞技安卓下载

2.不清楚你具体怎么做的名字逻辑,不过静态结构gapm_start_advertise_cmd * app_easy_gap_undirected_advertise_start_create_msg(无效)都是从N​​VDS_TAG_DVICE_NAME里面拿设备名字的,可不可以试着在NVDS_TAG_DEVICE_NAME被调用之前把你的名字+地址写到NVDS_TAG_DEVICE_NAME里面?

fxishui
离线
最后一次露面:4年1小时前
加入:2016年4月12日13:27
您好,CFG_DEVELOPMENT_DEBUG

您好,CFG_DEVELOPMENT_DEBUG是去定义了的。
我判断可能是这个函数无效user_app_adv_undirect_complete(uint8_t状态)里面的问题

如果SDK的睡眠例程里面这个函数这样写就睡眠不了
uint8_t advtimes = 0;
无效user_app_adv_undirect_complete(uint8_t状态)
{
如果(状态== GAP_ERR_CANCELED)
{
advtimes ++;
如果(advtimes> = 2)
{
advtimes = 0;
ARCH_BLE_EXT_WAKEUP_ON();
app_button_enable();
}
别的
user_app_adv_start();
}
}

不知道这是什么情况?

qinjiny_dialog
离线
最后一次露面:1个月3周前
职员
加入:2016-11-01 05:47
应该是末尾那个user_app_adv_start(

应该是末尾那个user_app_adv_start()函数的问题,这个函数除了开始广播之外还做了其他事情,计划下一次的广播内容更新,重新准备广播内容,动态更新自定义生产商内容,设置DEEPSLEEP模式等等,你把它加在这里不太合适。

这个程序默认是广播10秒后停止广播,期间默认就是深度睡眠,只有在连接到设备的时候才会改成延长休眠,修改睡眠模式的话只去关心那部分应该就行了。

你修改上面这个回调函数的目的应该是睡眠之前多广播几遍,其实可以直接修改APP_ADV_DATA_UPDATE_TO这个参量来改变10秒默认的时间来达到,这个函数最好保持原样。

我觉得你可以再看看UM-B-050文档的8.50部分开始,详细了解一下这个例程

张树龙
离线
最后一次露面:3年8个月前
加入:2017年8月15日12:43
哪儿可以下载到UM-B-050文档呢

哪儿可以下载到UM-B-050文档呢

Jelphi.
离线
最后一次露面:7个月3周前
职员
加入:2015-09-10 12:07
网上就有

网上就有