主机定时向从机发送数据超时

多从机MultiCentral例程下,在接收到从机数据(从机发送数据频率20ms9个字节)后,我会定时(6S)向从机发送一帧数据(6个字节)。发送几次之后,就不会再发送了。经过排查得知,发送数据函数返回0x16事务挂起,接着又返回0x17上一次事务超时。想知道这会是什么原因引起的,该如何解决。

image.png





image.png


image.png

在主机与从机连接的例程中,从机会默认给主机发送0x88的数据,主机会默认给从机发送0x5A的数据(只发送一次)。你这里的操作应该是主机先接收从机数据,接收到数据后主机再发送数据给从机。

主机端在Receive noti后,调用TMOS任务进行发送的处理。

image.png

image.png

从机端接收主机数据也是同理处理。


是的,我就是在接收到从机数据后就向从机发送数据。其实就是就是按照例程修改的,只不过例程是发送一个字节,我需要发送多个字节。

只是在发送几次之后,就不再发送了。

打印GATT_WriteLongCharValue的返回值为0x16/0x17。

麻烦帮忙看一下!!


image.png



image.png




1、建议在例程上修改,默认的程序是发送1个字节,你也先尝试1个字节验证是否出问题,然后逐次增加;

2、增加大连接间隔

BLE广播间隔和连接间隔(CH573) - SweetTea_lllpc - 博客园 (cnblogs.com)

3、增大MTU

/bbs/thread-89965-1.html

 



根据您提供的思路,我直接使用MultiCentral例程进行测试。由于从机是一个透传模组,所以在GATT服务部分做了一些修改。但是还是一样的现象,发送几次之后,也是不再继续发送,打印GATT_WriteLongCharValue的返回值为0x16/0x17。

麻烦帮我看一下,该如何解决。


1663227239867891.png


image.png


image.png


image.png


image.png












目前使用的是什么版本的库,建议使用最新版的库进行测试。


我看打印的显示是V1.3.0版本的,最新的版本是1.5的吧,8.31发布的是吧。


不太清楚你这边使用的是哪款芯片,可以对应下载以下链接的开发包,可以替换lib库,也可在新例程上进行修改。

/downloads/CH573EVT_ZIP.html

/downloads/CH583EVT_ZIP.html

/downloads/CH579EVT_ZIP.html


只有登录才能回复,可以选择微信账号登录