概述
在嵌入式蓝牙开发中,特别是针对STM32WB系列,修改或配置蓝牙设备地址是常见的需求。不论是为了实现特定的测试、满足隐私要求,还是为了区分开发和生产设备,对蓝牙地址的定制化处理都是至关重要的。本文将重点介绍如何利用aci_hal_write_config_data函数来成功地修改STM32WB的蓝牙地址。我们会详细探讨该函数的工作原理、所需的参数以及实际操作步骤,确保读者能够快速、高效地完成相关任务。
最近在弄ST和瑞萨RA的课程,需要样片的可以加群申请:615061293 。
硬件准备
首先需要准备一个开发板,这里我准备的是WB55RG 的开发板:
视频教学
[https://www.bilibili.com/video/BV1sN411v7ag/
样品申请
[https://www.wjx.top/vm/OhcKxJk.aspx#m/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地址如下。
-
蓝牙
+关注
关注
114文章
5765浏览量
169777 -
BLE
+关注
关注
12文章
652浏览量
59327 -
地址
+关注
关注
1文章
31浏览量
10748 -
STM32WB55
+关注
关注
0文章
25浏览量
1304
发布评论请先 登录
相关推荐
评论