由于 Wi-Fi 帶寬高且普遍存在,因此仍是許多物聯網 (IoT) 設備的主要連接方式。但是,對于可穿戴設備和其他電池供電的物聯網設備來說,傳統 Wi-Fi 解決方案的電源要求會讓持續 Wi-Fi 連接變得不切實際,通常要求開發人員在設備功能、性能或電池續航時間方面做出一些取舍。 對于某些團隊而言,雖然可以選擇設計定制的 Wi-Fi 解決方案來實現低功耗優化,但這可能是一項昂貴且耗時的工作,尤其是在缺乏合格射頻設計人員的情況下。這時就需要一個更完整的解決方案,能夠讓低功耗物聯網設備實現持續 Wi-Fi 連接。 本文將說明開發人員如何使用 Dialog Semiconductor 的無線片上系統 (SoC) 器件內置的低功耗功能實現持續 Wi-Fi 連接。 移動設備支持 Wi-Fi 連接所面臨的挑戰 對于圍繞個人移動產品、智能家居設備和樓宇自動化系統等構建的各種物聯網應用,Wi-Fi 具備這些應用所需的普遍存在性和性能特征。但是,以往 Wi-Fi 子系統的電流消耗相對較高,迫使開發人員犧牲電池供電型物聯網設備的電池續航時間或信號強度。 傳統 Wi-Fi 解決方案的高功率要求給物聯網開發人員帶來了更多挑戰。例如,要同時實現 Wi-Fi 連接性和更長的電池續航時間,就需要容納更大的電池,這可能會增加設計尺寸和復雜性。對于可能無法使用較大電池的可穿戴設備或許多物聯網設備,嘗試通過降低 Wi-Fi 信號強度(及相關功耗)來延長電池續航時間可能也不行。 除了這些問題,物聯網開發人員還面臨著典型 Wi-Fi 信號環境的實際限制,因為多路干擾和其他射頻 (RF) 信號特性可能導致信號強度發生顯著變化。在諸如筆記本電腦之類的應用中,消費者只需將筆記本電腦移動到 Wi-Fi 信號更好的位置就能解決問題。相比之下,智能鎖或家用電器無論安裝在何處,都需要保持可靠的連接性和穩定性能。 為了實現更長的電池續航時間和穩定的 Wi-Fi 信號強度,開發人員通常會充分利用大多數高級處理器、無線電和其他復雜硬件元器件中提供的低功耗休眠模式。開發人員可以這樣進行設計實現,即最大限度延長高耗電設備各自處于低功耗模式的時間,進而延長系統設計的電池續航時間,這樣通常對系統功能的影響很小。在這些設計中,低功耗計時器會周期性地短暫喚醒系統,以讀取并無線傳輸傳感器數據,然后再返回休眠模式。 但是,對于某些物聯網應用,物聯網設備需要保持與 Wi-Fi 網絡的持續連接,以確保快速響應通過移動應用、臺式機軟件或其他設備發出的用戶命令。例如,智能家居中的智能鎖、電燈和開關需要保持連接狀態,以對用戶命令做出即時響應。對于用戶而言,遲遲等待基于計時器的器件最終喚醒,檢測命令并最終打開門鎖或電燈是完全無法接受的。 Dialog Semiconductor 的 DA16200 SoC 和相關模塊提供了有效的低功耗解決方案,能夠滿足持續 Wi-Fi 連接和延長電池續航時間的要求。 使用無線 SoC 實現 Wi-Fi 連接 DA16200 SoC 專為電池供電的物聯網設計打造,將 Arm® Cortex®-M4F 和運行完整網絡堆棧的完整 Wi-Fi 無線電子系統結合在一起,無需外部網絡處理器或主機處理器即可提供堆棧功能。除了無線電子系統,該器件還集成了物聯網設計中通常需要的全套功能塊和接口(圖 1)。 ![]() 圖 1:Dialog Semiconductor 的 DA16200 SoC 提供了完整的 Wi-Fi 解決方案,能夠提供持續 Wi-Fi 連接,同時消耗最小的電流。(圖片來源:Dialog Semiconductor) 除了多個標準接口,該器件還包括一個 4 通道 12 位逐次逼近寄存器 (SAR) 模數轉換器 (ADC),以支持模擬信號采集。 為了執行應用,DA16200 包含多個內部存儲器,包括: · 用于引導加載程序、系統內核、網絡堆棧和驅動程序的只讀內存。 · 用于程序數據的靜態隨機存取存儲器 (SRAM)。程序代碼在通過設備的外部串行閃存接口訪問的串行閃存上進行芯片內執行 (XIP)。 · 用于存儲設備信息以及加密密鑰和安全引導加載程序的一次性可編程 (OTP) 存儲器。由于 OTP 數據只能通過 OTP 控制器訪問,而對通過系統總線進行的常規數據訪問將保持不可見,因而 OTP 數據保持安全。 為了幫助開發人員滿足對互聯設備安全性不斷增長的需求,DA16200 SoC 集成了廣泛的安全性機制,包括用于高級加密標準 (AES)、安全散列算法 (SHA) 和其他加密法的加密引擎,以及對傳輸層安全 (TLS) 協議的支持。該器件還包括 Arm TrustZone CryptoCell-312 (CC312) 安全知識產權 (IP)。CC312 專為低功耗設備而設計,支持安全引導并為安全應用提供信任根。 借助一個綜合射頻模塊,該器件簡化了 Wi-Fi 連接。除了內置的 802.11 媒體訪問控制 (MAC) 和 802.11b/g/n 物理 (PHY) 層,無線子系統還包括一個片上收發器,該收發器集成了功率放大器 (PA) 和低噪聲放大器 (LNA),消除了對外部有源元器件的需求。在運行中,DA16200 的 Arm Cortex-M4F 處理器執行嵌入式傳輸控制協議/互聯網協議 (TCP/IP) 堆棧,以卸載系統主機處理器的連接性操作。 DA16200 SoC 集成了 DC-DC 轉換器、低壓差 (LDO) 穩壓器和電源開關,以便為包括射頻模塊在內的各種模塊供電。在器件的實時時鐘 (RTC) 模塊的管理下,轉換器和 LDO 從單個 VBAT 電池電源生成所有所需的電源軌。DC-DC 轉換器從 VBAT 為射頻模塊和數字 LDO 產生 1.4 V 電壓,I/O LDO 為外部閃存和器件的通用 I/O (GPIO) 生成其所需的 1.8 V 電壓(圖 2)。 ![]() 圖 2:DA16200 SoC 的電源管理單元控制著該器件的集成電源組件,向其獨立功率域供電。(圖片來源:Dialog Semiconductor) DA16200 SoC 的電源管理單元通過管理器件的三種低功耗(休眠)模式,來控制這些獨立電源域的電源: · Sleep 1 模式提供 0.2 微安 (μA) 的最低運行功耗:在此模式下,器件大多數時間會關閉電源,但會在 150 毫秒 (ms) 內喚醒,以便在外部觸發信號傳遞給 SoC 的兩個喚醒引腳或多個數字 I/O 之一時,或者當模擬輸入信號超過預定義的閾值時做出響應。 · Sleep 2 模式僅消耗 1.8 μA 的電流,同時保留 RTC 功能:在此模式下,SoC 會在不到 100 ms 內喚醒,以便在發生外部喚醒事件時或編程的內部定時器完成定時后做出響應。 · Sleep 3 模式提供了獨特的持續連接 Wi-Fi 模式,該模式可以消耗最小的電流,并在檢測到傳入 Wi-Fi 數據包后的不到 2 ms 內喚醒:如下所述,將休眠模式 3 與常規 TCP 保持活動功能結合使用,為實現平均電流消耗小于 50 μA 的持續 Wi-Fi 連接功能提供了基礎。 動態電源管理技術可實現持續的 Wi-Fi 連接 這些低功耗休眠模式的基礎是 Dialog Semiconductor 專有的動態電源管理 (DPM) 技術,該技術可以關閉未使用的片上微元件,從而在設備不傳輸或接收數據時將功耗降至最低。在 Wi-Fi 操作期間,DPM 使用高級算法在需要時喚醒所需的微元件,從而將傳輸和接收無線電操作期間的功耗降至最低。 Dialog Semiconductor 的 DA16200 軟件開發套件 (SDK) 通過其 DPM Manager 應用程序編程接口 (API) 來抽象化電源管理和 DPM 操作的細節。對于定制軟件開發,SDK 允許訪問 DA16200 應用程序和系統服務的軟件堆棧(圖 3)。 ![]() 圖 3:DA16200 SoC 的軟件架構提供了支持物聯網設備中標準 Wi-Fi 連接所需的全套系統和應用程序服務。(圖片來源:Dialog Semiconductor) 結合使用 DPM Manager 和 NetX Duo TCP/IP 庫實現持續 Wi-Fi 連接。NetX Duo 庫提供 TCP 保持活動 (keepalive) 功能,該功能將不含數據的 TCP 數據包發送到 Wi-Fi 路由器,從而確保路由器保持 Wi-Fi 連接處于活動狀態。開發人員只需將當前的 TCP 套接字選項 keepalive_enabled 設置為 true 即可調用此功能,并提供保持活動數據包之間的秒數 keepalive_timeout。NetX Duo 會根據需要自動傳輸保持活動幀。 當保持活動數據包維持與路由器或其他主機之間的網絡連接時,DA16200 從 Sleep 3 模式喚醒的能力依賴于檢測 802.11 管理幀中嵌入的標準流量指示圖 (TIM) 或傳送流量指示圖 (DTIM) 信息元素,并用于通知網絡站點(例如,基于 DA16200 的系統)有可用的網絡流量。當 DA16200 處于 Sleep 3 模式時,DA16200 的 DPM 技術可確保無線電子系統在尋找 TIM/DTIM 元素時使用最小的功率。當 DA16200 無線電子系統檢測到 TIM/DTIM 元素時,將喚醒 SoC 以開始處理正常的 Wi-Fi 流量,該過程與其他網絡站點一樣。 通過 DA16200 DPM Manager API,開發人員只需進行幾次直觀的調用即可實現此功能。在定義了所需的 DPM 配置(包括參數和回調)之后,開發人員將使用 DPM Manager API 函數調用來執行調用或與 DPM Manager 進行交互。DA16200 DPM 的技術以透明化的方式處理 Sleep 3 模式的進入和退出操作。 SDK 中包含的示例應用程序說明了實現此操作序列所需的基本設計模式(清單 1)。 副本 #define TCP_CLIENT_KA_DPM_SAMPLE_DEF_KEEPALIVE_TIMEOUT 55 [lines deleted] void tcp_client_ka_dpm_sample_wakeup_callback() { PRINTF(GREEN_COLOR " [%s] DPM Wakeup\n" CLEAR_COLOR, __func__); dpm_mng_job_done(); //Done operation } [lines deleted] void tcp_client_ka_dpm_sample_recv_callback(void *sock, UCHAR *rx_buf, UINT rx_len, ULONG rx_ip, ULONG rx_port) { int status = NX_SUCCESS; //Display received packet PRINTF(" =====> Received Packet(%ld) \n", rx_len); tcp_client_ka_dpm_sample_hex_dump("Received Packet", rx_buf, rx_len); [lines deleted] dpm_mng_job_done(); //Done operation } [lines deleted] void tcp_client_ka_dpm_sample_init_user_config(dpm_user_config_t *user_config) { [lines deleted] //Set DPM wakeup init callback user_config->wakeupInitCallback = tcp_client_ka_dpm_sample_wakeup_callback; [lines deleted] //Set Recv callback user_config->sessionConfig[session_idx].session_recvCallback = tcp_client_ka_dpm_sample_recv_callback; [lines deleted] //Set KeepAlive timeout user_config->sessionConfig[session_idx].session_ka_interval = TCP_CLIENT_KA_DPM_SAMPLE_DEF_KEEPALIVE_TIMEOUT; [lines deleted] } [lines deleted] void tcp_client_ka_dpm_sample(ULONG arg) { [lines deleted] //Register user configuration dpm_mng_regist_config_cb(tcp_client_ka_dpm_sample_init_user_config); //Start TCP Client Sample dpm_mng_start(); return ; } 清單 1:通過 DA16200 SoC,開發人員可以使用配置和一些 DPM API 函數調用來實現持續 Wi-Fi 連接。(代碼來源:Dialog Semiconductor) 如清單 1 所示,開發人員主要使用初始化函數 (tcp_client_ka_dpm_sample_init_user_config()) 來實現此功能,該函數可設置各種配置參數,包括保持活動間隔 (TCP_CLIENT_KA_DPM_SAMPLE_DEF_KEEPALIVE_TIMEOUT),并提供各種回調,包括用于 DMP 喚醒的回調 (tcp_client_ka_dpm_sample_wakeup_callback()) 和用于處理傳入數據包的回調 (tcp_client_ka_dpm_sample_recv_callback())。要開始 TCP 保持活動和 DPM 喚醒序列,只需一個單獨的函數 (tcp_client_ka_dpm_sample()) 即可調用配置例程 (dpm_mng_regist_config_cb(tcp_client_ka_dpm_sample_init_user_config)) 和 DMP Manager (dpm_mng_start())。 如前所述,整個序列(包括標準 TCP 保持活動數據包和 DA16200 啟用 DPM 的 Wi-Fi 監控)將實現平均電流消耗通常小于 50 μA 的持續 Wi-Fi 連接能力。 可以使用相同的設計模式將 SoC 從其休眠模式喚醒,以處理其他操作。例如,示例應用程序顯示了如何使用 DA16200 的 RTC 喚醒 SoC 來處理數據(清單 2)。 副本 #define SAMPLE_FOR_DPM_SLEEP_3 // Sleep Mode 3 #define MICROSEC_FOR_ONE_SEC 1000000 #define RTC_TIMER_WAKEUP_ONCE 5 // seconds #define RTC_TIMER_WAKEUP_PERIOD 10 // seconds static void rtc_timer_dpm_once_cb(char *timer_name) { [lines deleted] static void rtc_timer_dpm_periodic_cb(char *timer_name) { /* *Caution : Don't spend a lot of time in the calback function called by timer. */ dpm_app_sleep_ready_clear(SAMPLE_RTC_TIMER); PRINTF("\nWakeup due to Periodic RTC timer!!!\n"); tx_thread_sleep(10); dpm_app_sleep_ready_set(SAMPLE_RTC_TIMER); } [lines deleted] void rtc_timer_sample(ULONG arg) { [lines deleted] /* Periodic timer */ status = dpm_timer_create(SAMPLE_RTC_TIMER, "timer2", rtc_timer_dpm_periodic_cb, RTC_TIMER_WAKEUP_PERIOD, RTC_TIMER_WAKEUP_PERIOD); [lines deleted] dpm_app_sleep_ready_set(SAMPLE_RTC_TIMER); [lines deleted] } while (1) { /* Nothing to do... */ tx_thread_sleep(100); } } 清單 2:開發人員可以使用 DA16200 通過幾個 DPM API 函數調用實現基于定時器的低功耗功能,以確保 DA16200 休眠期間的功耗最小。(代碼來源:Dialog Semiconductor) 如清單 2 所示,開發人員調用 DPM Manager API 函數 (dpm_timer_create()) 創建定時器 (SAMPLE_RTC_TIMER),并調用另一個 DPM Manager API 函數 (dpm_app_sleep_ready_set()) 來指示系統已準備好進入休眠狀態。然后,DPM 引擎將根據當前的活動確定系統可以多快返回低功耗休眠模式。稍后,當定時器完成定時后,系統將執行開發人員的回調函數 rtc_timer_dpm_periodic_cb(),該函數將執行所需的操作。在本例中,只是將通知打印到控制臺。操作完成后,相同的回調函數將執行 dpm_app_sleep_ready_set() 來通知 DPM 引擎系統已準備好進入休眠狀態。和之前一樣,DPM 引擎會在適當的時候完成到休眠模式的轉換。 插入式模塊簡化了 Wi-Fi 設計 DA16200 SDK 簡化了軟件設計,而該器件廣泛的片上功能讓硬件接口設計變得相對簡單。結合使用 DA16200 SoC 和外部閃存設備(例如 Winbond Electronics 的 W25Q16JVSNIQ 16 Mb NOR 存儲器 IC)以及僅僅幾個附加元器件,開發人員就可以實現支持 Wi-Fi 的安全物聯網設計(圖 4)。 ![]() 圖 4:Dialog Semiconductor 的 DA16200 SoC 具有廣泛的集成功能,只需要一個外部串行閃存和極少的附加元器件即可實現一個完整的 Wi-Fi 系統。(圖片來源:Dialog Semiconductor) 對于基于 DA16200 SoC 進行設計的開發人員,可以轉而使用 Dialog Semiconductor 模塊加速開發,因為無需再針對 SoC 硬件接口進行設計。除了 DA16200 SoC,這些模塊還包括 4 MB 閃存、射頻組件以及可選的板載芯片天線 (DA16200MOD-AAC4WA32) 或用于外部天線 (DA16200MOD-AAE4WA32) 的 u.FL 連接器。這些尺寸僅為 13.8 x 22.1 x 3.3 毫米 (mm) 的模塊已通過 FCC、IC、CE 和其他監管機構的全面認證,為實現低功率持續 Wi-Fi 連接提供了插入式硬件解決方案。 希望探索持續 Wi-Fi 連接并快速完成基于 DA16200 SoC 的物聯網原型設計的開發人員可以立即利用 Dialog Semiconductor DA16200MOD-DEVKT 開發套件的優勢。該套件將 DA16200MOD 模塊與 USB 接口、按鍵和連接相結合,有助于加快基于 DA16200 的設計開發和調試。 總結 保持持續 Wi-Fi 連接是筆記本電腦和其他互聯產品的常規功能。但是對于可穿戴設備和其他電池供電型物聯網設備來說,傳統 Wi-Fi 解決方案的電源要求會讓持續 Wi-Fi 連接變得不切實際,通常要求開發人員在設備功能、性能或電池續航時間方面做出一些取舍。 Dialog Semiconductor 的 SoC 提供了一個完整的 Wi-Fi 解決方案,能夠在消耗最小電流的同時提供持續的 Wi-Fi 連接。如上所示,使用該 SoC 或其相關模塊,開發人員可以快速實現安全的電池供電型設備,為用戶帶來持續 Wi-Fi 連接的優勢,同時滿足其對延長電池續航時間的需求。 來源:Digi-Key 作者:Stephen Evanczuk |