如何快速且經濟高效地將藍牙5.3添加到邊緣物聯網設計中


作者:Jens Wallmann
無情的競爭給物聯網 (IoT) 設備開發商帶來了壓力,要求他們快速推出新的創新產品,同時降低成本并確保穩定、低功耗和安全的通信。傳統的智能物聯網終端節點包括用于實現邊緣處理的微控制器單元 (MCU) 和用于連接的無線 IC。當設計團隊缺乏有效解決方案所需的射頻 (RF) 技能時,就會出現問題。
為了按時完成、認證無線物聯網設計并將其投入批量生產,開發人員需要提高開發流程的效率。提高開發過程效率的一種方法是使用具有集成藍牙低功耗 (BLE) 無線接口的低功耗 MCU。
本文介紹了意法半導體的超低功耗STM32WBA52 MCU 系列,并展示了開發人員如何使用 BLE 評估板、開發工具和應用示例來快速啟動和運行 BLE 5.3 無線設計。其中包括編程和 MCU 接線的簡要介紹。
高安全級別省電無線MCU
STM32WBA52 MCU 系列經過 BLE 5.3 認證,是一款經濟高效的解決方案,使新手開發人員能夠快速向其設備添加無線通信。這些微控制器基于具有 100 兆赫 (MHz) 時鐘和 TrustZone 技術的Arm? Cortex?-M33 內核,可提供高水平的安全性、保護數據和知識產權 (IP),并防止黑客攻擊和設備克隆。
STM32WBA52CEU6無線 MCU 具有 512 KB 閃存和 96 KB 靜態 RAM (SRAM),而 STM32WBA52CGU6變體則提供 1 兆字節 (Mbyte) 閃存和 128 KB SRAM。圖 1 顯示了采用 48 UFQFN 封裝的 IC 的功能范圍。順便說一句,多達 20 個電容式觸摸通道可實現密封設備的操作(無需機械按鍵)。

圖 1:STM32WBA52 的功能框圖顯示了集成的 BLE 5.3 無線電、閃存和 SRAM 以及安全支持。 (圖片來源:意法半導體)
豐富的STM32Cube生態系統支持BLE應用的實施和編程。它包括 STM32CubeIDE 開發環境,以及 STM32CubeMX 外設配置器和代碼生成器、STM32CubeMonitorRF 性能測試器以及用于人工智能 (AI) 的 STM32Cube.AI 桌面和云版本等工具。匹配的評估板NUCLEO-WBA52CG通過許多 BLE 示例應用程序和免費提供的源代碼簡化了原型設計并加速了驗證。
設備和數據安全
STM32WBA52 產品線符合 IoT 安全標準 Platform Security Arm (PSA) Certified Level 3 和 IoT Platform Assurance Level 3 安全評估標準 (SESIP3)。基于安全隔離、內存保護、篡改保護和采用 Arm TrustZone 架構的 MCU Cortex-M33 的 PSA 安全計劃增強了網絡保護。 Arm Cortex-M (TF-M) 可信固件符合行業標準 PSA 認證安全框架,具有 PSA 不可變信任根 (RoT),包括安全啟動和安全固件更新 (X-CUBE-SBSFU)、加密、安全存儲和運行時證明。
集成無線電最大限度地減少了 BOM
集成的超低功耗無線電模塊以 1 毫瓦 (mW) (dBm) 射頻輸出功率為參考,可提供 +10 分貝的噪聲。它可實現短距離 (BLE 5.3) 和長距離(長距離)的可靠通信,數據速率高達 2 兆比特每秒 (Mbps)。當無線電通信處于活動狀態時,深度待機低功耗模式可降低總體電力。 STM32WBA MCU 最多可支持 20 個同時連接。
無線電模塊電氣性能特點:
支持 BLE 5.3 的 2.4 GHz RF 收發器
RX 靈敏度:-96 dBm(BLE,1 Mbps)
可編程輸出功率,高達 +10 dBm,步長為 1 dB
集成巴倫
由于高效的能源管理,電池更小
STM32WBA52 MCU 具有多種節能技術,包括 STMicroElectronics 的低功耗直接內存訪問 (LPDMA) 和具有快速喚醒時間的靈活節能狀態。這些功能加在一起可將 MCU 功耗降低高達 90%,這意味著電池容量明顯更小或電池壽命更長。
FlexPowerControl的電氣性能特點:
1.71 至 3.6 伏電源
140 納安 (nA) 待機模式(16 個喚醒引腳)
具有實時時鐘 (RTC) 的 200 nA 待機模式
2.4 微安 (μA) 待機模式,帶 64 KB SRAM
16.3 μA 停止模式,帶 64 KB SRAM
3.3V 時運行模式為 45μA/MHz
無線電:Rx 7.4 毫安 (mA) / Tx @ 0 dBm 10.6 mA
此外,藍牙 5.3 可以在低占空比和高占空比之間更快地切換,使其比以前的版本更加節能。
藍牙堆棧和數據包的架構
STM32WBA52 中的單核 Arm Cortex-M33 MCU 專為開發應用固件而設計,包括 BLE 堆棧(控制器和主機)上的配置文件和服務。 MCU 處理從最低物理層 (PHY) 的集成 RF 模塊到通用屬性配置文件 (GATT) 和通用訪問配置文件 (GAP) 的數據流(圖 2)。 GAP 定義和管理廣告和連接,而 GATT 定義和管理輸入/輸出數據交換。

圖 2:MCU 處理從無線電 PHY 到 GATT 和 GAP 的數據流。 (圖片來源:意法半導體)
BLE 發送的數據包被定義為比特序列的固定幀結構。用戶數據區域的長度可以在 27 到 251 字節之間動態變化。
BLE應用示例
在線百科全書STMicro-Wiki for STM32WBA MCU 包含多個不同藍牙角色的應用示例,包括:
廣告:BLE_Beacon
傳感器:BLE_HealthThermometer、BLE_HeartRate
橋:BLE_SerialCom
路由器:BLE_p2pRouter
數據:BLE_DataThroughput、BLE_p2pServer 和多從設備 BLE_p2pClient
RF 監視器:BLE_TransparentMode,
無線固件更新:BLE_Fuota
與自己的 BLE 項目相匹配,設備設計人員和程序員可以將編譯后的二進制文件從相應的 GitHub 項目目錄閃存到 NUCLEO 板,并啟動與智能手機或臺式電腦的藍牙連接。所需的編程器軟件STM32CubeProg通過調試接口和引導加載程序接口提供器件存儲器的讀取、寫入和驗證。
運行 BLE 示例“健康溫度計傳感器”
健康溫度計配置文件 (HTP) 是藍牙特別興趣組 (SIG) 定義的基于 GAP 的低能耗配置文件。它結合了健康溫度計收集器和健康溫度計傳感器,可在不同的應用程序中連接和交換數據(圖 3)。

圖 3:作為傳感器/服務器的 NUCLEO 板與作為收集器/客戶端的智能手機之間的 BLE 通信。 (圖片來源:意法半導體)
健康溫度計傳感器:
測量溫度并通過健康溫度計服務公開
包含遠程設備要識別的設備信息服務
是 GATT 服務器
健康溫度計收集器:
訪問健康溫度計傳感器公開的信息,并將其顯示給最終用戶或將其存儲在非易失性存儲器上以供以后分析
是 GATT 客戶端
將健康溫度計二進制文件閃存到 NUCLEO 的 MCU 中后,開發人員需要按照以下步驟運行 BLE 應用示例:
使用智能手機應用程序
在智能手機上安裝ST BLE Toolbox 。該應用程序用于與 ST BLE 設備交互并進行調試。
打開 STM32WBA NUCLEO 板的電源,并閃現健康溫度計應用程序。
打開智能手機藍牙 (BT) 并掃描應用程序中可用的 BT 設備。選擇健康溫度計并連接。
使用網絡瀏覽器界面
確保瀏覽器兼容性:
在臺式計算機上:Chrome、Edge 或 Opera
在智能手機設備上:Chrome Android
打開 STM32WBA NUCLEO 板的電源,并閃現健康溫度計應用程序。
激活計算機上的藍牙。
在瀏覽器中打開網頁https://applible.github.io/Web_Bluetooth_App_WBA/ 。
點擊網頁頂部的連接按鈕,然后在設備列表中選擇HT_xx并點擊配對。設備現已連接。
點擊健康溫度計,顯示界面。
健康溫度傳感器的服務結構如表1所示。 128位長的通用唯一標識符(UUID)區分個體特征和服務。
服務特征財產通用唯一標識符尺寸
健康體溫計服務0X1809
溫度測量表明0x2A1C13
溫度型讀0x2A1D1
中間溫度通知0x2A1E13
測量間隔讀、寫、指示0x2A212
設備信息服務0X180A
制造商名稱字符串讀0x2A2932
型號字符串讀0x2A2432
系統ID讀0x2A238
表 1:“健康溫度計傳感器”GAP 的 GATT 服務及其 UUID。 (圖片來源:意法半導體)
以下來自GitHub的 JavaScript 序列顯示了 Web 瀏覽器界面如何過濾不同的 GATT 數據吞吐量特征(清單 1)。
復制
[...]
// Filtering the different datathroughput characteristics
props.allCharacteristics.map(element => {
switch (element.characteristic.uuid) {
case "00002a1c-0000-1000-8000-00805f9b34fb":
IndicateCharacteristic = element; // Temperature Measurement (TEMM)
IndicateCharacteristic.characteristic.startNotifications();
IndicateCharacteristic.characteristic.oncharacteristicvaluechanged =
temperatureMeasurement;
break;
case "00002a1d-0000-1000-8000-00805f9b34fb":
ReadCharacteristic = element; // Temperature Type
readTemperatureType();
break;
case "00002a1e-0000-1000-8000-00805f9b34fb":
NotifyCharacteristic = element; //Immediate Temperature
NotifyCharacteristic.characteristic.startNotifications();
NotifyCharacteristic.characteristic.oncharacteristicvaluechanged = notifHandler;
break;
case "00002a21-0000-1000-8000-00805f9b34fb":
ReadWriteIndicateCharacteristic = element; // Measurement Interval
readMeasurementInterval();
break;
default:
console.log("# No characteristics found..");
}
});
[...]
列表 1:此 JavaScript 序列過濾表 1 中的不同 GATT 數據吞吐量特征。(列表來源:GitHub、STMicroElectronics)
跟蹤 BLE 堆棧進程
NUCLEO-WBA52CG 嵌入 ST-LINK/V3 在線調試器和編程器,支持 STM32 虛擬 COM 端口驅動程序,通過串行接口與 PC 進行通信。任何軟件終端都可以打開該串行通信端口來顯示函數APP_DBG_MSG在代碼中生成的短文本消息。
項目內的跟蹤需要在文件 app_conf.h 中啟用
#定義CFG_DEBUG_APP_TRACE (1)
或者,智能手機應用程序“SE BLE Toolbox”在選項卡 <應用程序日志> 上提供跟蹤功能。
BLE 5.3 應用程序編程
為了對 STM32WBA52 MCU 進行編程,STM 整合了STM32CubeWBA 包,其中包括硬件抽象層 (HAL)、低層應用程序編程接口 (API) 和 CMSIS、文件系統、RTOS、BLE/802.15.4、線程和Zigbee 堆棧以及在 STMicroelectronics 板上運行的示例。
每個NUCLEO-WBA52CG BLE 應用示例 中都包含所有三種開發環境 (IDE) 的項目結構設置,例如 IAR Embedded Workbench for Arm (EWARM)、Keil MDK-ARM 和 STM32CubeIDE 。
在健康溫度計示例中,只有項目目錄樹(圖 4 左側的框架)中的特定文件生成 GATT 服務。表 1 中的兩個例程“健康溫度計服務”(hts) 和“設備信息服務”(dis) 并行運行(圖 4 的右下角)。

圖4:程序員可以將自己的GATT內容添加到框架代碼文件中(左);這些文件生成 GATT 服務(右)。 (圖片來源:意法半導體)
程序員可以將源代碼用于自己的項目,并在標有 USER CODE BEGIN / USER CODE END 的區域中使用 GATT 內容對其進行擴展(清單 2)。文件 hts.c 中的初始化序列生成攜帶 UUID 0x2A1C 的 GATT 特性溫度測量 (TEMM)。
復制
[...]
void HTS_Init(void)
{
[...]
/* TEMM, Temperature Measurement */
uuid.Char_UUID_16 = 0x2a1c;
ret = aci_gatt_add_char(HTS_Context.HtsSvcHdle,
UUID_TYPE_16,
(Char_UUID_t *) &uuid,
SizeTemm,
CHAR_PROP_INDICATE,
ATTR_PERMISSION_NONE,
GATT_DONT_NOTIFY_EVENTS,
0x10,
CHAR_VALUE_LEN_VARIABLE,
&(HTS_Context.TemmCharHdle));
if (ret != BLE_STATUS_SUCCESS)
{
APP_DBG_MSG(" Fail : aci_gatt_add_char command : TEMM, error code: 0x%2X ", ret);
}
else
{
APP_DBG_MSG(" Success: aci_gatt_add_char command : TEMM ");
}
/* USER CODE BEGIN SVCCTL_InitService2Char1 */
/* USER CODE END SVCCTL_InitService2Char1 */
[...]
}
[...]
列表 2:文件 hts.c 中的初始化序列生成 GATT 特征 TEMM。 (圖片來源:GitHub、意法半導體)
外部元件要求
STM32WBA52 無線 MCU 只需幾個外部組件即可實現藍牙功能的基本操作。其中包括電源電容器、晶體振蕩器、具有阻抗匹配的印刷電路板 (PC 板) 天線以及諧波濾波器。
結論
無線物聯網設備的開發人員需要縮短設計周期并降低成本,以便在快速發展的市場中競爭。然而,射頻設計具有挑戰性。 STM32WBA52 MCU 具有集成的 BLE 5.3 接口,使開發人員能夠快速且經濟高效地進入市場。預編程的 BLE 堆棧和多個 BLE 應用示例構成了自定義項目的編程模板,可輕松插入 GATT 內容。
責任編輯:David
【免責聲明】
1、本文內容、數據、圖表等來源于網絡引用或其他公開資料,版權歸屬原作者、原發表出處。若版權所有方對本文的引用持有異議,請聯系拍明芯城(marketing@iczoom.com),本方將及時處理。
2、本文的引用僅供讀者交流學習使用,不涉及商業目的。
3、本文內容僅代表作者觀點,拍明芯城不對內容的準確性、可靠性或完整性提供明示或暗示的保證。讀者閱讀本文后做出的決定或行為,是基于自主意愿和獨立判斷做出的,請讀者明確相關結果。
4、如需轉載本方擁有版權的文章,請聯系拍明芯城(marketing@iczoom.com)注明“轉載原因”。未經允許私自轉載拍明芯城將保留追究其法律責任的權利。
拍明芯城擁有對此聲明的最終解釋權。