如何快速且經(jīng)濟(jì)高效地將藍(lán)牙5.3添加到邊緣物聯(lián)網(wǎng)設(shè)計(jì)中


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

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

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

圖 3:作為傳感器/服務(wù)器的 NUCLEO 板與作為收集器/客戶端的智能手機(jī)之間的 BLE 通信。 (圖片來源:意法半導(dǎo)體)
健康溫度計(jì)傳感器:
測量溫度并通過健康溫度計(jì)服務(wù)公開
包含遠(yuǎn)程設(shè)備要識別的設(shè)備信息服務(wù)
是 GATT 服務(wù)器
健康溫度計(jì)收集器:
訪問健康溫度計(jì)傳感器公開的信息,并將其顯示給最終用戶或?qū)⑵浯鎯υ诜且资源鎯ζ魃弦怨┮院蠓治?/span>
是 GATT 客戶端
將健康溫度計(jì)二進(jìn)制文件閃存到 NUCLEO 的 MCU 中后,開發(fā)人員需要按照以下步驟運(yùn)行 BLE 應(yīng)用示例:
使用智能手機(jī)應(yīng)用程序
在智能手機(jī)上安裝ST BLE Toolbox 。該應(yīng)用程序用于與 ST BLE 設(shè)備交互并進(jìn)行調(diào)試。
打開 STM32WBA NUCLEO 板的電源,并閃現(xiàn)健康溫度計(jì)應(yīng)用程序。
打開智能手機(jī)藍(lán)牙 (BT) 并掃描應(yīng)用程序中可用的 BT 設(shè)備。選擇健康溫度計(jì)并連接。
使用網(wǎng)絡(luò)瀏覽器界面
確保瀏覽器兼容性:
在臺式計(jì)算機(jī)上:Chrome、Edge 或 Opera
在智能手機(jī)設(shè)備上:Chrome Android
打開 STM32WBA NUCLEO 板的電源,并閃現(xiàn)健康溫度計(jì)應(yīng)用程序。
激活計(jì)算機(jī)上的藍(lán)牙。
在瀏覽器中打開網(wǎng)頁https://applible.github.io/Web_Bluetooth_App_WBA/ 。
點(diǎn)擊網(wǎng)頁頂部的連接按鈕,然后在設(shè)備列表中選擇HT_xx并點(diǎn)擊配對。設(shè)備現(xiàn)已連接。
點(diǎn)擊健康溫度計(jì),顯示界面。
健康溫度傳感器的服務(wù)結(jié)構(gòu)如表1所示。 128位長的通用唯一標(biāo)識符(UUID)區(qū)分個體特征和服務(wù)。
服務(wù)特征財(cái)產(chǎn)通用唯一標(biāo)識符尺寸
健康體溫計(jì)服務(wù)0X1809
溫度測量表明0x2A1C13
溫度型讀0x2A1D1
中間溫度通知0x2A1E13
測量間隔讀、寫、指示0x2A212
設(shè)備信息服務(wù)0X180A
制造商名稱字符串讀0x2A2932
型號字符串讀0x2A2432
系統(tǒng)ID讀0x2A238
表 1:“健康溫度計(jì)傳感器”GAP 的 GATT 服務(wù)及其 UUID。 (圖片來源:意法半導(dǎo)體)
以下來自GitHub的 JavaScript 序列顯示了 Web 瀏覽器界面如何過濾不同的 GATT 數(shù)據(jù)吞吐量特征(清單 1)。
復(fù)制
[...]
// 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 數(shù)據(jù)吞吐量特征。(列表來源:GitHub、STMicroElectronics)
跟蹤 BLE 堆棧進(jìn)程
NUCLEO-WBA52CG 嵌入 ST-LINK/V3 在線調(diào)試器和編程器,支持 STM32 虛擬 COM 端口驅(qū)動程序,通過串行接口與 PC 進(jìn)行通信。任何軟件終端都可以打開該串行通信端口來顯示函數(shù)APP_DBG_MSG在代碼中生成的短文本消息。
項(xiàng)目內(nèi)的跟蹤需要在文件 app_conf.h 中啟用
#定義CFG_DEBUG_APP_TRACE (1)
或者,智能手機(jī)應(yīng)用程序“SE BLE Toolbox”在選項(xiàng)卡 <應(yīng)用程序日志> 上提供跟蹤功能。
BLE 5.3 應(yīng)用程序編程
為了對 STM32WBA52 MCU 進(jìn)行編程,STM 整合了STM32CubeWBA 包,其中包括硬件抽象層 (HAL)、低層應(yīng)用程序編程接口 (API) 和 CMSIS、文件系統(tǒng)、RTOS、BLE/802.15.4、線程和Zigbee 堆棧以及在 STMicroelectronics 板上運(yùn)行的示例。
每個NUCLEO-WBA52CG BLE 應(yīng)用示例 中都包含所有三種開發(fā)環(huán)境 (IDE) 的項(xiàng)目結(jié)構(gòu)設(shè)置,例如 IAR Embedded Workbench for Arm (EWARM)、Keil MDK-ARM 和 STM32CubeIDE 。
在健康溫度計(jì)示例中,只有項(xiàng)目目錄樹(圖 4 左側(cè)的框架)中的特定文件生成 GATT 服務(wù)。表 1 中的兩個例程“健康溫度計(jì)服務(wù)”(hts) 和“設(shè)備信息服務(wù)”(dis) 并行運(yùn)行(圖 4 的右下角)。

圖4:程序員可以將自己的GATT內(nèi)容添加到框架代碼文件中(左);這些文件生成 GATT 服務(wù)(右)。 (圖片來源:意法半導(dǎo)體)
程序員可以將源代碼用于自己的項(xiàng)目,并在標(biāo)有 USER CODE BEGIN / USER CODE END 的區(qū)域中使用 GATT 內(nèi)容對其進(jìn)行擴(kuò)展(清單 2)。文件 hts.c 中的初始化序列生成攜帶 UUID 0x2A1C 的 GATT 特性溫度測量 (TEMM)。
復(fù)制
[...]
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、意法半導(dǎo)體)
外部元件要求
STM32WBA52 無線 MCU 只需幾個外部組件即可實(shí)現(xiàn)藍(lán)牙功能的基本操作。其中包括電源電容器、晶體振蕩器、具有阻抗匹配的印刷電路板 (PC 板) 天線以及諧波濾波器。
結(jié)論
無線物聯(lián)網(wǎng)設(shè)備的開發(fā)人員需要縮短設(shè)計(jì)周期并降低成本,以便在快速發(fā)展的市場中競爭。然而,射頻設(shè)計(jì)具有挑戰(zhàn)性。 STM32WBA52 MCU 具有集成的 BLE 5.3 接口,使開發(fā)人員能夠快速且經(jīng)濟(jì)高效地進(jìn)入市場。預(yù)編程的 BLE 堆棧和多個 BLE 應(yīng)用示例構(gòu)成了自定義項(xiàng)目的編程模板,可輕松插入 GATT 內(nèi)容。
責(zé)任編輯:David
【免責(zé)聲明】
1、本文內(nèi)容、數(shù)據(jù)、圖表等來源于網(wǎng)絡(luò)引用或其他公開資料,版權(quán)歸屬原作者、原發(fā)表出處。若版權(quán)所有方對本文的引用持有異議,請聯(lián)系拍明芯城(marketing@iczoom.com),本方將及時處理。
2、本文的引用僅供讀者交流學(xué)習(xí)使用,不涉及商業(yè)目的。
3、本文內(nèi)容僅代表作者觀點(diǎn),拍明芯城不對內(nèi)容的準(zhǔn)確性、可靠性或完整性提供明示或暗示的保證。讀者閱讀本文后做出的決定或行為,是基于自主意愿和獨(dú)立判斷做出的,請讀者明確相關(guān)結(jié)果。
4、如需轉(zhuǎn)載本方擁有版權(quán)的文章,請聯(lián)系拍明芯城(marketing@iczoom.com)注明“轉(zhuǎn)載原因”。未經(jīng)允許私自轉(zhuǎn)載拍明芯城將保留追究其法律責(zé)任的權(quán)利。
拍明芯城擁有對此聲明的最終解釋權(quán)。