CC2650 蓝牙速率测试
以下是我们测试出现的问题。
硬件SensorTag2650,HW1.2.0,SW0.89。 软件版本ble_cc26xx_setupwin32_2_00_00_42893
工程SimpleBLEPeripheral,
添加特征值 SIMPLEPROFILE_CHAR6 (RW)
SIMPLEPROFILE_CHAR6负责读取数据。
测试程序 时间周期如下 10ms
simpleBLEPeripheral.c :
// Minimum connection interval (units of 1.25ms, 80=100ms) if automatic
// parameter update request is enabled
#define DEFAULT_DESIRED_MIN_CONN_INTERVAL 8//80
// Maximum connection interval (units of 1.25ms, 800=1000ms) if automatic
// parameter update request is enabled
#define DEFAULT_DESIRED_MAX_CONN_INTERVAL 8//800
// How often to perform periodic event (in msec)
#define SBP_PERIODIC_EVT_PERIOD 10//5000
手机端app设置数据发送间隔 20ms,单次发送字节数20byte, SensorTag模块接收无问题。
手机端app设置数据发送间隔 10ms,单次发送字节数20byte,
SensorTag模块接收会出现重复包问题,概率5%-10%,
(即SensorTag接收问题,
得到接收中断时(SimpleBLEPeripheral_processCharValueChangeEvt),
去协议栈取数据(SimpleProfile_GetParameter),
数据未更新,即取得上次数据造成重包)。
代码如下:
simpleBLEPeripheral.c :
static void SimpleBLEPeripheral_processCharValueChangeEvt(uint8_t paramID)
…
case SIMPLEPROFILE_CHAR6:
memset(newChar6Value, 0,sizeof(newChar6Value));
SimpleProfile_GetParameter( SIMPLEPROFILE_CHAR6, newChar6Value );
若将函数SimpleProfile_GetParameter之前加入延时,重复包的概率会下降一些。现在怀疑问题为:因执行周期变小,造成的线程不同步。
有做过类似测试的同学吗?一起探讨一下吧
以 3000 个数据包为例,手机app发完即停止,
SensorTag可以收到3000个左右的包,丢包率在 0.3%,但是其中的重复包占5%-10%。
可以说基本上每个包都可以进中断,但是在中断中取数据时,却有概率取到上次的数据。
相关中断和数据获取在 Stack中,无源码跟踪
有人做过相关测试吗
如果你把连接参数改为6会不会好一些呢?
改为6后,效果好一些。
但是还是会有重包,这是不是就代表2650的极限速率了?
支持的最大空中速率是多少
