在嵌入式蓝牙开发中,特别是针对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选项,如下所示:
RFWKP时钟配置
可以看到,需要开启RF、RTC、RCC、IPCC、HSEM。
硬件信号量(HSEM)模块用于管理多个进程之间共享的访问权限和资源同步。
开启HSEM如下。
通信控制器(IPCC)模块的主要用于cpu之间的信号消息交换。
开启如下所示。
配置为自定义模板。
命名设备名
配置BLE GATT
配置SVC
设置公共地址的ACI命令为:
tBleStatus aci_hal_write_config_data(uint8_t offset, uint8_t len, const uint8_t *val).
修改方式如下所示。
这段代码主要用于初始化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地址如下。
全部0条评论
快来发表一下你的评论吧 !