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

我希望DA14580每秒至少发送10KB的数据。它能做到吗?

现在我有一个250ms的定时读取间隔,我可以在一秒内传输1000B,通过将MTU改为253,

你有更好的建议让580发送数据更快吗?

谢谢。

关键词:
设备:
PM_Dialog
离线
最后看到:6天15小时前
工作人员
加入:2018-02-08 11:03
嗨GGQ_in,

嗨GGQ_in,

设备在连接间隔期间发送的数据量取决于中心允许外设发送的数据包。使用标准MTU选择的每个数据包的有效负载为20字节。所以你发送的每个数据最多可以携带20个字节。你不能控制BLE在一个连接间隔内发送多少数据包,因为这取决于连接的主人。如果你想发送超过20字节的数据,你就必须增加你的MTU大小,那么L2CAP将取走剩余的部分,将数据切碎,并将它们放入多个包中。具体来说,设备可以通过空中发送的字节数受MTU (Maximum Transfer Unit)的限制,缺省情况下,MTU被限制在23字节,包括ATT层开销,因此有效负载是20字节。通过增加MTU大小,这意味着您可以通过空中发送更多字节。在你的情况下,最大的传输单元应该是你想发送的字节数+ 3个额外的字节。您应该修改user_config.h头文件的user_gapm_conf结构的.max_mtu。在此之后,为了与中央执行交换,您应该在有连接(在user_on_connection中)时发送GATTC_EXC_MTU_CMD, 580将执行交换。 There is no API implemented for the MTU exchange functionality, but you can use the snippet below:

static void user_gattc_exc_mtu_cmd(uint8_t conidx) {struct gattc_exc_mtu_cmd *cmd = KE_MSG_ALLOC(gattc_exc_mtu_cmd, KE_BUILD_ID(TASK_GATTC, conidx), TASK_APP, gattc_exc_mtu_cmd);cmd - > req_type = GATTC_MTU_EXCH;ke_msg_send (cmd);}

谢谢,PM_Dialog

GGQ_in
离线
最后看到:10个月2天前
加入:2019-07-23 04:41
嗨PM_Dialog,

嗨PM_Dialog,

当我试图改变MTU 276,我发现默认的属性值类型是uint8,限制其最大值255和512年未能达到最大值,所以我想自己写一个函数来更新属性值,但我不知道它的功能结构模型。如何使属性值的最大值更大?

我的主要目的是让580在1S内发送或读取至少10000B,同时忽略主从设备的低功耗。你有更好的计划或建议吗?

谢谢。

PM_Dialog
离线
最后看到:6天15小时前
工作人员
加入:2018-02-08 11:03
嗨GGQ_in,

嗨GGQ_in,

你能指出你在哪里发现默认属性值类型是uint8吗?长特性的最大大小是512字节。DA14580上支持的MTU可以增加到512字节。但是与对端设备连接的MTU将是两个设备所支持MTU的最小值。在你的设置中什么是中心?是手机还是DA14580?

谢谢,PM_Dialog

GGQ_in
离线
最后看到:10个月2天前
加入:2019-07-23 04:41
嗨PM_Dialog,

嗨PM_Dialog,

我的中心设备是DA14580。

Attmdb_att_set_value (uint16_t句柄,att_size_t长度,uint8_t*值);

这个函数中的value参数是uint8_t指针,当我将#define DEF_TEST_LONG_VALUE_CHAR_LEN的值设置为大于255,并使用下面的函数设置属性值时,设备无法正常进行数据传输。外围设备的属性值随计时器的增加而增加,如下所示:

int i = 0;

空白ind_char_update_handler(空白)
{

if(i < (MAX_NUM_TRA - 1))
{

dis_temp[我]=(5 ');我+ +;

attmdb_att_set_value (test_env。shdl + TEST_IDX_LONG_VALUE_VAL), sizeof(dis_temp), (uint8_t*)&(dis_temp));

app_timer_set(sa_send,task_app,10);

有什么需要改进的地方吗?

谢谢。

GGQ_in
离线
最后看到:10个月2天前
加入:2019-07-23 04:41
嗨PM_Dialog,

嗨PM_Dialog,

谢谢你的回答。当我将UUID的长度更改为16位时,这个问题就解决了。

PM_Dialog
离线
最后看到:6天15小时前
工作人员
加入:2018-02-08 11:03
嗨GGQ_in,

嗨GGQ_in,

很高兴你解决了你的问题,谢谢你接受我的回答。

谢谢,PM_Dialog