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