TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2642R BLE读取从机设备里4KB数据,该如何实现?

如题,需要做一个从机程序,功能要求如下:
1. 在与主机建立连接之后,等待接收主机的指令;

2. 若是接收到主机的读取指令,则需要将4KB的数据发给主机(可以一次发4KB,也可以分包发,但希望尽量缩短反馈的时间)

根据此需求,在从机中设计了一个Write profile characteristic value 用作主机的TX通道,设计了一个Notification 用作主机的RX通道。

经过实测,从机收到读取指令给与主机反馈时,只能收到前4个数据包,后面的(大约有40个)数据包,主机都没能收到。

请帮忙参谋一下,是我的机制问题?还是实现的细节问题?

谢谢!

YiKai Chen:

建議抓包分析看看

Gilbert:

回复 YiKai Chen:

BLE中有跳频,我不知道该监控哪个频段?是否有手段禁用跳频,将通信固定在某个频段上?

YiKai Chen:

回复 Gilbert:

抓包工具一般只要抓住connection就會自行跟上跳頻信道、最多固定advertising 的信道方便抓包工具抓到advertising 就行

Kevin Qiu1:

只能收到4个数据包,具体是怎么发送的?每包多少个数据

Gilbert:

回复 Kevin Qiu1:

我做了一个测试实例:

若是Perhperal收到一个字节且内容是‘R’,则反馈10个数据包,代码如下:

其中,BLE_Send()的源代码如下图:

测试结果如下图:

Kevin Qiu1:

回复 Gilbert:

设置断点调试看能否运行到发送第6个数据包的位置,最好还是抓包看一下具体情况
另发送数据超过PDU size时协议栈会自动分包

Gilbert:

回复 Kevin Qiu1:

这是我抓包的结果:(从机地址:E4 E1 12 C4 F7 F2)

请帮忙分析下!另外,抓包结果显示FCE ERROR比较多,不知道正不正常?是什么原因导致的?

谢谢!

Kevin Qiu1:

回复 Gilbert:

和你封装的这个BLE_send函数有关,已经相当于私有协议了,连接后ACK这些不能正常识别。
建议你还是按照协议栈中的方式收发数据

赞(0)
未经允许不得转载:TI中文支持网 » CC2642R BLE读取从机设备里4KB数据,该如何实现?
分享到: 更多 (0)