你好支持@对话框那
我正在使用SDK 5.0.4。我必须在广告模式下设计一个ble。它测量电池电压并宣传它。对于此应用程序,我正在使用示例
SDK 5.0.4 \ SDK 5.0.4 \ da1458x_sdk_5.0.4 \ da1458x_sdk \ 5.0.4 \ projects \ target_apps \ ble_examples \ ble_app_barebone。
我使用以下settings--设置广告1秒时间
的#define APP_ADV_DATA_UPDATE_TO(100)//值* 10毫秒=毫秒
.intv_min = 32,//值* 0.625ms = MS
///广告的最大时间间隔
.intv_max = 1600,
这1秒的广告时期适合我。
但如果我设置任何价值超过1秒不工作。连我都看不出BLE扫描应用程序。
10秒钟我正在做以下设置 -
的#define APP_ADV_DATA_UPDATE_TO(1000)//值* 10毫秒=毫秒
.intv_min = 32,//值* 0.625ms = MS
///广告的最大时间间隔
.intv_max = 16000,
设备:
嗨abhikalitra,
该控制的发布时间间隔是user_adv_conf结构和.intv_min和.intv_max成员参数。该APP_ADV_UPDATE_TO是广告串的周期性变化。在.intv_max你最大的广告间隔设置为16000,我想的是,睡眠模式被禁止,因为睡眠模式被禁止,看门狗继续计数,即使你应该去睡觉,并最终看门狗流逝,你会得到NMI中断。所以,你可以禁用看门狗或启用睡眠模式。
由于MT_dialog
亲爱的MT_dialog,
感谢你的回复。实际上我是这个芯片的新手。所以没有浪费的想法。我假设BLE_APP_BAREBONE是一个预先测试的示例。它应该对最小的adv周期(20 ms)进行良好,以最大的adv周期(10.24 s)。这些睡眠和看门狗的事情也受到对话开发团队非常受到优质的。
请发送一些可用于10秒钟的示例代码。
嗨abhikalitra,
是的ble_app_barebone是预先测试过的例子,但如果你有10秒的间隔设备广告,BLE中断(指示该设备应该开始做广告比看门狗定时器出现它需要更长的时间)。因此,为了使您的设备与这种间隔可以启用睡眠功能(将冻结看门狗)的工作只是改变app_default_sleep_mode = ARCH_SLEEP_OFF;到ARCH_EXT_SLEEP_ON在user_config.h文件,也可以通过和#undef只是禁止看门狗在da1458x_config_basic.h文件CFG_WDOG。
由于MT_dialog
亲爱的MT_dialog,
再次感谢你。是的,这事我找的。我想与大家建议的代码设置测试。
如果进一步遇到任何问题,我会再次误解你。
亲支持@对话框那
谢谢你过去的支持。现在我正面临一个新问题。如果我在10秒内保留数据更新期和广告时期,一切都正常工作。但我想每2秒钟更新数据,而希望每10秒宣传一次。此配置无法正常工作,我每2秒都获得广告数据。我的配置如下 -
#define app_add_data_update_to(200)//值* 10ms = ms
.intv_min = 32,//值* 0.625ms = MS
///广告的最大时间间隔
.intv_max = 16000,
量静态sleep_state_t app_default_sleep_mode = ARCH_EXT_SLEEP_ON;
你好abhikalitra,
为延迟回答你的问题而道歉......
数据更新期限定义了我必须更新数据时。如果您按照流程,当定时器过期时,广告停止,然后用新数据重新启动。根据要求,数据正在更新,然后正在宣传新数据。
在此背景下,为了更新数据,你必须停止广告和更新数据。否则,你发送的数据可以是旧的和新的数据之间不停止该广告已损坏。一旦数据被更新时,user_app_adv_start()被称为在user_app_adv_undirect_complete()回调函数。
这是推荐,因为您要在更新时传输。甚至,如果您多次更新数据并在可能是第3次更新之后进行通告,则仅在第3次迭代中更新的数据将被宣传。如果您只想每10秒才能宣传一次,那么每10秒只更新一次数据就会有意义。
如果您有更多问题,请告诉我们。
最好的事物,
LC.
亲爱的LC,
感谢您的支持。我已经通过你的建议了。但是,对不起我的要求是不同的东西。其实在我的项目,我必须检查每2秒一个开关的状态。但是,我必须在每10秒钟广告最新的更新包。所以,请建议我如何在代码中实现这一目标。
这意味着我必须做5个迭代,并在我必须做广告数据的每个第五次迭代。
亲爱的LC,我非常新手在此对话框中发展。所以,请给我提供了一些代码示例解决方案或告诉我究竟是什么语法改变我在我的代码,并在文件中进行。
等待有利的回应。
你好abhikalitra,
我不确定我是否正确理解了这个问题。所以这是我明白的,请确认。
1.在您的项目中,您必须监控硬件中交换机的状态(这是每2秒钟的开发板)一次。
2.同时,你也想升级交换机的每2秒的通告报文的状态。
3.但是,你想这个更新的数据被公布仅每10秒一次。
这是你的要求是什么?
如果是,则每2秒监视开关,每2秒是来自广告的单独本地事件,并且可以在广告分组中更新本地存储的数据,并在已经完成的每10秒传输一次。
如果我理解问题,请告诉我。
最好的事物,
Leepeng
亲爱的Leepeng,
感谢您的及时回复。你是对的。这是我的确切要求。为了实现以下的代码更改使这个我
#define app_add_data_update_to(200)//值* 10ms = ms
.intv_min = 32,//值* 0.625ms = MS
///广告的最大时间间隔
.intv_max = 16000,
量静态sleep_state_t app_default_sleep_mode = ARCH_EXT_SLEEP_ON;
但遗憾的是,数据更新和广告两者都在2秒钟内发生。所以请建议我在代码中制作什么改变以实现我的要求。
你好abhikalitra,
在你的代码,您正在设置广告更新时间为2秒。正如我在previos答复说,这也是广告时间段设置该值,因为到UDPATE你必须停止它调用一些回调函数的广告数据和广告再次启动。该过程需要,不推荐被改变,因为这些都是挂钩到SDK。为了更新数据每2秒钟,每10秒广告,请按照下列步骤操作...
将广告更新设置为10秒,广告间隔可以像已设置的那样。
的#define APP_ADV_DATA_UPDATE_TO(1000)// 1000 * 10毫秒= 10秒
更新数据可以以不同的方式完成。
创建一个单独的更新功能,说
void timeout_update_cb(void)
{
//您阅读交换机的状态并保存它
ARCH_SET_PXACT_GPIO();//这是一个软件光标,可在Power Profiler中视觉上看到。
//设置一个定时器2秒。当计时器到期,读取状态。
app_easy_timer(200,timeout_update_cb);
}
在开始广告时调用此函数。在功能中说
空隙user_app_adv_start(无效)
注意:您可以将交换机状态保存到某些本地变量或直接用于在功能中更新的设备制造商信息mnf_data_update()被称为在上述的功能。
这可能不是最好的办法,但在本地更新数据,每2秒更新adveritsement包每10秒的途径之一。但请,只有最新的更新的数据将被通告的通知。不过,如果你想利用来执行一些其他的东西的状态,这可能是一个办法做到这一点,以及更新的通告数据包。
最好的事物,
LC.
亲爱的LC,
谢谢你的支持。抱歉回复晚了。我正忙着在一些其他的任务。我会尝试你的解决方案,并进一步通知您。