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,表示设置成功。
nrf51822 --- 动态修改连接间隔相关推荐
- NRF51822蓝牙服务(9)——动态修改设备的名称
前言 很多时候我们希望能够通过手机动态修改设备的MAC地址.配对密码或者蓝牙设备信息等,其实原理上都是可以实现的.大概思路其实就是把我们需要修改的内容发送到FLASH中保存,然后再用FLASH中的内容 ...
- BLE-NRF51822教程11-手机动态修改设备名
该教程讲解如何实现用手机来动态修改设备名,达到手机连接设备后修改设备名称,然后断开连接再扫描能够看到新的设备名. 教程基于sdk9.0 下的uartdemo,如下目录中xxx\Keil_v5\ARM\ ...
- maven 根据P参数值打包动态修改properties文件中值或一定properties
http://www.tuicool.com/articles/Mj2EzqN 由于本人 最近忙着公司事情,昨天没有写博客,今天就继续写吧 需求:由于最近开发clover项目 ,没有使用spri ...
- 求你了,别再随便打日志了,教你动态修改日志级别!
GitHub 19k Star 的Java工程师成神之路,不来了解一下吗! 之前写过一篇文章<明明有自动清理,日志还是把我的服务干爆了!>,介绍过一次大促故障,是因为日志量激增,导致服务器 ...
- 动态功能连接:前景、问题和解释
大脑必须跨多个时间尺度动态整合.协调和响应内部和外部刺激.利用功能磁共振(fMRI)对大脑活动进行无创测量,极大地促进了我们对支持这些基本脑功能特征的大规模功能组织的理解.以往静息态fMRI研究的结论 ...
- 动态功能连接组:最新技术和前景
要点 ·在动态功能连接表征方面付出了巨大的努力. ·我们详尽地描述了现有的方法.它们的优点和陷阱. ·我们讨论了未来的分析方向:逐帧分析和时间建模. ·逐帧分析从事件中提取有意义的功能网络. ·时间建 ...
- Unity 动态修改URP自带材质参数
Unity 动态修改URP自带材质参数 前言 代码 Emission 参考连接 前言 修改此处默认参数 代码 Emission 启用自发光效果的代码是 material.EnableKeyword(& ...
- UEFI-ASL动态修改ACPI表
UEFI-ASL动态修改ACPI表 文章目录 UEFI-ASL动态修改ACPI表 简述ACPI ACPI是什么? ACPI的组成及使用? ACPI的优点? ACPI的详细功能 ASL语言 ASL基本准 ...
- Simulink如何在线修改模块参数 (动态修改模块参数)
文章目录 1. 原由 2. 方法 3. DCP模块 4. 使用 5. 例程 5.1 DCP模块实现可变增益 5.2 DCP模块实现正弦扫频信号 5.3 DCP模块实现时变传递函数 5.4 DCP模块实 ...
最新文章
- WF4.0入门系列1——创建一个简单的工作流
- Lambda架构在有赞广告平台的应用与演进
- Robot Framework 自动化框架 - 定制自己的library
- APDPlat的系统启动和关闭流程剖析
- Java笔记-concurrent集合及线程池
- ERRORS:*: (auth.E003) ‘User.username‘ must be unique because it is named as the ‘USERNAME_FIELD
- node-webki NATIVE UI API概览
- 纷享逍客宣布完成E+轮融资 长山兴资本领投
- Linux内核的文档管理工具:Sphinx
- 取出Cookie中的中文显示乱码解决方法。经验证第三种方法有效。
- 笔记6:Django基础
- Android开机程序(自定义哦!)
- 如何通过GoLand进行Debug
- 数学建模模板(让你也能写论文的模板)
- python继电器控制
- QQ附近人/微信附近的人功能被限制使用解决办法
- 四川大学计算机专业贵州分数线,四川大学2019贵州录取分数线
- Captain Flint and a Long Voyage
- DMA驱动框架流程编写
- 添加网络计算机后打印乱码,Windows7系统打印机无法打印出现乱码的解决方法
热门文章
- 数据库的三级模式结构和两级映像
- Chrome 扩展插件:如何开始一个插件的开发
- 关于用鲁大师对显卡性能进行评测时抛出“评测中切换页面”的异常的解决方案。
- 七宗罪:我们是如何错误预估人工智能的
- java 不生成文件下载_java – 浏览器不生成文件下载对话框
- 有关孙卫琴的个人网站
- 输入远程计算机地址后,不提示输入用户名密码直接进入计算机怎么回事,解决Windows远程桌面连接每次都提示输入密码的问题...
- 蓝旭前端预习5之DOM(文档对象模型)
- 如何批量修改文件夹中的照片名称
- 【拼多多】新手卖家的启蒙贴 ,如何快乐的做图,快乐的开店