各位,
对于项目,我正在使用DA14531芯片将数据从传感器传输到智能手机。
传感器通过SPI每2毫秒(500Hz)提供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);req-> conidx = 0;req-> notification = true;req-> handle = svc1_idx_eeg_val_val;req-> length = string_len;memcpy(req->值,testval,string_len);KE_MSG_SEND(REQ);app_easy_timer(句点,user_update); }
我的问题是:
我试图将“string_len”更改为50.但是,我的智能手机应用程序(nrf connect)只显示20个字节。是否存在最大的数据可以在“一拍”中发送?
先感谢您
设备:
嗨mathieub,
感谢您的在线问题,以及您对我们的DA14531 BLE解决方案的兴趣。我也为耽搁道歉。
让我们拿6.0.14.1114 \ projects \ target_apps \ ble_examples
BLE_APP_PERITIALAL示例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(最大传输单元)限制,默认情况下MTU受限于包括ATT层开销的23个字节,因此有效载荷是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脚本 - 我会在内部询问团队更改它。请按照以下步骤替换为更新的步骤:
> python dlg_make_keil5_env_v2.000.py -sdkpath " < SDK库>的路径"
例如:
> python dlg_make_keil5_env_v2.000.py -sdkpath“c:\ dev \ 6.0.14”
PS:将设备选择从DA14580更改为您的初始帖子中的DA14531。
谢谢,PM_DIALOG.