11个帖子/ 0新
最后一篇
Mahesh.
离线
最后一次露面:3年7个月前
加入:2016-01-04 14:03
祝福传播

你好,

我在DA14583DEVKT-B板上使用SDK 5.0.3软件。
我拍摄了“BLE_APP_PERITELAL”(给出了BLE示例项目)。我修改了两个特征(我是一个单独的UUID)。

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

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

问候,
Mahesh Chandana。

设备:
mt_dialog.
离线
最后一次露面:6个月2个星期前
职员
加入:2015-06-08 11:34
嗨的卖方,

嗨的卖方,

1.您可以使用BLE定时器触发通知,但内核定时器只有10ms的分辨率,除了我认为可以使用580的定时器来触发所需的频率的通知。自动速率依赖于连接间隔和每个设备可以发送的数据包(每个设备的能力而不同,例如580能够每个连接间隔发送和最多10个数据包,但这并不意味着连接的中心将允许该)。

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

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

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

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

为了了解影响BLE传输的因素以及数据包如何转发,您必须了解BLE协议的工作原理,我建议读取BLE规范,以了解两个BLE协议如何交换数据的更详细信息。

谢谢mt_dialog.

Mahesh.
离线
最后一次露面:3年7个月前
加入:2016-01-04 14:03
你好,

你好,
谢谢你的快速反应。

我拍摄了“BLE_APP_PERITELAL”(给出了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.
离线
最后一次露面:6个月2个星期前
职员
加入:2015-06-08 11:34
嗨的卖方,

嗨的卖方,

您如何从项目中触发通知?当你有时说出来的时候,这会多久发生一次?此外,建立两个设备的实际连接间隔(连接参数由主站设置而不是从站设置,因此只能指示他所希望的连接间隔,但这不是遵循的义务)。您发送的数据有多大?我在外设项目中提出了下面的片段(在ADC2的表征中添加通知并粘贴在计时器处理程序上的下面的片段),似乎与虚拟值正常工作,只要我可以通过嗅探器日志检查。

// *************************************定制价值1 ********************************* //
struct musts1_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;

req-> conhdl = app_env-> conhdl;
req-> handle = cust1_idx_adc_val_1_val;
申请- >长度= DEF_CUST1_ADC_VAL_1_CHAR_LEN;
memcpy(req->值,和样本,def_cust1_adc_val_1_char_len);

ke_msg_send(要求的);

struct susts1_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 ********************************* //
静态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-> length = 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.

Mahesh.
离线
最后一次露面:3年7个月前
加入:2016-01-04 14:03
你好,

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

问候,
Mahesh Chandana。

Mahesh.
离线
最后一次露面:3年7个月前
加入:2016-01-04 14:03
你好,

你好,

是否有提供在BLE中传输批量数据传输。

问候,
Mahesh Chandana。

mt_dialog.
离线
最后一次露面:6个月2个星期前
职员
加入:2015-06-08 11:34
嗨的卖方,

嗨的卖方,

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

谢谢mt_dialog.

Mahesh.
离线
最后一次露面:3年7个月前
加入:2016-01-04 14:03
你好,

你好,

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

问候,
Mahesh Chandana。

mt_dialog.
离线
最后一次露面:6个月2个星期前
职员
加入:2015-06-08 11:34
嗨的卖方,

嗨的卖方,

我没有得到这个问题,可以给出一些澄清吗?

谢谢mt_dialog.

Mahesh.
离线
最后一次露面:3年7个月前
加入:2016-01-04 14:03
你好,

你好,
我想知道BLE堆栈是否会支持“蓝牙规范4.2”。

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

问候,
Mahesh Chandana。

mt_dialog.
离线
最后一次露面:6个月2个星期前
职员
加入:2015-06-08 11:34
嗨的卖方,

嗨的卖方,

580堆栈为4.2合格,并支持4.2蓝牙规范的强制性要求,但不是可选的要求。

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

谢谢mt_dialog.