nRF52832 改变ATT_MTU提高蓝牙数据发送速率(nRF5_SDK_14.2.0)

本文介绍了如何通过修改nRF52832的ATT_MTU来提高蓝牙数据发送速率,详细阐述了修改过程及影响,包括调整TIMER_INTERVAL、NRF_SDH_BLE_GAP_EVENT_LENGTH、NRF_SDH_BLE_GATT_MAX_MTU_SIZE等配置,并分享了实际测试的最大传输速率为8.2KB/s。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

nRF52832 作为一个低功耗蓝牙芯片,其数据发送发送速率一直都偏低(高就不叫低功耗了^_^),作为初学者在网上找了很多资料,终于找到通过修改ATT_MTU来提升发送速率的方法,最快能达到8.2KB/s,现在就分享出来

首先我用的协议栈是 nRF5_SDK_14.2.0 ,将\examples\ble_peripheral中的 ble_app_template 作为模板,以此进行修改

废话不说,先上代码,首先是定义

#define TIMER_INTERVAL        APP_TIMER_TICKS(29)      //定时器时间间隔

1
BLE_NUS_DEF(m_nus); //加入串口服务结构(修改) 2 BLE_CMD_DEF(m_cmd); //加入命令服务结构 3 APP_TIMER_DEF(m_timer1); //定时器1 4 5 uint8_t hr_data[250]; 6 uint8_t cmd_data; //接收的命令 7 bool send_state = false; //发送状态,默认不发送 8 9 static uint16_t length = 244;

主函数基本没修改,主要初始化了一组数据用来测试发送,加入了调度器,因为使用的定时器定时进行发送,而蓝牙发送不好放在中断里进行,定时器中断就做一个接发送函数放入调度器的操作。定义了一个全局数组,用来存放发送的数据。

 1 int main(void)
 2 {
 3     bool erase_bonds;
 4 
 5     // Initialize.
 6     log_init();
 7     timers_init();
 8     buttons_leds_init(&erase_bonds);
 9     ble_stack_init();
10     gap_params_init();
11     gatt_init();
12     advertising_init();
13     services_init();
14     conn_params_init();
15     peer_manager_init();
16 
17     // Start execution.
18     NRF_LOG_INFO("Template example started.");
19 
20     advertising_start(erase_bonds);
21     
22     for(uint8_t i=0;i<250;i++) hr_data[i]=i;   //初始化数据包
23     SEGGER_RTT_printf(0, "\n");// 此处打印信息
24     
25     APP_SCHED_INIT(20, 2);       //初始化调度器  
26    
27     // Enter main loop.
28     for (;;)
29     {
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值