nrf52832 低功耗蓝牙 广播

news2024/11/18 9:47:17

nrf52832 低功耗蓝牙5.x


文章目录

  • nrf52832 低功耗蓝牙5.x
    • 广播
    • 广播的特点:
  • 一、修改代码演示
    • 广播初始化
    • 修改 广播名称
    • 修改广播时间
    • 修改广播内容和参数
  • 总结


广播

广播是低功耗蓝牙通信的基础,向外广播信息,等待被连接;
广播包含了设备的信息,如(广播名称,服务UUID等)
主机搜索到广播后发起连接请求。

广播的特点:

广播结构
在这里插入图片描述
广播信道
在这里插入图片描述
广播间隔
广播间隔通常:20ms至10.24s;(必须是1.25ms的整数倍)
在这里插入图片描述
广播事件分类
在这里插入图片描述
————————————————————————————————
在这里插入图片描述
在这里插入图片描述


一、修改代码演示

广播初始化

在这里插入图片描述

/**@brief Function for initializing the Advertising functionality.
 */
static void advertising_init(void)
{
    uint32_t               err_code;
    ble_advertising_init_t init;

    memset(&init, 0, sizeof(init));
    //显示完整的广播名称
    init.advdata.name_type          = BLE_ADVDATA_FULL_NAME;
	  //显示图标: false 不显示 ;  true 显示
    init.advdata.include_appearance = false;
	  //低功耗蓝牙模式,不支持有限可发现模式和BR/EDR
    init.advdata.flags              = BLE_GAP_ADV_FLAGS_LE_ONLY_LIMITED_DISC_MODE;
    //服务UUID数
    init.srdata.uuids_complete.uuid_cnt = sizeof(m_adv_uuids) / sizeof(m_adv_uuids[0]);
    init.srdata.uuids_complete.p_uuids  = m_adv_uuids;
    
    init.config.ble_adv_fast_enabled  = true;
	  //广播间隔
    init.config.ble_adv_fast_interval = APP_ADV_INTERVAL;
	  //广播超时时间
    init.config.ble_adv_fast_timeout  = APP_ADV_DURATION;
	 //广播事件的回调函数
    init.evt_handler = on_adv_evt;

    err_code = ble_advertising_init(&m_advertising, &init);
    APP_ERROR_CHECK(err_code);

    ble_advertising_conn_cfg_tag_set(&m_advertising, APP_BLE_CONN_CFG_TAG);
}

修改 广播名称

在这里插入图片描述
在这里插入图片描述
修改宏定义修改名称
在这里插入图片描述

#define DEVICE_NAME                     "ble name"                               /**< Name of device. Will be included in the advertising data. */

修改广播时间

当广播超时后进入慢广播模式

/**@brief Function for initializing the Advertising functionality.
 */
static void advertising_init(void)
{
    uint32_t               err_code;
    ble_advertising_init_t init;

    memset(&init, 0, sizeof(init));
    //显示完整的广播名称
    init.advdata.name_type          = BLE_ADVDATA_FULL_NAME;
	  //显示图标: false 不显示 ;  true 显示
    init.advdata.include_appearance = false;
	  //一般可发现模式
    init.advdata.flags              = BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE ;
    //服务UUID数
    init.srdata.uuids_complete.uuid_cnt = sizeof(m_adv_uuids) / sizeof(m_adv_uuids[0]);
    init.srdata.uuids_complete.p_uuids  = m_adv_uuids;
    
    init.config.ble_adv_fast_enabled  = true;
	  //广播间隔
    init.config.ble_adv_fast_interval = APP_ADV_INTERVAL;
	  //广播超时时间
    init.config.ble_adv_fast_timeout  = APP_ADV_DURATION;//设置为0可一直保持广播模式


    init.config.ble_adv_slow_enabled =true; //增加慢广播 
		init.config.ble_adv_slow_interval = 1600;// 广播间隔1s
		init.config.ble_adv_slow_timeout =0; //无超时时间
		 
			 //广播事件的回调函数
    init.evt_handler = on_adv_evt;
		
    err_code = ble_advertising_init(&m_advertising, &init);
    APP_ERROR_CHECK(err_code);

    ble_advertising_conn_cfg_tag_set(&m_advertising, APP_BLE_CONN_CFG_TAG);
}

在这里插入图片描述

修改广播内容和参数

/**@brief Function for initializing the Advertising functionality.
 */
static void advertising_init(void)
{
    uint32_t               err_code;
    ble_advertising_init_t init;
	  ble_advdata_manuf_data_t my_advdata_manuf_data_t;
	  static uint8_t my_advdata_data[27]={0x00,0x11,0x22,0x33,0x44};
 

    memset(&init, 0, sizeof(init));
    //显示完整的广播名称
    init.advdata.name_type          = BLE_ADVDATA_FULL_NAME;
	  //显示图标: false 不显示 ;  true 显示
    init.advdata.include_appearance = false;
	  //一般可发现模式
    init.advdata.flags              = BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE ;
    //服务UUID数
    init.srdata.uuids_complete.uuid_cnt = sizeof(m_adv_uuids) / sizeof(m_adv_uuids[0]);
    init.srdata.uuids_complete.p_uuids  = m_adv_uuids;
    
		//添加厂商数据
		my_advdata_manuf_data_t.company_identifier =0x5257;
		my_advdata_manuf_data_t.data.p_data=my_advdata_data;
		my_advdata_manuf_data_t.data.size=5;
		init.advdata.p_manuf_specific_data = &	my_advdata_manuf_data_t;
		
    init.config.ble_adv_fast_enabled  = true;
	  //广播间隔
    init.config.ble_adv_fast_interval = APP_ADV_INTERVAL;
	  //广播超时时间
    init.config.ble_adv_fast_timeout  = APP_ADV_DURATION;


    init.config.ble_adv_slow_enabled =true; //增加慢广播 
		init.config.ble_adv_slow_interval = 1600;// 广播间隔1s
		init.config.ble_adv_slow_timeout =0; //无超时时间
		 
			 //广播事件的回调函数
    init.evt_handler = on_adv_evt;
		
    err_code = ble_advertising_init(&m_advertising, &init);
    APP_ERROR_CHECK(err_code);

    ble_advertising_conn_cfg_tag_set(&m_advertising, APP_BLE_CONN_CFG_TAG);
		

}

在这里插入图片描述

手动停止广播和开启广播

    err_code = sd_ble_gap_adv_stop(m_advertising.adv_handle);
    APP_ERROR_CHECK(err_code);    
  err_code =ble_advertising_start(&m_advertising,BLE_ADV_MODE_FAST);
  APP_ERROR_CHECK(err_code);

总结

例如:以上就是今天要讲的内容,本文仅仅简单介绍了广播的实现使用,而Nordic提供了大量能使我们快速便捷地处理数据的函数和方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1121011.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

浅谈 docker run 命令中的 -i -t 和 -d 选项

以 docker Ubuntu 镜像为例&#xff0c;ubuntu镜像启动时默认执行的命令是"/bin/bash"。 文章目录 不带任何选项带 -i 选项带 -i 和 -t 选项-d 选项 不带任何选项 rootubuntu20:~# docker run ubuntu:20.04 rootubuntu20:~# docker ps CONTAINER ID IMAGE …

1997-2017年各省能源投入数据(万吨标准煤)

1997-2017年各省能源投入数据&#xff08;万吨标准煤&#xff09; 1、时间&#xff1a;1997-2017年 2、来源&#xff1a;中国统计年鉴 3、范围&#xff1a;30个省 4、指标&#xff1a;能源投入&#xff08;各省8种能源消费总量计算得出&#xff09;&#xff08;万吨标准煤&…

Day 08 python学习笔记

函数 作用域 作用域&#xff1a;变量的访问权限 全局变量与局部变量 声明在函数外边的变量----全局变量 ----》全局作用域 函数内部的变量------局部变量 ----》局部作用域顶格创建的函数也是全局的 例&#xff1a; a 100def test_01():a 0b 110print…

解决因d3dx9_30.dll丢失程序无法运行,电脑缺失d3dx9_30.dll报错解决方案

我们的生活和工作都离不开电脑。然而&#xff0c;电脑作为一种复杂的工具&#xff0c;也会出现各种各样的问题。其中&#xff0c;丢失d3dx9_30.dll文件是一个常见的问题。d3dx9_30.dll是DirectX的动态链接库文件&#xff0c;如果丢失或损坏&#xff0c;可能会导致许多软件和游戏…

Kettle查询表数据循环到目标表

简介&#xff1a;Kettle工具有一种业务场景是动态查询数据库中某张表的某个字段&#xff0c;将该字段当做循环变量&#xff0c;循环整个作业。下面就是记录该步骤。 一、思路 首先生产环境中我们需要做的一个业务就是&#xff1a; 按品牌循环执行&#xff1a;step3step4&…

LeetCode 2316. 统计无向图中无法互相到达点对数【图,BFS,DFS,并查集】1604

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

raven2 靶机

一.信息收集 靶机的信息收集就是网段 2.使用nmap扫描端口和真实IP nmap 网段 扫描ip和端口 二.查找漏洞 可以查看版本 找到利用信息 cms 以及 apache 组件漏洞 组件的目录漏洞 找到了 一般爆破不出来 敏感目录爆破 wordpress的 dirb --url 网址 直接找…

[C++]类型转换

一、C语言中的类型转换 在C语言中&#xff0c;如果赋值运算符左右两侧类型不同&#xff0c;或者形参与实参类型不匹配&#xff0c;或者返回值类型与 接收返回值类型不一致时&#xff0c;就需要发生类型转化。 C语言中总共有两种形式的类型转换&#xff1a;隐式类型转换和显式…

HBuilder插件推荐

整理一下我觉得好用的插件&#xff0c;后期可能会有更改 eslint-js eslint-plugin-vue Prettier scss/sass编译 右键复制vue页面路径&#xff0c;主要用于快速复制vue页面的路径到浏览器

HashMap的运用小练习

public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("jack",650);hashMap.put("tom",1200);hashMap.put("smith",2900);System.out.println(hashMap);//将jack的工资更改为2600hashMap.put("jack",…

分发糖果[困难]

优质博文&#xff1a;IT-BLOG-CN 一、题目 n个孩子站成一排。给你一个整数数组ratings表示每个孩子的评分。你需要按照以下要求&#xff0c;给这些孩子分发糖果&#xff1a; 【1】每个孩子至少分配到1个糖果。 【2】相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩…

ATPCS:ARM-Thumb程序调用的基本规则

为了使单独编译的c文件和汇编文件之间能够互相调用&#xff0c;需要制定一系列的规则&#xff0c;AAPCS就是ARM程序和Thumb程序中子程序调用的基本规则。 1、ATPCS概述 ATPCS规定了子程序调用过程中寄存器的使用规程、数据站的使用规则、参数的传递规则。为了适应一些特殊的需…

MIT 6.S081 FALL 2020环境搭建

大家好&#xff0c;我叫徐锦桐&#xff0c;个人博客地址为www.xujintong.com。平时记录一下学习计算机过程中获取的知识&#xff0c;还有日常折腾的经验&#xff0c;欢迎大家来访。 MIT6.S081 Operating System Engineering 是麻省理工学院计算机科学本科的中级课程&#xff0c…

openGauss学习笔记-106 openGauss 数据库管理-管理用户及权限-管理员

文章目录 openGauss学习笔记-106 openGauss 数据库管理-管理用户及权限-管理员106.1 初始用户106.2 系统管理员106.3 安全管理员106.4 审计管理员106.5 监控管理员106.6 运维管理员106.7 安全策略管理员 openGauss学习笔记-106 openGauss 数据库管理-管理用户及权限-管理员 10…

按键中断控制LED灯亮灭

EXTI—外部中断/事件控制器 EXTI&#xff08;External interrupt/event controller&#xff09;—外部中断/事件控制器&#xff0c;管理了控制器的 20 个中断/事 件线。每个中断/事件线都对应有一个边沿检测器&#xff0c;可以实现输入信号的上升沿检测和下降沿的 检测。EXTI可…

MyBatis整合Spring的原理分析

MyBatis整合Spring的原理分析 http://mybatis.org/spring/zh/index.html 1. MyBatis整合Spring实现 我们先来实现MyBatis和Spring的整合操作。1.1 添加相关的依赖 <dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifa…

面试官:说说Vue 3.0中Treeshaking特性?

一、是什么 Tree shaking 是一种通过清除多余代码方式来优化项目打包体积的技术&#xff0c;专业术语叫 Dead code elimination 简单来讲&#xff0c;就是在保持代码运行结果不变的前提下&#xff0c;去除无用的代码 如果把代码打包比作制作蛋糕&#xff0c;传统的方式是把鸡…

石油数字孪生可视化管理平台,推动石油行业数字化转型与智能化应用

随着科技的飞速发展&#xff0c;如何利用先进的信息技术全面增强智能制造过程中感知、处理、决策、执行的能力&#xff0c;成为当前石油化工信息化数字化变革的研究重点&#xff0c;而数字孪生可视化管理平台具有高效的决策分析特点&#xff0c;将有力地推动数字化转型与智能化…

函数模板和类模板实例介绍

模板&#xff1a;将类型定义为参数&#xff0c;实现类型参数化&#xff0c;实现代码重用。 一、函数模板 格式&#xff1a; &#xff08;template-声明模板的关键字&#xff0c;class修饰形参类型&#xff09; template <class / typename T> 返回类型 函数名&#xff…