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