STM32WB55开发(2)----修改蓝牙地址

2023-09-03 22:25:52

概述

在嵌入式蓝牙开发中,特别是针对STM32WB系列,修改或配置蓝牙设备地址是常见的需求。不论是为了实现特定的测试、满足隐私要求,还是为了区分开发和生产设备,对蓝牙地址的定制化处理都是至关重要的。本文将重点介绍如何利用aci_hal_write_config_data函数来成功地修改STM32WB的蓝牙地址。我们会详细探讨该函数的工作原理、所需的参数以及实际操作步骤,确保读者能够快速、高效地完成相关任务。
最近在弄ST和瑞萨RA的课程,需要样片的可以加群申请:615061293 。

硬件准备

首先需要准备一个开发板,这里我准备的是WB55RG 的开发板:
在这里插入图片描述

视频教学

https://www.bilibili.com/video/BV1sN411v7ag/

STM32WB55开发(2)----修改蓝牙地址

样品申请

https://www.wjx.top/vm/OhcKxJk.aspx#

完整代码下载

https://download.csdn.net/download/qq_24312945/88295322

选择芯片型号

在这里插入图片描述

配置时钟源

HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用外置的时钟源,故都选择Crystal/Ceramic Resonator选项,如下所示:
在这里插入图片描述

配置时钟树

在这里插入图片描述

RTC时钟配置

在这里插入图片描述
RFWKP时钟配置

在这里插入图片描述

查看开启STM32_WPAN条件

可以看到,需要开启RF、RTC、RCC、IPCC、HSEM。
在这里插入图片描述

配置HSEM

硬件信号量(HSEM)模块用于管理多个进程之间共享的访问权限和资源同步。
开启HSEM如下。
在这里插入图片描述

配置IPCC

通信控制器(IPCC)模块的主要用于cpu之间的信号消息交换。
开启如下所示。

在这里插入图片描述

配置RTC

在这里插入图片描述

启动RF

在这里插入图片描述

开启蓝牙

在这里插入图片描述

配置为自定义模板。
在这里插入图片描述

命名设备名

在这里插入图片描述

配置BLE GATT

在这里插入图片描述

配置SVC
在这里插入图片描述

设置工程信息

在这里插入图片描述

工程文件设置

在这里插入图片描述

修改置BLE设备公共地址

设置公共地址的ACI命令为:
tBleStatus aci_hal_write_config_data(uint8_t offset, uint8_t len, const uint8_t *val).
在这里插入图片描述

修改方式如下所示。

在这里插入图片描述

Ble_Hci_Gap_Gatt_Init

这段代码主要用于初始化STM32WB系列的蓝牙(BLE)相关功能。

在这里插入图片描述

下面选中的函数可以修改BLE设备公共地址。
设置BLE公共地址:首先,获取BLE默认地址BleGetBdAddress,然后通过aci_hal_write_config_data函数使用预定义的地址(0xFF, 0xEE, 0xDD, 0xCC, 0xBB, 0xAA)覆盖它。
生成/设置静态随机地址:根据条件编译标志来确定是使用预定义的静态随机地址还是使用随机数生成器产生的地址。设置了正确的格式后,通过aci_hal_write_config_data将随机地址写入BLE控制器。

在这里插入图片描述

	uint8_t bdaddr[] = {0xFF, 0xEE, 0xDD, 0xCC, 0xBB, 0xAA};
  ret = aci_hal_write_config_data(CONFIG_DATA_PUBADDR_OFFSET, CONFIG_DATA_PUBADDR_LEN, bdaddr);

结果演示

通过手机和STM32WB建立连接和断开连接可以查看到BLE地址如下。

在这里插入图片描述

更多推荐

预处理代码

一、缺失值处理删除缺失值:data1=data.dropna()#丢弃缺失值#dropna()删除缺失值所在行(axis=0)或列(axis=1),默认为axis=0补全示例数据:importpandasaspdimportnumpyasnpdata=pd.DataFrame({'name':['Bob','Mary'

一篇搞定,Kettle详细教程

文章目录第一章Kettle概述1.1Kettle发展历程1.2Kettle简介1.3Kettle相关俗语1.4Kettle设计与组成1.5Kettle功能模块1.6Kettle的执行Transformation(转换)1.7Kettle商业和社区版区别1.8数据集成与ETL1.9ETL工具比较第二章Kettle安装部署

【python基础】编写/运行hello world项目

1.编写helloworld项目编程界每种语言的第一个程序往往都是输出helloworld。因此我们来看看,如何用Python输出helloworld。1.如果你是初学者,main.py中的代码暂时是无法看懂的,所以可以把main中的源代码直接删除。如下所示这里我们要学习python的第一个知识点,print输出函数。

机器学习(14)---逻辑回归(含手写公式、推导过程和手写例题)

逻辑回归一、逻辑回归概述二、模型、策略和优化(手写)三、w和b的梯度下降公式推导四、例题分析4.1题目4.2解答一、逻辑回归概述1.逻辑回归也称作logistic回归分析,是一种广义的线性回归分析模型,属于机器学习中的监督学习。其推导过程与计算方式类似于回归的过程,但实际上主要是用来解决二分类问题(当然也可以解决多分类

项目实战— pytorch搭建CNN处理MNIST数据集

项目文件夹介绍项目文件夹CNN_MNIST_practice文件夹是整个项目的文件夹,里面存放了六个子文件夹以及四个.py程序,接下来我们分别来介绍这些文件的内容。其中minist_all_CPU.py是CPU版本的模型训练+测试程序,而minist_all_GPU.py则是GPU版本的模型训练+测试程序。minist

Spring MyBatis【一篇搞定】

SpringMyBatis​SpringMyBatis在Spring中是一个非常重要的知识,将前端传递的数据存储起来,或者查询数据库⾥⾯的数据;简单来说MyBatis是更简单完成程序和数据库交互的⼯具,也就是更简单的操作和读取数据库⼯具。文章目录SpringMyBatis一、MyBatis简介二、学习MyBatis重要

用 Github Codespaces 免费搭建本地开发测试环境

如何丝滑地白嫖一个本地开发环境?怎么新建一个代码空间?1:通过Github网页新建2:通过VSCode插件新建为代码创建相应的开发测试环境如何丝滑地白嫖一个本地开发环境?使用Codespaces为开发者解决这样的痛点:为项目设置和维护一个或一组开发工作站。在“第一次提交”发生之前浪费的时间。开发工作站之间的配置/工具/

浅谈C++|模板篇

一.模板模板概念模板就是建立通用的模具,大大提高复用性模板的特点:1.模板不可以直接使用,它只是一个框架2.模板的通用并不是万能的·C++另一种编程思想称为泛型编程,主要利用的技术就是模板。·C++提供两种模板机制:函数模板和类模板二.函数模板函数模板作用:建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用

校园网络技术需求分析

路由技术:路由协议工作在OSI参考模型的第3层,因此它的作用主要是在通信子网间路由数据包。路由器具有在网络中传递数据时选择最佳路径的能力。除了可以完成主要的路由任务,利用访问控制列表(AccessControlList,ACL),路由器还可以用来完成以路由器为中心的流量控制和过滤功能。在本工程设计中,内网用户不仅通过路

慢SQL原因分析之索引失效 | 京东物流技术团队

现象最近收到一个慢sql工单,慢sql大概是这样:“selectxxxfromtabelwheretype=1”。咦,type字段明明有索引啊,为啥是慢sql呢?原因通过执行explain,发现实际上数据库执行了全表扫描,从而被系统判定为慢sql。这时有一定开发经验的同事会说:“字段区分度不够,这种字段作单独索引是没有

Nest.js 入门基础

目录安装入门文档小技巧异步方法优化使用Fastify框架Open-API(Swagger)E2ETestingLoggerGraphql代码仓库:https://github.com/nestjs/nest官方文档:https://docs.nestjs.com/中文文档:https://docs.nestjs.cn/

热文推荐