设为首页 加入收藏

TOP

nRF52832 改变ATT_MTU提高蓝牙数据发送速率(nRF5_SDK_14.2.0)(二)
2019-09-01 23:09:09 】 浏览:71
Tags:nRF52832 改变 ATT_MTU 提高 蓝牙 数据 发送 速率 nRF5_SDK_14.2.0
e = app_timer_stop(m_timer1); //停止定时器 12 APP_ERROR_CHECK(err_code); 13 break; 14 case BLE_SEND_CMD : 15 send_state = true; //允许发送 16 err_code = app_timer_start(m_timer1, TIMER_INTERVAL, NULL); //启动定时器 17 APP_ERROR_CHECK(err_code); 18 break; 19 default: 20 SEGGER_RTT_printf(0, "Invalid command\n");// 此处打印信息 21 break; 22 } 23 }

整个程序的框架基本上就是这样,通过蓝牙接收的命令打开定时器,定时器中断将发送函数加入调度,主循环轮转到发送时进行数据发送

通过修改 length 改变发送包的大小

通过修改TIMER_INTERVAL  修改定时器时间

两者配合改变数据发送速率。

 

到了这里,就得修改ATT_MTU了,不然244个字节根本发不了,打开sdk_config.h

 1 // <h> nRF_SoftDevice 
 2 
 3 //==========================================================
 4 // <e> NRF_SDH_BLE_ENABLED - nrf_sdh_ble - SoftDevice BLE event handler
 5 //==========================================================
 6 #ifndef NRF_SDH_BLE_ENABLED
 7 #define NRF_SDH_BLE_ENABLED 1
 8 #endif
 9 // <h> BLE Stack configuration - Stack configuration parameters
10 
11 // <i> These values are not used directly by the SoftDevice handler but the application or other libraries might depend on them.
12 // <i> Keep them up-to-date with the desired configuration.
13 //==========================================================
14 // <o> NRF_SDH_BLE_PERIPHERAL_LINK_COUNT - Maximum number of peripheral links. 
15 #ifndef NRF_SDH_BLE_PERIPHERAL_LINK_COUNT
16 #define NRF_SDH_BLE_PERIPHERAL_LINK_COUNT 1
17 #endif
18 
19 // <o> NRF_SDH_BLE_CENTRAL_LINK_COUNT - Maximum number of central links. 
20 #ifndef NRF_SDH_BLE_CENTRAL_LINK_COUNT
21 #define NRF_SDH_BLE_CENTRAL_LINK_COUNT 0
22 #endif
23 
24 // <o> NRF_SDH_BLE_TOTAL_LINK_COUNT - Maximum number of total concurrent connections using the default configuration. 
25 #ifndef NRF_SDH_BLE_TOTAL_LINK_COUNT
26 #define NRF_SDH_BLE_TOTAL_LINK_COUNT 1
27 #endif
28 
29 // <o> NRF_SDH_BLE_GAP_EVENT_LENGTH - The time set aside for this connection on every connection interval in 1.25 ms units. 
30 #ifndef NRF_SDH_BLE_GAP_EVENT_LENGTH
31 #define NRF_SDH_BLE_GAP_EVENT_LENGTH 8    //默认值3
32 #endif
33 
34 // <o> NRF_SDH_BLE_GATT_MAX_MTU_SIZE - Static maximum MTU size. 
35 #ifndef NRF_SDH_BLE_GATT_MAX_MTU_SIZE
36 #define NRF_SDH_BLE_GATT_MAX_MTU_SIZE  247       //默认值23
37 #endif
38 
39 // <o> NRF_SDH_BLE_GATTS_ATTR_TAB_SIZE - Attribute Table size in bytes. The size must be a multiple of 4. 
40 #ifndef NRF_SDH_BLE_GATTS_ATTR_TAB_SIZE
41 #define NRF_SDH_BLE_GATTS_ATTR_TAB_SIZE 1408
42 #endif
43 
44 // <o> NRF_SDH_BLE_VS_UUID_COUNT - The number of vendor-specific UUIDs. 
45 #ifndef NRF_SDH_BLE_VS_UUID_COUNT
46 #define NRF_SDH_BLE_VS_UUID_COUNT 1 //默认为0
47 #endif

这里修改了3个地方,

NRF_SDH_BLE_GAP_EVENT_LENGTH    这个是每个间隔预留给连接的时间

NRF_SDH_BLE_GATT_MAX_MTU_SIZE   这个就是最大MTU了

NRF_SDH_BLE_VS_UUID_COUNT   这个因为我加了两个自定义服务,所以也要改成1

 

接下来通过修改 length 和  TIMER_INTERVAL   编译下载后来测试速率了

注意的是,因为修改过NRF_SDH_BLE_GATT_MAX_MTU_SIZE,所以RAM的地址会发生改变,打开sdk_config.h,修改

1 //==========================================================
2 // <e> NRF_LOG_ENABLED - Logging module for nRF5 SDK
3 //==========================================================
4 #ifndef NRF_LOG_ENABLED
5 #define NRF_LOG_ENABLED 1
6 #endif
1 //==========
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇关于IRAM和IFLASH启动模式,重映.. 下一篇uip.h 笔记

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目