最大数据长度传输

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.xmece.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
2个职位/ 0个新职位
最后发表
MathieuB
离线
最后看到:6个月1个星期前
加入:2020-03-03 14:11
最大数据长度传输

亲爱的所有,

在一个项目中,我使用DA14531芯片将数据从传感器传输到智能手机。

该传感器通过SPI每2毫秒(500 Hz)提供16位。

为了通过BLE传输数据,我使用了这段代码:

char testVal [2];Uint8_t string_len = 2;//testVal在另一个函数中更新void user_update() {struct custs1_val_ntf_ind_req* req = KE_MSG_ALLOC_DYN(CUSTS1_VAL_NTF_REQ, prf_get_task_from_id(TASK_ID_CUSTS1), TASK_APP, custs1_val_ntf_ind_req, string_len);申请- > conidx = 0;申请- >通知= true;申请- >处理= SVC1_IDX_EEG_VAL_VAL;申请- >长度= string_len;memcpy(请求- >值、testVal string_len);ke_msg_send(要求的);app_easy_timer(期间,user_update); }

我的问题是:

我尝试将string_len改为50。然而,我的智能手机应用程序(nRF连接)只显示20字节。“一次”发送的最大数据量是多少?

先谢谢你

设备:
PM_Dialog
离线
最后看到:3天11小时前
工作人员
加入:2018-02-08 11:03
嗨MathieuB,

嗨MathieuB,

谢谢您在线问题,并符合您对DA14531 BLE解决方案的兴趣。为延迟道歉。

让我们以6.0.14.1114\projects\target_apps\ble_examples为例

ble_app_peripheral的示例SDK作为参考。

请检查app_adcval1_timer_cb_handler()回调函数,它是向对等设备发送BLE通知的函数。

DEF_SVC1_ADC_VAL_1_CHAR_LEN是要通知的特征的长度——当然,长度应该根据您的需求而定。因此,请将它相应地设置到数据库中(user_custs1_def.h),并在user_update()中使用它。

设备在连接间隔期间发送的数据量取决于中央允许外设发送的数据包。使用标准MTU选择的每个数据包的有效负载为20字节。所以你发送的每个数据最多可以携带20个字节。你不能控制BLE在一个连接间隔内发送多少数据包,因为这取决于连接的主人。如果要发送超过20字节的数据,就必须增加MTU的大小。具体来说,设备可以通过空中发送的字节数受MTU (Maximum Transfer Unit)的限制,缺省情况下,MTU被限制在23字节,包括ATT层开销,因此有效负载是20字节。通过增加MTU大小,这意味着您可以通过空中发送更多字节。在你的情况下,最大的传输单元应该是你想发送的字节数+ 3个额外的字节。因此,您应该在user_config.h头文件中修改user_gapm_conf结构的.max_mtu。

在我们的支持门户上有一个类似的SW示例。这是下载链接-DA14585-DA14531动态DLE和L2CAP包大小优化

-这个例子旨在说明:

-如何做一个对等特性请求,以确定对等DLE能力

—如何请求DLE并利用较大的数据包来提高吞吐量

—L2CAP基本原理:报文利用率为100%

-非DLE设备的包优化

请参阅Readme文件以获取更多信息,该文件位于da14585-da14531-dynamic_dle_l2cap_packet_size_optimization\project_environment路径下。

这个示例与我们所有的SW示例一样,不包含SDK,所以在运行它之前,您应该将它链接到SDK6.0.14。你会在上面找到指示使用Python链接脚本设置软件示例文档。

然而,这个例子包含了一个以前SDK版本的旧python脚本——我将要求团队内部更改它。请按照以下步骤进行更换:

  1. 下载DA14585/DA14586 - DA14531多外设示例
  2. 将DA14531- DA14585-586_Multiperipheral_Example\project_environment\dlg_make_keil5_env_v2.000.py拷贝到DA14585-DA14531-Dynamic_DLE_L2CAP_Packet_size_Optimization\project_environment中
  3. 执行新的python脚本:

> python dlg_make_keil5_env_v2.000.py -sdkpath“

例如:

> python dlg_make_keil5_env_v2.000.py -sdkpath " C: dev\6.0.14 "

PS:在你最初的帖子中将设备选择从DA14580更改为DA14531。

谢谢,PM_Dialog