作者:Stephen Evanczuk.
對于那些能夠快速將概念轉化為可行的物聯網 (IoT)應用的開發者來說,市場在智能互聯產品方面的需求為他們提供了廣闊的機會。高能效處理器、各種可選的無線連接和廣泛的硬件外設,為實現合適的、可投入生產的低功耗設計奠定了堅實的基礎。
然而,在產品定義的早期階段,開發者需要一個靈活的開發平臺,用來快速構建基于同級別處理器、連接子系統和外設的原型。能夠快速構建工作原型并輕松添加功能,對于提供早期概念驗證并支持定制軟件開發來說至關重要。
本文展示了開發者如何使用 Silicon Labs 的硬件和軟件,以及大量現成的擴展板快速構建專門的節能互連型物聯網設備原型。
實現快速原型開發
在探索電池供電型無線物聯網設備的各種新的可能性時,開發者會發現自己已陷入了與構建有效開發平臺有關的諸多細節的困擾中。憑借其集成子系統,先進的片上系統(SoC) 設備可以提供這樣一個核心平臺,但開發者仍然需要圍繞這些設備構建完整的系統。
為了給這些設備構建一個合適的開發平臺,開發者不僅需要滿足強大性能和更長電池壽命的基本要求,還需要實現靈活性,以滿足每個應用的具體要求。SiliconLabs 的 BGM220-EK4314A Explorer套件滿足這種組合要求,使開發人員能夠專注于新設計概念的快速原型開發,而無需處理構建開發平臺所涉及的各種細節。
靈活的快速開發平臺
BGM220-EK4314A Explorer 套件是開發基于藍牙的各種應用的低成本平臺,該平臺整合了 SiLabs 的 BGM220P Wireless Gecko 模塊 (BGM220PC22HNA)、1 個板載 SEGGER J-Link 調試器、1 個按鈕、1 個發光二極管 (LED) 以及多種擴展選項(圖 1)。
BGM220P 模塊可作為小型電池供電型物聯網設備的一個完整解決方案。其集成的 EFR32BG22 Blue Gecko SoC 具有超低功耗、藍牙到達角(AoA) 和離開角 (AoD) 能力以及次 1 米定位精度——所有這些都是越來越多的流行藍牙應用所必需的,包括資產追蹤標簽、智能門鎖、健身等應用。
BGM220P 模塊可作為獨立系統運行,它將 EFR32BG22 系統芯片與 512KB 閃存、32KB 隨機存取存儲器 (RAM)、高頻 (HF)和低頻 (LF) 晶體 (XTAL) 以及一個用于無線連接的 2.4 GHz 匹配網絡和陶瓷天線組合在一起(圖2)。
除了可用作小型物聯網設計的獨立主機,該模塊還可以作為通過其 UART 接口連接的主機處理器的網絡協處理器(NCP)。該模塊的集成藍牙堆棧為獨立設計中在模塊上運行的應用執行無線服務,或在 NCP 設計中運行時處理從主機收到的指令。
高能效無線 SoC
BGM220P 模塊的 EFR32BG22 藍牙無線 SoC 集成了一個 32 位 ArmCortex-M33 內核、1 個 2.4GHz
無線電、安全、能量管理子系統,以及多個定時器和接口選擇。EFR32BG22系統芯片專門為超低功耗、電池供電型設備而設計,具有多種能量管理功能,可使紐扣電池的運行壽命達到 10 年。
通過單一的外部電壓供電,該 SoC 使用其內部能量管理單元來產生內部電源電壓。在運行期間,由能量管理單元控制 SoC 的五種能量模式 (EM)之間的轉換。當 SoC 從激活模式 (EM0) 過渡到睡眠模式 (EM1)、深度睡眠模式 (EM2)、停止模式 (EM3) 或停機模式 (EM4)時,每種模式都通過保持逐漸減少的激活功能塊來進一步降低功耗(圖 3)。
在 76.8 MHz 和 3 V 的激活模式 (EM0) 下,使用其內部的 DC/DC 轉換器,該 SoC 的功耗為 27 μA/MHz。EM0是正常工作模式,也是唯一可以使用 Cortex M33 處理器內核和所有外設模塊的模式。
所有的外設都可以在睡眠模式 (EM1)下使用,當系統進入功耗更低的模式時,保持激活狀態的外設會更少。低功耗模式下,處于激活狀態的時鐘和功能塊數量的減少會使功耗水平顯著降低:
睡眠模式下 (EM1):17 μA/MHz
深度睡眠模式 (EM2):1.40μA,保留 32KB RAM,實時時鐘 (RTC) 通過 LFXO 運行
停止模式 (EM3) 下:1.05 μA,保留 8KB RAM,RTC 通過 SoC 集成超低頻 1 kHz 電阻電容 (RC) 振蕩器 (ULFRCO)運行
0.17 μA 停機模式 (EM4)
一些電池供電型設備需要的不只是在低功耗工作模式下運行處理器的能力。許多支持藍牙的應用通常都會長期處于很少激活或者非激活狀態,但在恢復激活狀態時需要低延遲響應。事實上,即使一個應用具有更寬松的延遲要求,緩慢喚醒操作也會浪費電力,因為處理器在完成喚醒過程并進入激活模式(或完成從高功耗模式進入低功耗模式的過程)時不會進行任何有用的工作。
隨著激活狀態之間的時間縮短,當緩慢喚醒或進入電源模式的時間相比處理器在非激活期保持高功耗模式所消耗的能量更多時,使用低功耗睡眠模式甚至會起到反作用。因此,致力于優化電池壽命的開發人員有時會將處理器維持在更高的功耗模式,以滿足應用處理需求。
通過使用具有更快的喚醒和電源進入時間的處理器,開發者可以更充分地利用處理器的低功耗模式。在 EM1 中,EFG32BG22 在三個時鐘/1.24 μs內喚醒,進入時間為 1.29 μs,在 EM4 中則分別延長至 8.81 ms 和 9.96 μs (表 1)。
用于在恢復激活狀態時喚醒處理器的方法也可能會顯著影響電池壽命。盡管如工業應用等一些應用會要求系統使用輪詢處理方式來確保嚴格的周期性計時,但消費領域的許多應用都采用基于事件的處理方式來響應特定活動。例如,對基于事件的應用使用輪詢方法,當處理器被反復無謂地喚醒時,會大大影響電池壽命。
許多基于傳感器的設計使用“中斷時喚醒”功能來避免只是為了檢查激活狀態而重復喚醒處理器的情況。與此相同,EFG32BG22系統芯片無線電子系統的內置“射頻喚醒”功能也采用了類似的中斷驅動方法。這樣,開發人員能夠使處理器保持在功耗較低的能量模式下,直到發生射頻 (RF)激活情況。
在實際中,開發人員將 EFG32BG22 無線 SoC 置于超低功耗的 EM2、EM3 或 EM4 模式,并依靠“射頻喚醒”功能在檢測到 RF 能量時喚醒SoC。當僅限于檢測超過閾值的能量時,RFSENS 的能耗為 131 nA。RFSENSE 模式的選擇性更強,電流消耗略多,為 138nA,但在這種模式下,RFSENSE 會過濾進入的射頻信號,確保在出現有效射頻信號而不是射頻噪聲時喚醒。
在某些情況下,EFG32BG22 SoC 可能根本不需要喚醒處理器內核來響應外部事件:SiLabs 的外設反射系統 (PRS)使外設對事件作出反應,在不喚醒處理器內核的情況下進行操作。外設之間可以直接通信,其功能可以組合使用,以實現復雜的功能。通過使用具有較低能量模式的 PRS功能,開發者可以在不影響傳感器數據采集等關鍵功能的情況下大幅降低功耗。
內置調試功能,易于擴展
BGM220P 模塊內置于 BGM220 Explorer 套件板中,為電池供電型藍牙設計帶來 EFR32BG22 SoC
的全套能量管理和處理能力。當需要快速建立原型來探索新的設計概念時,該板的其他功能有助于加速開發。
通過板上 USB Micro-B 接口訪問,板上 SEGGER J-Link 調試器可實現代碼下載和調試以及一個用于主機控制臺訪問的虛擬 COM端口。該調試器還支持 SiLabs 的數據包跟蹤接口 (PTI) 功能,用于分析通過無線網絡傳輸或接收的數據包。
用于快速原型設計時,該板支持多種擴展選項,便于靈活地探索需要不同組合的傳感器、致動器、連接選項和其他外設的新設計理念。依托多個供應商提供的大量mikroBUS 擴展板和 Qwiic 連接系統硬件,開發人員可以快速地為每個應用配置一個開發平臺。
插入該板的 mikroBUS 插座后,mikroBUS 板可通過 I2C、SPI 或 UART 接口與 BGM220P 模塊連接。Qwiic 連接器提供了Qwiic 系統的 I2C 接口,用于連接一個或多個 Qwiic 板,連接距離最長可達 4 英尺。對于較長距離的連接,開發者可以使用 SparkFun QwiicBus EndPoint 板 (COM-16988),該板使用差分信號來保持 I2C 信號的完整性,連接距離長約 100 英尺。
快速應用開發
SiLabs 將快速擴張的概念應用于應用軟件開發。除了用于定制開發的板卡支持包、驅動程序、庫和頭文件外,該公司還提供了在 Simplicity Studio 開發環境中捆綁的幾個示例應用,以及可從 SiLabs 的 GitHub資源庫中獲得的其他項目。事實上,開發者可將捆綁的溫度應用樣例作為切入點,探索傳感器應用的開發。該樣例使用 EFR32BG22 SoC的內部溫度傳感器作為數據源。
該溫度應用圍繞標準的藍牙健康溫度服務構建,可直接通過基于 SiLabs軟件架構的通用藍牙物聯網應用演示處理流程。該應用會為系統服務、設置中斷處理和回調功能的應用服務調用一系列初始化例程。完成初始化后,該應用進入一個無休止循環,等待事件發生(列表 1)。
int main(void)
{
// Initialize Silicon Labs device, system, service(s) and protocol
stack(s)。
// Note that if the kernel is present, processing task(s) will be created
by
// this call.
sl_system_init();
// Initialize the application. For example, create periodic timer(s) or
// task(s) if the kernel is present.
app_init();
#if defined(SL_CATALOG_KERNEL_PRESENT)
// Start the kernel. Task(s) created in app_init() will start running.
sl_system_kernel_start();
#else // SL_CATALOG_KERNEL_PRESENT
while (1) {
// Do not remove this call: Silicon Labs components process action
routine
// must be called from the super loop.
sl_system_process_action();
// Application process.
app_process_action();
#if defined(SL_CATALOG_POWER_MANAGER_PRESENT)
// Let the CPU go to sleep if the system allows it.
sl_power_manager_sleep();
#endif
}
#endif // SL_CATALOG_KERNEL_PRESENT
}
列表 1:SiLabs 的藍牙樣例應用使用通用執行框架,其中無限循環允許回調功能和事件處理程序在初始化后處理系統和應用行為。(代碼來源:Silicon Labs)
在該應用中,當初始化過程中設置的定時器進行倒計時時,一個相關的回調例程就會進行溫度測量。開發人員在構建應用并點亮電路板后,可以使用 SiLabs EFRConnect 應用——一種通用型藍牙移動應用,可與所有 Silicon Labs藍牙套件和設備一起使用。除了提供定制應用的框架外,該應用還通過提供一個與藍牙服務相關的支持特性視圖來協助開發,例如本例應用中使用的藍牙健康溫度計服務(圖 4)。
在 Simplicity Studio 中,開發人員可以導入一些不同的藍牙應用實例,展示各種使用場景,包括單獨或組合使用 Qwiic 或 mikroBUS板的設計。例如,樣例應用演示了標準藍牙心率 (HR) 脈搏血氧儀 (pO2) 服務與 MikroElektronika 的 MIKROE-4037 心率 2Click mikroBUS 板結合使用,其中包含 Maxim Integrated 的 MAX86161 生物傳感器。MAX86161提供了一個完整的低功耗子系統,能夠為通過其 I2C 接口連接的主機處理器提供準確的心率和 SpO2 測量值。(關于 MAX86161的詳細使用信息,參見《構建真正的無線健身耳穿戴設備 — 第 1 部分:心率和 SpO2 測量》)。
由于需要另外的驅動器和比溫度應用更苛刻的處理算法,該應用展示了更復雜的物聯網設備軟件應用架構(圖 5)。
與上文提到的溫度應用一樣,這個應用依賴一系列初始化例程來設置系統和應用服務。在溫度應用中,例程 app_process_action 為空,本應用在app_process_action 中增加了對例程 hrm_loop 的調用。這將導致在每次穿過列表 1 中所示的頂層無限循環時調用hrm_loop。此外,采用軟件定時器定期更新 HR 和 SpO2 數據。
hrm_loop 例程反過來調用maxm86161_hrm_process,它從一個由輔助函數維護的隊列中提取樣本,并將其傳遞至樣本處理例程。這反過來又調用一對例程:maxm86161_hrm_frame_process和maxm86161_hrm_spo2_frame_process,它們分別執行算法來驗證和生成 HR 和 SpO2 結果。開發人員可以使用上文提到的 EFR Connect 應用查看結果和其他服務特征。
另一個軟件應用樣例顯示了開發者如何在擴展其硬件平臺時基于復雜的應用進行開發,如這里的 HR/SpO2 應用。使用 BGM220-EK4314AExplorer 套件板和 SiLabs 軟件生態系統,圍繞現有的軟硬件進行構建是相對簡單的。SiLabs 通過一個樣例應用演示了這種方法,該應用在上述HR/SpO2 應用的硬件/軟件平臺上增加了 OLED 顯示屏。本例中,SparkFun 的 OLED 顯示屏 Qwiic 擴展板 (LCD-14532)與該板的 Qwiic 連接器連接,而 MikroElektronika Heart Rate 2 Click 擴展板來自之前的 HR/SpO2 樣例應用中(圖 6)。
除了為 OLED 板增加一個驅動程序和支持服務外,該 HR/SpO2 應用的擴展版本的軟件應用基本保持不變。前面提到的 HR/SpO2應用的軟件定時器增加了對函數 hrm_update_display 的調用,顯示 HR 和 SpO2 數據(列表 2)。
除了為 OLED 板增加一個驅動程序和支持服務外,該 HR/SpO2 應用的擴展版本的軟件應用基本保持不變。前面提到的 HR/SpO2應用的軟件定時器增加了對函數 hrm_update_display 的調用,顯示 HR 和 SpO2 數據(列表 2)。
/* Software Timer event */
case sl_bt_evt_system_soft_timer_id:
/* Check which software timer handle is in question */
if (evt-》data.evt_system_soft_timer.handle == HEART_RATE_TIMER) {
heart_rate_send_new_data(connection_handle);
break;
}
if (evt-》data.evt_system_soft_timer.handle == PULSE_OXIMETER_TIMER) {
pulse_oximeter_send_new_data(connection_handle);
break;
}
if (evt-》data.evt_system_soft_timer.handle == DISPLAY_TIMER) {
hrm_update_display();
break;
}
break;
列表 2:使用該套件和軟件生態系統,開發者通過連接顯示屏并在向現有應用的軟件定時器處理程序中添加一個函數調用 (hrm_update_display)之后進行很小的軟件改動,即可為現有的 HR/SpO2 應用添加顯示功能。(代碼來源:Silicon Labs)
這種可擴展硬件和軟件方法使開發人員能夠快速構建物聯網的工作應用。由于硬件和軟件都易于添加或刪除,開發人員可以更輕松地探索新的設計方案并評估替代性配置。
結論
電池供電型藍牙物聯網設備是流行應用的核心,是滿足市場對更多功能和更長工作壽命的持續需求的關鍵推動力。對于開發者來說,要有效地滿足這些相互沖突的需求,就必須有能力迅速探索新的設計并評估替代性設計概念。使用Silicon Labs 的開發套件和相關軟件,開發者可以快速構建原型,根據需要添加和刪除硬件,以滿足特定的應用要求。
-
處理器
+關注
關注
68文章
19259瀏覽量
229655 -
藍牙
+關注
關注
114文章
5809瀏覽量
170194 -
物聯網
+關注
關注
2909文章
44558瀏覽量
372800 -
soc
+關注
關注
38文章
4162瀏覽量
218167 -
電池
+關注
關注
84文章
10561瀏覽量
129480
發布評論請先 登錄
相關推薦
評論