
套件概述 在嵌入式蓝牙开发中,特别是针对STM32WB系列,修改或配置蓝牙设备地址是常见的需求。不论是为了实现特定的测试、满足隐私要求,还是为了区分开发和生产设备,对蓝牙地址的定制化处理都是至关重要的。本文将重点介绍如何利用aci_hal_write_config_data函数来成功地修改STM32WB的蓝牙地址。我们会详细探讨该函数的工作原理、所需的参数以及实际操作步骤,确保读者能够快速、高效地完成相关任务。 ![]() 选择芯片型号 ![]() 配置时钟源 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 ![]() 设置工程信息 ![]() 工程文件设置 工程文件设置 设置公共地址的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, 0**, 0xCC, 0xBB, 0xAA)覆盖它。 生成/设置静态随机地址:根据条件编译标志来确定是使用预定义的静态随机地址还是使用随机数生成器产生的地址。设置了正确的格式后,通过aci_hal_write_config_data将随机地址写入BLE控制器。 ![]() uint8_t bdaddr[] = {0xFF, 0xEE, 0**, 0xCC, 0xBB, 0xAA}; ret = aci_hal_write_config_data(CONFIG_DATA_PUBADDR_OFFSET, CONFIG_DATA_PUBADDR_LEN, bdaddr); 结果演示 通过手机和STM32WB建立连接和断开连接可以查看到BLE地址如下。 ![]() 转载自: 记帖 如有侵权请联系删除 |
【NUCLEO-WBA65RI评测】使用最新STM32Cube Clang/LLVM工具链开发一个blink
【NUCLEO-WBA65RI评测】2.连接板卡,读取设备数据
【NUCLEO-WBA65RI评测】数据吞吐量例程测试
【STM32团队】STM32Cube Clang/LLVM工具链使用更新CubeMX
【NUCLEO-WBA65RI评测】基本操作
【NUCLEO-WBA65RI评测】开箱
兔哥的BLE【002】-WB09最小系统板PCB设计
兔哥的BLE【001】-WB09最小系统板原理图绘制
【NUCLEO-WB09KE评测】+3.蓝牙广播
Nucleo-STM32WB09KE测评-蓝牙调试并使用OLED显示数据