6 posts / 0 new
Last post
fxishui
Offline
Last seen:3 years 6 months ago
加入:2016-04-12 13:27
用sdk5.0.4 睡眠例程的deep睡眠问题

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

#undef CFG_MEM_MAP_EXT_SLEEP
#define CFG_MEM_MAP_DEEP_SLEEP

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

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

Device:
Qinjiny_Dialog
Offline
Last seen:3 weeks 1 day ago
工作人员
加入:2016-11-01 05:47
1. 你的方法应该没有问题

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

/* - SysRAM is not powered down in deep sleep mode. Allows developer to run applications using Deep Sleep */

2. 不清楚你具体怎么做的名字逻辑,不过static struct gapm_start_advertise_cmd* app_easy_gap_undirected_advertise_start_create_msg(void)都是从NVDS_TAG_DVICE_NAME里面拿设备名字的,可不可以试着在NVDS_TAG_DEVICE_NAME被调用之前把你的名字+地址写到NVDS_TAG_DEVICE_NAME里面?

fxishui
Offline
Last seen:3 years 6 months ago
加入:2016-04-12 13:27
您好,CFG_DEVELOPMENT_DEBUG

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

如果sdk的睡眠例程里面这个函数这样写就睡眠不了
uint8_t advtimes=0;
void user_app_adv_undirect_complete(uint8_t status)
{
如果状态= = GAP_ERR_CANCELED)
{
advtimes++;
if(advtimes>=2)
{
advtimes=0;
arch_ble_ext_wakeup_on();
app_button_enable();
}
else
user_app_adv_start();
}
}

不知道这是什么情况?

Qinjiny_Dialog
Offline
Last seen:3 weeks 1 day ago
工作人员
加入:2016-11-01 05:47
应该是末尾那个user_app_adv_start(

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

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

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

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

张树龙
Offline
Last seen:3 years 2 months ago
加入:2017-08-15 12:43
哪儿可以下载到UM-B-050 文档呢

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

Jelphi
Offline
Last seen:2 months 5 days ago
工作人员
加入:2015-09-10 12:07
网上就有

网上就有