nrf51822 --- 动态修改连接间隔

1.目的

    在蓝牙连接上的时候动态修改连接间隔,已达到功耗平衡

2.分析

   在实际应用的时候,有时候需要发送数据快一点,这个时候我们可以把连接间隔改小一点,这样发送数据快,但是功耗大,当把数据发完的时候,可把连接间隔改小一点,这样可以降低功耗,达到一个均衡.比如穿戴设备连接上的时候,可能需要快速把本地数据发给手机,这个时候就可以把连接间隔设置小点。传送完毕后间隔设置大点。这样功耗就不会太大。

3.平台:

Sofedevice :8.0.0

协议栈版本:SDK10.0.0

编译软件:keil 5.14

硬件平台:nrf51822最小系统

例子:SDK 10.0.0\examples\ble_peripheral\ble_app_uart\pca10028\s110\arm4

4.步骤

 当手机端发送0x55命令的时候,调用修改连接间隔函数,修改连接间隔

 

static void nus_data_handler(ble_nus_t * p_nus, uint8_t * p_data, uint16_t length)
{
	/****************添加代码,调用修改连接间隔******************/
	if(p_data[0] == 0x55)
	{
		Syn_gap_params_init();
	} /*****************************/
    for (uint32_t i = 0; i < length; i++)
    {
        while(app_uart_put(p_data[i]) != NRF_SUCCESS);
    }
    while(app_uart_put('\n') != NRF_SUCCESS);
}

#define SYN_MIN_CONN_INTERVAL               MSEC_TO_UNITS(100, UNIT_1_25_MS)             /**< Minimum acceptable connection interval (20 ms), Connection interval uses 1.25 ms units. */
#define SYN_MAX_CONN_INTERVAL               MSEC_TO_UNITS(500, UNIT_1_25_MS)             /**< Maximum acceptable connection interval (75 ms), Connection interval uses 1.25 ms units. */
#define SYN_SLAVE_LATENCY                   0                                           /**< Slave latency. */
#define SYN_CONN_SUP_TIMEOUT                MSEC_TO_UNITS(4000, UNIT_10_MS)             /**< Connection supervisory timeout (4 seconds), Supervision Timeout uses 10 ms units. */
static void Syn_gap_params_init()
{
	  ble_gap_conn_params_t   gap_conn_params;
  	uint32_t                err_code;
	  memset(&gap_conn_params, 0, sizeof(gap_conn_params));

    gap_conn_params.min_conn_interval = SYN_MIN_CONN_INTERVAL;
    gap_conn_params.max_conn_interval = SYN_MAX_CONN_INTERVAL;
    gap_conn_params.slave_latency     = SYN_SLAVE_LATENCY;
    gap_conn_params.conn_sup_timeout  = SYN_CONN_SUP_TIMEOUT;

    err_code = sd_ble_gap_ppcp_set(&gap_conn_params);
    APP_ERROR_CHECK(err_code);
	  printf("err_code=%d\r\n",err_code);
}
	

当用lightblue发送0x55的时候,串口接收数据

   

可以看到 返回 的错误码为0,表示设置成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值