蓝牙5.0速率测试

蓝牙5.0速率测试

1.测试原理:

烧入ble_app_uart例程的nrf52840开发板通过蓝牙与手机APP交互,当Notification has been enabled时启动timer同时发送数据,获取发送成功的数据大小和时间,最后得到速率。

2. 测试过程:

在ble_app_uart程序中创建一个timer,当 Notification has been enabled时开始timer同时发送数据;
发送数据
利用全局变量m_cnt_5ms获得调用timer的次数得到时间:m_cnt_5ms30(ms),利用函数ble_send持续发送数据data_array,当返回值是NRF_SUCCESS时,记录发送的bytes:m_len_sent=m_len_sent+lenght(bytes);得到rate=m_len_sent10/(m_cnt_5ms*30/100(B/s)。 蓝牙5.0速率测试_第1张图片
在主循环中调用发送函数ble_send()。
蓝牙5.0速率测试_第2张图片

3. 出现的问题:

(1). 使用rate=m_len_sent1000/(m_cnt_5ms30)(B/s)时会出现发送的数据太大时,rate会变为0,这是因为当m_len_sent1000太大时,会超过uint32_t型的最大值,使得式m_len_sent1000变为0;所以改成式rate=m_len_sent10/(m_cnt_5ms30/100)(B/s)可以测足够大的数据。
(2). 当我使用下图的方式计算数据时,rate会很大,这是因为计算速率时会把丢的包也计算进去;
蓝牙5.0速率测试_第3张图片
可以加上如下if语句,只有ble_nus_data_send返回正确时,才认为数据包正确发送,然后才能算入m_len_set中:
蓝牙5.0速率测试_第4张图片
这样也不会发生丢包的情况。

4.测试结果:

下行速率(即手机接收开发板数据的速率):
蓝牙5.0速率测试_第5张图片

5.测试结论:

在Minimum acceptable connection interval 8、 Maximum acceptable connection interval 12、
在这里插入图片描述
NRF_SDH_BLE_GATT_MAX_MTU_SIZE 247的配置下测出下行速率(即手机接收开发板数据的速率)为:8KB/S左右
在这里插入图片描述

6.流程图:

这是我的程序流程图:
蓝牙5.0速率测试_第6张图片

你可能感兴趣的:(蓝牙5.0速率测试)