11个员额/ 0个新员额
最后发表
马赫什
离线
最后看到:3年2个月前
加入:2016-01-04 14:03
祝福传播

你好,

我在DA14583DEVKT-B板上使用SDK 5.0.3软件。
我采用了“ble_app_peripheral”(给出的BLE示例项目)。我已经修改工作的两个特点(I ..e分离UUID)。

我的要求是每5毫秒发送应用程序特定的数据。
我想了解一下具体情况。
1.我能传输BLE数据包的最大速率。
2.最大有效载荷可以在每个BLE包中传输。
3.我一次能启用多少个最大特性。
4.影响传播的其他因素是什么?
5.在哪个采样数据是可靠的。

请分享信息,并指导我了解上述因素需要参考哪些文件。

问候,
Mahesh Chandana。

设备:
MT_dialog
离线
最后看到:1个月6天前
工作人员
加入:2015-06-08 34
嗨的卖方,

嗨的卖方,

1.你可以使用BLE定时器触发通知,但内核定时器只有10ms的分辨率,除了我认为你可以使用580定时器触发通知的频率你想。传送率依赖于连接间隔和每个设备都可以发送的数据包(每个设备的能力不同,例如580能够发送和间隔10包/连接,但这并不意味着中央连接将允许)。

2.通过增加MTU大小,每个数据包的最大有效载荷约为20字节,并且只有当数据涉及相同的特性时,才能在相同的连接间隔下增加到27个数据包。

3.最大特征取决于数据库Heap的大小,通过增加它,您将获得更多的空间来创建更多的特征。

4.快速传输的因素是连接间隔和系统可以支持的每个连接间隔的包数。

5.你的最后一个问题很普通。

为了了解影响BLE传输的因素以及数据包是如何传输的,你必须了解BLE协议是如何工作的,我建议阅读BLE规范以获得关于两个BLE协议如何交换数据的更详细信息。

由于MT_dialog

马赫什
离线
最后看到:3年2个月前
加入:2016-01-04 14:03
你好,

你好,
谢谢你的快速回复。

我采用了“ble_app_peripheral”(给出的BLE示例项目)。我已经修改为在一个服务下处理两个特性(发送传感器1数据和传感器2数据)。
这意味着,我的应用程序必须每10毫秒发送(即DA14583) 2个包(即一个是传感器1数据,另一个是传感器2数据)。移动端我正在使用android应用程序记录数据。

对于每个包,我都有包计数来确定任何包丢失。有时,DA14583(即BLE外设)发送重复数据包(即发送数据包两次)而错过实际数据包。例如:我需要发送编号为0、1、2、3、4、5、6、7、8、9、10的数据包,但它发送的是0、1、2、2、4、4、6、6、(丢包也会发生)9,10。

上述问题,我面临的是10毫秒的采样率。如果采样率增加到20毫秒,那么就没有丢包,也就没有重复。它在20毫秒内工作正常。

请指导我解决这个问题。

问候,
Mahesh Chandana。

MT_dialog
离线
最后看到:1个月6天前
工作人员
加入:2015-06-08 34
嗨的卖方,

嗨的卖方,

如何触发项目的通知?当你说有时,这种情况发生的频率是多少?还有两个设备建立的实际连接间隔是什么(连接参数是由主设备设置的,而不是由从设备设置的,从设备只能指示他想要的连接间隔,但这不是主设备必须遵循的)。你发送的数据有多大?我已经在外围项目中测试了下面的代码片段(在ADC2特性中添加了通知,并将下面的代码片段粘贴到计时器处理程序上),似乎在我可以通过嗅探器日志检查的虚拟值下工作正常。

//************************************* 自定义值1 *********************************//
struct custs1_val_ntf_req* req = KE_MSG_ALLOC_DYN(custs1_val_ntf_req,
TASK_CUSTS1,
TASK_APP,
custs1_val_ntf_req,
DEF_CUST1_ADC_VAL_1_CHAR_LEN);

//待采样的ADC值
静态uint16_t样本;
Sample = (Sample <= 0xffff) ?(样本+ 1):0;

申请- > conhdl = app_env - > conhdl;
申请- >处理= CUST1_IDX_ADC_VAL_1_VAL;
申请- >长度= DEF_CUST1_ADC_VAL_1_CHAR_LEN;
顺利进行,memcpy(请求- >价值DEF_CUST1_ADC_VAL_1_CHAR_LEN);

ke_msg_send(要求的);

struct custs1_val_ntf_req* req_2 = KE_MSG_ALLOC_DYN(custs1_val_ntf_req,
TASK_CUSTS1,
TASK_APP,
custs1_val_ntf_req,
DEF_CUST1_ADC_VAL_2_CHAR_LEN);

//************************************* 自定义值2 *********************************//
Static uint16_t sample_2 = 100;
Sample_2 = (Sample_2 <=0xffff) ?(sample_2 + 1): 0;

req_2 - > conhdl = app_env - > conhdl;
req_2 - >处理= CUST1_IDX_ADC_VAL_2_VAL;
req_2 - > = DEF_CUST1_ADC_VAL_2_CHAR_LEN长度;
memcpy (req_2 - >值、&sample_2 DEF_CUST1_ADC_VAL_2_CHAR_LEN);

ke_msg_send (req_2);

由于MT_dialog

马赫什
离线
最后看到:3年2个月前
加入:2016-01-04 14:03
你好,

你好,
我从手机上的android应用程序中触发了通知。
重复发生不一致。大部分时间在1.5秒到2秒之间(我的BLE采样时间是10毫秒)。这种重复发生的时间为70至300毫秒。从从I指示连接间隔,在主端配置相同。我的数据包大小是20字节的数据。我对值1和值2使用了单独的通知。你是否分别通知ADC1和ADC2?

问候,
Mahesh Chandana。

马赫什
离线
最后看到:3年2个月前
加入:2016-01-04 14:03
你好,

你好,

在BLE中是否有传输批量数据的规定。

问候,
Mahesh Chandana。

MT_dialog
离线
最后看到:1个月6天前
工作人员
加入:2015-06-08 34
嗨的卖方,

嗨的卖方,

我不能复制你的体验,10毫秒的定时器和通过10毫秒的连接间隔,即使设置两个不同的定时器触发,通知发送正确,用嗅探器检查。我可以假设的是,也许连接间隔的两个设备之间的连接没有设置为最佳(连接间隔是由中央决定,外设只能指示它想要的)。我看不出580方面有任何其他原因造成这种数据丢失和行为,也许这是手机应用程序的问题。

由于MT_dialog

马赫什
离线
最后看到:3年2个月前
加入:2016-01-04 14:03
你好,

你好,

谢谢你提供的信息。我需要更多关于“在BLE中是否有传输批量数据传输的规定?”

问候,
Mahesh Chandana。

MT_dialog
离线
最后看到:1个月6天前
工作人员
加入:2015-06-08 34
嗨的卖方,

嗨的卖方,

我不明白这个问题,你能再解释一下吗?

由于MT_dialog

马赫什
离线
最后看到:3年2个月前
加入:2016-01-04 14:03
你好,

你好,
我想知道BLE栈是否支持“BLUETOOTH SPECIFICATION Version 4.2”。

到目前为止,我们能够在每个特征上发送20个字节。是否有可能在每个特征上传输256字节(每次传输)的大容量传输。

问候,
Mahesh Chandana。

MT_dialog
离线
最后看到:1个月6天前
工作人员
加入:2015-06-08 34
嗨的卖方,

嗨的卖方,

580堆栈符合4.2标准,支持4.2蓝牙规范的强制性要求,但不支持可选要求。

关于你的第二个问题,你可以增加你的特征和MTU的大小,但你能成功更新多少特征,你能成功发送多少数据包,这都受到我在第二篇文章中提到的因素的限制。

由于MT_dialog