概述
在嵌入式藍牙開發中,特別是針對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文章
5866瀏覽量
170972 -
BLE
+關注
關注
12文章
670瀏覽量
59510 -
地址
+關注
關注
1文章
32瀏覽量
10803 -
STM32WB55
+關注
關注
0文章
26瀏覽量
1359
發布評論請先 登錄
相關推薦
評論