0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

TedLee 来源:jf_29076475 2025-12-28 15:01 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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 ms
    uint16_t supervision_timeout = timeout*10;          // in ms
    LOG_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

在这里插入图片描述

你的点赞、收藏和评论是对我最大的支持,有问题多多指教,如果有需要Nordic开发板、Nordic的芯片以及Nordic技术支持的可以在个人资料获取我的联系方式,感谢读者支持!
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • BlueTooth
    +关注

    关注

    3

    文章

    238

    浏览量

    64101
  • API
    API
    +关注

    关注

    2

    文章

    2506

    浏览量

    67135
  • NCS
    NCS
    +关注

    关注

    1

    文章

    22

    浏览量

    9425
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    NCS是否与Intel Aero Drone兼容?

    你好,考虑到我们可以使用带有Raspberry Pi的Movidius神经计算棒(NCS),我可以在英特尔Aero RTF无人机上安装NCS吗?谢谢卡斯马以上来自于谷歌翻译以下为原文Hello
    发表于 10-15 11:40

    在STM32MP1上BK1_NCS应如何连接到板载BK2_NCS上呢

    文章中的声明,主要是为了确保将 QuadSPI 置于双组模式不需要缩短 BK1_NCS 和 BK2_NCS 线。wiki 上的声明可能具有误导性。在 STM32MP1 上,当从串行 NOR 闪存启动时,STM32 MPU Wiki 指出“在双模式下,BK1_
    发表于 12-20 06:47

    NCS29001 LED驱动器 单通道

    电子发烧友网为你提供()NCS29001相关产品参数、数据手册,更有NCS29001的引脚图、接线图、封装手册、中文资料、英文资料,NCS29001真值表,NCS29001管脚等资料,
    发表于 04-18 21:20

    NCS3402 比较器 双通道 低功耗

    电子发烧友网为你提供()NCS3402相关产品参数、数据手册,更有NCS3402的引脚图、接线图、封装手册、中文资料、英文资料,NCS3402真值表,NCS3402管脚等资料,希望可以
    发表于 04-18 21:19

    NCS2302 带发送/结束检测的耳机检测接口

    电子发烧友网为你提供()NCS2302相关产品参数、数据手册,更有NCS2302的引脚图、接线图、封装手册、中文资料、英文资料,NCS2302真值表,NCS2302管脚等资料,希望可以
    发表于 04-18 21:19

    NCS2300 耳机检测接口

    电子发烧友网为你提供()NCS2300相关产品参数、数据手册,更有NCS2300的引脚图、接线图、封装手册、中文资料、英文资料,NCS2300真值表,NCS2300管脚等资料,希望可以
    发表于 04-18 21:19

    NCS2220 比较器 双通道 低电压

    电子发烧友网为你提供()NCS2220相关产品参数、数据手册,更有NCS2220的引脚图、接线图、封装手册、中文资料、英文资料,NCS2220真值表,NCS2220管脚等资料,希望可以
    发表于 04-18 21:18
    <b class='flag-5'>NCS</b>2220 比较器 双通道 低电压

    NCS2202A 比较器,低压,漏极开路

    电子发烧友网为你提供()NCS2202A相关产品参数、数据手册,更有NCS2202A的引脚图、接线图、封装手册、中文资料、英文资料,NCS2202A真值表,NCS2202A管脚等资料,
    发表于 04-18 21:18

    NCS2202 比较器 低压 漏极开路

    电子发烧友网为你提供()NCS2202相关产品参数、数据手册,更有NCS2202的引脚图、接线图、封装手册、中文资料、英文资料,NCS2202真值表,NCS2202管脚等资料,希望可以
    发表于 04-18 21:17
    <b class='flag-5'>NCS</b>2202 比较器 低压 漏极开路

    NCS5651 的散热注意事项

    NCS5651 的散热注意事项
    发表于 11-14 21:08 1次下载
    <b class='flag-5'>NCS</b>5651 的散热注意事项

    NCS2211 音频设计说明

    NCS2211 音频设计说明
    发表于 11-14 21:08 1次下载
    <b class='flag-5'>NCS</b>2211 音频设计说明

    NCS36510 编程手册

    NCS36510 编程手册
    发表于 11-14 21:08 0次下载
    <b class='flag-5'>NCS</b>36510 编程手册

    NCS怎么添加.c.h文件到工程

    NCS随笔】 SEGGER添加方式 在介绍NCS工程之前,我们先看看大家熟悉的SEGGER工程(Keil同理): 左边的项目栏可以看到工程的配置,通过点击 User Include
    的头像 发表于 06-27 14:48 1256次阅读
    <b class='flag-5'>NCS</b>怎么添加.c.h文件到工程

    NCS随笔NCS使用CJSON库

    NCS随笔NCS使用CJSON库 这个文章讲一下在NCS上面如何使用JSON库,我使用Hello_world例程添加库 宏的配置 CONFIG_LOG =y
    的头像 发表于 08-13 15:12 796次阅读
    【<b class='flag-5'>NCS</b><b class='flag-5'>随笔</b>】<b class='flag-5'>NCS</b>使用CJSON库

    NCS随笔】如何进入system_off深度睡眠模式以及配置GPIO中断唤醒

    NCS随笔】如何进入system_off深度睡眠模式以及配置GPIO中断唤醒 本文章主要是讲解NCS下面使用nRF54L15如何进入system_off模式,以及如何配置通过按键唤醒 一、如何进
    的头像 发表于 09-29 00:56 1022次阅读
    【<b class='flag-5'>NCS</b><b class='flag-5'>随笔</b>】如何进入system_off深度睡眠模式以及配置GPIO中断唤醒