如何以具成本效益的方式快速地將藍牙 5.3 添加至邊緣 IoT 設計中

作者:Jens Wallmann

資料提供者:DigiKey 歐洲編輯群

在日益激烈的市場競爭中,物聯網 (IoT) 裝置開發人員備感壓力。他們不僅要迅速推出創新產品,還要在降低成本的同時保證通訊的可靠性、低功耗和安全性。傳統的智慧型 IoT 終端節點包含一個支援邊緣處理的微控制器單元 (MCU) 以及一個用於建立連接的無線 IC。然而,當設計團隊缺乏開發有效解決方案所需的無線射頻 (RF) 技能時,就會出現問題。

開發人員若想及時完成無線 IoT 設計、取得認證並投入量產,就需要提升開發效率。提升開發效率的有效途徑之一是採用整合低功耗藍牙 (BLE) 無線介面的低功率 MCU。

本文將介紹 STMicroelectronics 的超低功率 STM32WBA52 MCU 系列,並說明開發人員如何藉助 BLE 評估板、開發工具及應用範例,迅速啟動 BLE 5.3 無線設計。文章還將簡要介紹編程方法和 MCU 佈線方式。

具有高安全等級的無線節能 MCU

STM32WBA52 MCU 系列通過 BLE 5.3 認證,是一款符合成本效益的解決方案,適合剛入門的開發人員快速為裝置添加無線通訊功能。這些微控制器採用 Arm® Cortex®-M33 核心、100 MHz 時脈及 TrustZone 技術,能夠提供高階安全性、保護資料與智慧財產 (IP),並預防駭客攻擊及複製裝置。

STM32WBA52CEU6 無線 MCU 具有 512 KB 的快閃記憶體及 96 KB 的靜態隨機存取記憶體 (SRAM);STM32WBA52CGU6 版本可提供 1 MB 的快閃記憶體及 128 KB 的 SRAM。圖 1 顯示採用 48 UFQFN 封裝的 IC 涵蓋的功能。順道一提,此控制器支援多達 20 個電容式觸控通道,可進行氣密式裝置的操作 (無需機械鑰匙)。

STMicroelectronics STM32WBA52 的功能方塊圖圖 1:STM32WBA52 功能方塊圖顯示其整合的 BLE 5.3 無線通訊、快閃記憶體與 SRAM,以及安全模組。(圖片來源:STMicroelectronics)

STM32Cube 豐富的生態系統支援 BLE 應用程式的實作和編程。此系統包含 STM32CubeIDE 開發環境及多種工具,如 STM32CubeMX 周邊裝置設定器及程式碼產生器、STM32CubeMonitorRF 效能測試器、以及用於人工智慧 (AI) 的 STM32Cube.AI 桌面和雲端版本。NUCLEO-WBA52CG 是配套的評估板,可以簡化原型開發,並加速完成與許多 BLE 範例應用程式和免費原始程式碼的驗證。

裝置和資料安全

STM32WBA52 產品系列符合 IoT 安全標準 PSA (平台安全架構) 3 級認證,以及 SESIP3 (IoT 平台安全評估標準) 認證。具有安全隔離、記憶體保護、防篡改保護功能的 PSA 安全程式,加上採用 Arm TrustZone 架構的 MCU Cortex-M33,進一步增強網路防護能力。Arm Cortex-M 的受信任韌體 (TF-M) 符合產業標準 PSA 認證安全架構,包括 PSA 不可竄改信任根 (RoT),能夠提供安全啟動、安全韌體更新 (X-CUBE-SBSFU)、加密、安全儲存,以及執行時確認等服務。

整合式無線電功能可最大程度簡化物料清單

這款整合式超低功率無線電模組提供 +10 dB 的無線射頻輸出功率,參考功率為 1 mW (dBm)。此模組能夠達到短距離 (BLE 5.3) 和長距離 (Long Range) 的可靠通訊能力,數據傳輸率高達每秒 2 Mbps。啟用無線電通訊後,深度待機低功率模式可以降低整體耗電量。STM32WBA MCU 最多可同時支援 20 個連接。

此無線電模組的電氣效能特性包括:

  • 支援 BLE 5.3 的 2.4 GHz RF 收發器
  • 接收靈敏度:-96 dBm (BLE,在 1 Mbps 下)
  • 可編程輸出功率高達 +10 dBm,步進為 1 dB
  • 整合式平衡不平衡轉換器

高效率能源管理讓電池更小

STM32WBA52 MCU 整合多種節能技術,包括 STMicroelectronics 的低功率直接記憶體存取 (LPDMA) 靈活的節能狀態,以及快速喚醒時間。這些功能可共同將 MCU 功耗最多降低 90%,從而大幅縮減電池尺寸或延長電池續航力。

FlexPowerControl 的電氣效能特性包括:

  • 電源供應器:1.71 至 3.6 V
  • 待機模式:140 nA (16 個喚醒引腳)
  • 待機模式 (含即時時脈 (RTC)):200 nA
  • 待機模式 (含 64 KB SRAM):2.4 μA
  • 停止模式 (含 64 KB SRAM):16.3 μA
  • 執行模式 (3.3 V 下):45 μA/MHz
  • 無線電:接收 7.4 mA/發射 (0 dBm 下) 10.6 mA

此外,Bluetooth 5.3 能夠在低工作週期和高工作週期之間更快速切換,比前代版本更節能。

藍牙堆疊和數據封包架構

STM32WBA52 中的單核心 Arm Cortex-M33 MCU 專為開發應用韌體所設計,包括 BLE 堆疊 (控制器和主機) 的設定檔和服務。這些 MCU 可以處理從最低實體層 (PHY) 的整合式無線射頻模組,到一般屬性設定檔 (GATT) 及通用存取設定檔 (GAP) 的資料流 (圖 2)。GAP 負責定義和管理廣告及連接,而 GATT 則負責定義和管理輸入/輸出資料交換。

MCU 可以處理從無線電 PHY 到 GATT 和 GAP 的資料流圖片圖 2:MCU 可以處理從無線電 PHY 到 GATT 和 GAP 的資料流。(圖片來源:STMicroelectronics)

BLE 可發送定義為固定位元序列訊框結構的數據封包。使用者資料區域的長度可在 27 到 251 位元組之間動態變化。

BLE 應用範例

線上百科全書 STMicro-Wiki 提供有關 STM32WBA MCU 的多個藍牙角色應用範例,包括:

  • 廣告:BLE_Beacon
  • 感測器:BLE_HealthThermometer、BLE_HeartRate
  • 橋接器:BLE_SerialCom
  • 路由器:BLE_p2pRouter
  • 資料:BLE_DataThroughput、BLE_p2pServer 與 Multi Slave BLE_p2pClient
  • RF 監視器:BLE_TransparentMode,
  • 韌體空中更新:BLE_Fuota

裝置設計人員和編程人員可以根據自己的 BLE 專案,將編譯後的二進位檔案從相應的 GitHub 專案目錄寫入 NUCLEO 板,並啟動與智慧型手機或桌上型電腦的藍牙連線。STM32CubeProg 是編程人員必備的軟體,能夠透過偵錯介面和啟動程式介面,對裝置記憶體進行讀取、寫入及驗證。

執行 BLE 範例「健康溫度計感測器」

健康溫度計設定檔 (HTP) 是一個由藍牙技術聯盟 (SIG) 定義的 GAP 型低功率設定檔。此設定檔整合健康溫度計採集器和健康溫度計感測器,可在不同應用中建立連接並交換資料 (圖 3)。

BLE 在 NUCLEO 板和智慧型手機之間建立通訊圖片 (按此放大)圖 3:BLE 在作為感測器/伺服器的 NUCLEO 板與作為採集器/用戶端的智慧型手機之間建立通訊。(圖片來源:STMicroelectronics)

健康溫度計感測器:

  • 測量溫度並透過健康溫度計服務予以顯示
  • 包含可由遠端裝置識別的裝置資訊服務
  • 作為 GATT 伺服器

健康溫度計採集器:

  • 存取由健康溫度計感測器提供的資訊,並顯示給最終使用者或將其存儲在非揮發性記憶體中,以供日後分析
  • 作為 GATT 用戶端

開發人員將健康溫度計二進位檔案寫入 NUCLEO 的 MCU 後,需要按照以下幾個步驟執行 BLE 應用範例:

使用智慧型手機應用程式

  1. 在智慧型手機上安裝 ST BLE 工具箱。該應用程式用於與 ST BLE 裝置互動並進行偵錯。
  2. 開啟寫有「健康溫度計」應用程式的 STM32WBA NUCLEO 板的電源。
  3. 啟動智慧型手機藍牙 (BT),並在應用程式中掃描可用的 BT 裝置。選擇「健康溫度計」並建立連線。

使用網路瀏覽器介面

  1. 確保瀏覽器相容:
    • 桌上型電腦:Chrome、Edge 或 Opera
    • 智慧型手機裝置:Chrome Android
  2. 開啟寫有「健康溫度計」應用程式的 STM32WBA NUCLEO 板的電源。
  3. 啟動電腦的藍牙功能。
  4. 在瀏覽器中開啟網頁 https://applible.github.io/Web_Bluetooth_App_WBA/
  5. 按一下網頁頂端的連接按鈕,然後在裝置清單中選擇 HT_xx,再按一下配對。裝置即會連線。
  6. 按一下「健康溫度計」以顯示介面。

表 1 說明健康溫度計感測器服務的結構。128 位元長的通用唯一識別碼 (UUID) 可清楚區分各別特性和服務。

服務 特性 特性 UUID 尺寸
健康溫度計服務 0x1809
溫度測量 指示 0x2A1C 13
溫度類型 讀取 0x2A1D 1
中間溫度 通知 0x2A1E 13
測量間隔 讀取、寫入、指示 0x2A21 2
裝置資訊服務 0x180A
製造商名稱字串 讀取 0x2A29 32
型號數字字串 讀取 0x2A24 32
系統 ID 讀取 0x2A23 8

表 1:GATT 服務及其 UUID (適用於「健康溫度計感測器」GAP)。(圖片來源:STMicroelectronics)

以下的 GitHub JavaScript 片段顯示網路瀏覽器介面如何篩選不同的 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 檔案中進行如下定義:

#define CFG_DEBUG_APP_TRACE   (1)

此外,智慧型手機應用程式「SE BLE 工具箱」也在 <Application Log> 標籤上提供追蹤函數。

對 BLE 5.3 應用程式進行編程

STM 推出完整的 STM32CubeWBA 封裝,可簡化 STM32WBA52 MCU 的編程工作,其中包含硬體抽象層 (HAL)、低層應用程式開發介面 (API)、CMSIS、檔案系統、RTOS、BLE/802.15.4、Thread 和 Zigbee 堆疊,以及在 STMicroelectronics 開發板上執行的範例。

在所有三個常見的開發環境 (IDE) 中,例如 IAR Embedded Workbench for Arm (EWARM)、Keil MDK-ARM 及 STM32CubeIDE,均能在每個 NUCLEO-WBA52CG BLE 應用程式範例中找到對應的專案結構設定。

在健康溫度計範例中,只有專案目錄樹中的特定檔案 (如圖 4 左框所示) 會產生 GATT 服務。表 1 中的兩個常式,即「健康溫度計服務」(hts) 和「裝置資訊服務」(dis) 會平行執行 (圖 4 右下角)。

編程人員可以將自己的 GATT 內容添加到框住的程式碼檔案示意圖 (按此放大)圖 4:編程人員可以將自己的 GATT 內容添加到框住的程式碼檔案 (左);這些檔案可產生 GATT 服務 (右)。(圖片來源:STMicroelectronics)

編程人員可以在自己的專案中使用原始程式碼,並在標有 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\n", ret);
  }
  else
  {
    APP_DBG_MSG("  Success: aci_gatt_add_char command  : TEMM\n");
  }

  /* USER CODE BEGIN SVCCTL_InitService2Char1 */

  /* USER CODE END SVCCTL_InitService2Char1 */

 [...]
 }
[...]

清單 2:檔案 hts.c 的初始化序列將產生 GATT 特性溫度測量值 (TEMM)。(圖片來源:GitHub,STMicroelectronics)

外接元件要求

STM32WBA52 無線 MCU 僅需使用幾個外接元件即可啟用藍牙功能進行基本操作。這些元件包括電壓供應器的電容、晶體振盪器、具有阻抗匹配功能的印刷電路板 (PC 板) 天線,以及諧波濾波器 (圖 5)。

STMicroelectronics STM32WBA52 RF 終端示意圖 (按此放大)圖 5:若想啟用藍牙功能,STM32WBA52 的無線射頻終端需要連接到一個阻抗匹配網路、一個諧波濾波器和一根天線。(圖片來源:STMicroelectronics)

結論

無線 IoT 裝置開發人員需要縮短設計週期並降低成本,才能在快速變化的市場中保持競爭力。然而,無線射頻設計是一項艱鉅的挑戰。STM32WBA52 MCU 整合 BLE 5.3 介面,可讓開發人員以具成本效益的方式,快速將其產品推向市場。而預編程的 BLE 堆疊和多個 BLE 應用範例則構成編程範本,可供開發人員輕鬆地將 GATT 內容插入客製化專案中。

DigiKey logo

聲明:各作者及/或論壇參與者於本網站所發表之意見、理念和觀點,概不反映 DigiKey 的意見、理念和觀點,亦非 DigiKey 的正式原則。

關於作者

Jens Wallmann

Jens Wallmann

Jens Wallmann 是一名自由編輯,專門處理紙本與線上電子刊物。身為電氣工程師 (通訊工程) 與訓練有素的工業電子工程師,在電子開發領域已累積超過 25 年經驗,鑽研量測技術、汽車電子、製程工業與無線射頻領域。

關於出版者

DigiKey 歐洲編輯群