当前位置: 首页 > news >正文

【NCS随笔】NCS如何修改连接间隔

NCS如何修改连接间隔

一、连接间隔

连接间隔(Connection Interval)是在 两个已建立连接的 Bluetooth LE 设备之间,连续两次“连接事件”开始之间的时间间隔

在一个连接中,双方大部分时间都在休眠,只在每个连接间隔到期时同时唤醒,进行一次“连接事件”(交换数据或空包,用来保持同步)
连接间隔越短:设备更频繁地唤醒通信,延迟更低、可用吞吐量更高,但功耗更高
连接间隔越长:唤醒次数减少,功耗更低,但数据延迟更大,丢包重传时等待时间也更长
在协议里,连接间隔以 1.25 ms 为单位 表示,例如 Interval = 24 就对应 24 × 1.25 ms = 30 ms

区间:定义连接的区间。主机节点多久会发送一次连接事件包到从机。连接间隔的单位为1.25毫秒。

延迟:从属延迟。从设备/外设可以跳过唤醒,直接响应主从连接事件。延迟是从机可以跳过的连接事件数量。这是为了节省从属端的电力。当没有数据时,它可以跳过一些连接事件。但睡眠时间不应过长,以免连接超时。

超时:主控在没有从机响应的情况下持续发送连接事件多久,连接才会终止
[图片上传中...(image-0uB1Wx2uQ2YOjOvP)]

二、NCS怎么修改连接间隔

2.1 通过宏配置静态修改

在prj.conf里面添加如下配置
以下配置将首选连接间隔设置为 800 * 1.25 ms ≈ 1000 ms,监督超时 4 s。
请求不会在你的请求后立即发送,有一个预设的延迟,不设置的话默认是5S,如果需要缩短或者延长时间你需要设置:CONFIG_BT_CONN_PARAM_UPDATE_TIMEOUT

CONFIG_BT_PERIPHERAL_PREF_MIN_INT=800
CONFIG_BT_PERIPHERAL_PREF_MAX_INT=800
CONFIG_BT_PERIPHERAL_PREF_LATENCY=0
CONFIG_BT_PERIPHERAL_PREF_TIMEOUT=400
CONFIG_BT_GAP_AUTO_UPDATE_CONN_PARAMS=y

2.2 通过API动态修改

获取连接间隔并且打印出来
struct bt_conn_info info;err = bt_conn_get_info(conn, &info);if (err) {LOG_ERR("bt_conn_get_info() returned %d", err);return;}double connection_interval = info.le.interval*1.25; // in ms
uint16_t supervision_timeout = info.le.timeout*10; // in ms
LOG_INF("Connection parameters: interval %.2f ms, latency %d intervals, timeout %d ms", connection_interval, info.le.latency, supervision_timeout);
设置连接,并且通过连接回调打印

主要需要添加CONFIG_FPU=y这个宏,才能打印浮点数

//设置更新参数回调
void on_le_param_updated(struct bt_conn *conn, uint16_t interval, uint16_t latency, uint16_t timeout)
{double connection_interval = interval*1.25;         // in msuint16_t supervision_timeout = timeout*10;          // in msLOG_INF("Connection parameters updated: interval %.2f ms, latency %d intervals, timeout %d ms", connection_interval, latency, supervision_timeout);
}//更新连接参数
static struct bt_conn *current_conn; 
#define INTERVAL_MIN 800
#define INTERVAL_MAX 800
static struct bt_le_conn_param *conn_param = BT_LE_CONN_PARAM(INTERVAL_MIN, INTERVAL_MAX, 0, 400); 
static int update_connection_parameters(void) 
{ 
int err = bt_conn_le_param_update(current_conn, conn_param); 
if (err) 
{LOG_ERR("Cannot update connection parameter (err: %d)", err);return err; } LOG_INF("Connection parameters update requested"); return 0; }//将回调添加到蓝牙事件里面
BT_CONN_CB_DEFINE(conn_callbacks) = {.connected = connected,.disconnected = disconnected,.recycled = recycled_cb,
.le_param_updated   = on_le_param_updated,
#ifdef CONFIG_BT_NUS_SECURITY_ENABLED.security_changed = security_changed,#endif};

打印的LOG

image

你的点赞、收藏和评论是对我最大的支持,有问题多多指教,如果有需要Nordic开发板、Nordic的芯片以及Nordic技术支持的可以在个人资料获取我的联系方式,感谢读者支持!
http://www.jsqmd.com/news/53119/

相关文章:

  • 2025年11月成都律师事务所最新推荐榜:成都金牌/离婚/知名/经济纠纷律师事务所与客户口碑深度解析!
  • Windows Dirty Pipe漏洞CVE-2022-22715分析与利用
  • 2025 年上海影棚出租公司最新推荐榜,聚焦技术实力与市场口碑深度解析上海汽车摄影棚出租 / 上海汽车影棚出租有灯箱 / 上海汽车影棚出租有转盘 / 上海汽车影棚出租 / 上海直播影棚出租公司推荐
  • 算法竞赛备考冲刺必刷题(C++) | 洛谷 B3639 T2点亮灯笼 - 详解
  • 2025年金蝶ERP哪家代理商能承接海外项目实施交付——上海宝蝶首屈一指
  • 医疗AI受非临床信息干扰研究
  • 人机交互BS结构界面 -
  • Solon AI 开发学习4 - chat - 模型实例的构建和简单调用
  • 2025 年快速退火炉厂家最新推荐榜,技术实力与市场口碑深度解析,呈现高性能设备优质品牌晶圆 / 高温 / 桌面 / 半自动 / 全自动 / 芯片 / 硅片 / RTP 快速退火炉公司推荐
  • 二进制漏洞扫描技术一览
  • 详细介绍:论文阅读笔记——自注意力机制
  • conda虚拟环境的创建与删除
  • CMTI测试为何成为半导体隔离器件的“必考题”?苏州永创PPS-CMTIX系统给出专业答案 - FORCREAT
  • 约会急救包:幻颜之约如何让你由内而外自信登场
  • 泳池后的安心:幻颜之约游泳后私处护理流程
  • 数组的拼接
  • 泳池、温泉后必做?幻颜之约的“水环境”私护指南
  • 数组的重塑
  • 瑜伽、健身达人的私护清单:幻颜之约应对汗湿与摩擦
  • 2025 年接触角测量仪厂家最新推荐榜,深度剖析品牌技术实力与市场口碑及产品适配性座滴法 / 动态 / 静态 / 全自动 / 水滴 / 高温 / 晶圆 / 便携式接触角测量仪公司推荐
  • mdns shell
  • 体育赛场竞风流 热血竞技展锋芒
  • 竞技热血永不熄 体育赛场铸传奇
  • 2025 年干式超声波除尘厂家最新推荐榜,聚焦技术实力与市场口碑深度解析USC / 非接触式 / 无损伤 / 锂电极片 / 玻璃盖板 / 显示玻璃 / 薄膜 / PCB / 镜头干式超声波除尘公司推荐
  • 2025 年等离子设备厂家最新推荐榜,技术实力与市场口碑深度解析,助力企业精准选型表面处理 / 镀膜 / 封装处理 / 清洗 / 表面活化 / 表面改性设备 / 真空等离子清洗设备公司推荐
  • 音乐模式切换下一曲造成灯光异常问题
  • 洛谷 P3386:【模板】二分图最大匹配 ← 匈牙利算法
  • minidot软件的安装
  • 【Linux】编辑器vim的使用和理解gcc编译器 - 详解
  • UWB汽车钥匙介绍