嵌入式移動終端內置WIFI 的低功耗設計
1 引言
嵌入式設備是無線通信最重要的應用領域。自2007 年開始,全球Wi-Fi(Wireless Fidelity) 市場高速持續增長,銷量達到2.8 億套。低功耗的無線通信軟硬件設計是嵌入式移動設備重要的研究內容。仍以Wi-Fi 為例,若采用飛思卡爾(Freescale)的WIFI 模組和嵌入式微處理器MCF5249 ,考慮通常手機的電池容量,則通話時間僅為1~2 小時,待機時間也僅有20~26 小時。而從現實應用看,嵌入式移動設備中電池能量有限,在充電后至少應該保障一天的使用時間。因此,解決功率消耗對提高嵌入式WIFI 移動設備的可用性具有重要意義。
本文提出了一種在嵌入式移動設備中WIFI 子系統的低功耗設計思路,芯片采用恩智浦公司的BGW200 模塊,通過合理的設計系統硬件、WIFI 底層的軟件驅動方面、節點管理模式等手段實現了低功耗的WiFi 系統。
2 WIFI 硬件與射頻電路低功耗設計
本設計采用LPC2220 微控制器作為主機端微控制器,它基于一個支持實時仿真和嵌入跟蹤的ARM7TDMI-S CPU。BGW200 是一款WIFI 低功耗系統化封裝(SiP) 芯片組,具備“主機零負荷”性能,MAC 通信協議可以利用內置嵌入的ARM7 核來執行,所以不會對主處理器HOST 造成任何負荷。只有當BGW200 接收到有效數據封包時,才會觸發主處理器工作。
圖1 顯示了WIFI 子系統為實現低功耗目標的硬件電路設計框圖,主要包括BGW200、系統時鐘、低頻睡眠時鐘、和1.8V/3.0V 電源供應、帶通濾波器、天線和“與門”電路。其中用虛線標注的低頻睡眠時鐘和輔助RF 電路在設計中屬于可選項。設計具體細節如下:SPI2接口:考慮到SDIO 對主機資源消耗較大,設計采用SPI 接口。BGW200 分SPI1 和SPI2兩種接口,其中SPI2 是高度從接口(Slave),通過管腳設置CSR0/SCR1 為0/0。兩個SPI 接口共享相同的數據線和時鐘信號線,但是具有不同的片選信號,SPI1 使用GPIO[10] 作為片選信號,SPI2 使用SPI_SS_N(GPIO[6])。SPI2 接口操作獨立于總線時鐘,最高可以工作到66MHz 。SPI2 的IO 接口采用VDD3.3 供電(2.7V 到3.6V)。
圖1? WIFI 子系統硬件框圖
供電單元設計采用了LDO 降壓芯片,由于BGW200 分兩種電壓:射頻部分電壓范圍值(2.7V-3.6V),基帶內核電壓范圍值(1.65V-1.95V)。因此設計依據的因素考慮了芯片的成本、電平值和最大電流負荷、電源輸入輸出效率和噪聲、輸入電壓范圍、輸出電壓精度以及保護特性,采用了TPS73630(3.0V,400mA )和TPS73218(1.8V,250mA)。考慮到陶瓷電容有最優的ESR 特性過濾脈動電壓抖動影響,設計中同時采用了陶瓷電容匹配LDO 芯片。另外,為加強低功耗設計實現,設計用了LPC2220 主控制器的一個GPIO 口來控制BGW200 的開/關狀態來降低功耗。
主系統時鐘和睡眠時鐘。BGW200 工作要求兩個時鐘,主系統時鐘44MHz(10ppm) 和32KHz 的睡眠時鐘。在嵌入式設計中都可以共享主處理器LPC2220 的時鐘資源,其中BGW200 的GPIO[4]通過并聯電容直接連到睡眠時鐘。
2.4GHz 射頻匹配電路。理想狀態下,由于BGW200 的RF 端口已經是50? 的標準阻抗,
2.45GHz 的天線能夠通過50? 的微帶線直接連接到BGW200 的天線端口。在設計中,借助網絡分析儀工具的幫助,設計了LC 匹配電路以達到更高帶寬性能的射頻信號接收性能和最佳的駐波比(回波損耗),具體的LC 參數值取決于PCB(FR4) 介材特性和電子料的布板。天線設計采用了Johanson 公司的型號2450AT45A100,(最大輸入功率:500mW ;天線峰值增益:0.5dBi ;回波損耗:9.5dB)。
3 WIFI 底層驅動移植與節電模式算法
BGW200 芯片提供WinCE5.0 和Linux2.4 內核的標準程序代碼,分別基于TI OMAP/ Intel Bulverde/ 嵌入式平臺。它的底層軟件架構分主機(Host) 和從機(Target) 兩個部分,其中Target 是指BGW200 的MAC 層,相關的MAC 協議已經固化在芯片內部。
3.1 底層驅動架構分析
圖2 表示了Host 主要的功能模塊
客戶機端的驅動(Client Driver)該層主要提供主機的操作系統OS、上層運行程序、以及主機端硬件抽象層(HHAL: Host Hardware Abstraction Layer )之間的連接,它將調用HHAL層的API 參數,對于不同的操作系統OS,該部分驅動要做重新移植。主機端硬件抽象層(HHAL) 該層是服務于SPI/SDIO 接口的主機端抽象接口,它分為兩個部分,通用部分(Common) 和平臺(Platform)相關部分。通用部分對所有的平臺都是相同的,提供高層次的數據處理。而平臺相關部分則依具體的硬件平臺而定,需要提供底層對通信接口(SPI)的讀、寫等操作,需要設計具體的硬件相關資源,如硬件中斷、DMA通道等。
可配置效用層(Configuration Utilities) 針對不同的平臺,提供了WLAN的相應配置工具,例如在WinCE上的ZeroConfig ,或者Linux平臺的Wireless Extension 包。
主機操作系統抽象層(HOSAL) 該層是一個主機側操作系統的抽象接口,它提供了給HHAL的通用部分與操作系統無關的能力。該層以統一的接口支持不同的具體操作系統,目前主要有Linux和WinCE兩類。該模塊主要包含支持HHAL運行的相關OS的API。具體包括:OS相關的結構體初始化、內存管理、定時器、隊列、中斷、線程、事件和互斥鎖。
3.2 WIFI軟件驅動與節電模式設計
本設計OS采用Linux2.4 內核,具體實現分以下幾個部分:
3.2.1 初始化(Initialization)
首先在驅動裝載的過程中由HostDriver 調用PhgOsalRegInit()請求HOSAL層執行initialize 任務來完成內存的分配,然后執行回調函數,在回調函數中傳遞硬件相關的資源,并且注冊事件入口,創建事務線程。準備工作一旦就緒,通過調用PhgHhalInitialize() 立刻轉入HHAL 通用層的處理,在通用層中調用HhalPlatformInitPreBoot()執行硬件相關的代碼如平臺資源初始化、注冊中斷處理函數、創建直接內存訪問通道等。這樣HHAL通用層就具備了同Target 進行數據交換的能力。然后將Firmware 下載到Target 中,并向Target 的內部寄存器寫入START 指令,等待Target 的ACK確認信息,初始化工作即宣告完成。
3.2.2 建立連接(Connection)
在HHAL通用層中已經定義了大量MIB命令字來與Target 的Firmware 執行相匹配,HOST通過PhgHhalQueueMgmtReq() 給TargetT 發起一個請求,對于簡單的命令與回應,通過設置和讀取TargetT 的內部寄存器來完成。如果有數據需要傳輸,Target 向HOST請求中斷,并通過直接內存訪問通道DMA把數據傳輸到HOST ,再由HOST 提交給操作系統上層。建立連接的過程HOST向Target 發起SCAN、JOIN、AUTH 、ASSOC 等請求,等待Target 執行完成并返回確認,HOST收到確認后轉入在初始化階段注冊的相應事件入口,通知上層系統已經完成連接的建立。
3.2.3 數據通訊(Communication)
數據通訊實際上通過M2S 和S2M 兩個 DMA 通道來完成。發送數據同樣是調用PhgHhalQueueMgmtReq() 發起請求,待Target 準備就緒,調用HhalPlatformM2SDma()將數據發送到Target 中,再由Target 轉換為RF 信號向無線連接點AP 發送。接收數據則是Target 由連接點收到RF 信號,解析為MAC 數據包,向HOST 發出中斷請求,待HOST 準備就緒,調用HhalPlatformS2MDma() 從Target 中接收數據。
3.2.4 節電算法軟件設計(Power Management)
根據移動終端的具體運用場景,在底層驅動中開發了ACTIVE 、Max POWER_SAVE 、Fast POWER_SAVE 、POWER_SLEEP四種電源管理模式。工作模式(Active Mode )時,電源管理關閉,芯片處于完全上電狀態;最大功耗節電模式(Max POWER_SAVE )時,滿足在用戶可以選擇的偵聽間隔最大程度內,達到功耗節省最優。快速功耗節電模式(Fast POWER_SAVE )時,滿足在用戶固定的偵聽間隔,達到良好的功耗節省最優。睡眠模式(POWER_SLEEP) 時, 芯片處于關機狀態,用戶需要人工操作重新回到芯片工作狀態。本設計中驅動裝載后默認的是ACTIVE, 同時在事務線程中對電源模式進行檢測,當上層軟件需要轉換為POWER_SAVE, 驅動仍然通過PhgHhalQueueMgmtReq() 向Target 發起請求,使得Target 切換到POWER_SAVE 工作模式,在這種模式下,BGW200 只消耗很少的電能,同時仍進行MAC層的處理,上層軟件可以根據數據傳輸的需求來實時切換Target 的工作模式,以達到有效節能的目標。
4 測試結果
本設計的WIFI 子系統在實際環境下進行了功耗測試,測試用的無線連接點AP 用的是Linksys 公司的WRT54G, 無線鏈路的距離是1 米,軟件設置到最大發射功率為+16dBm,同時按照802.11b 協議規范的要求,分別在四種不同速率1M/2M/5.5M/11M 情況下測量出發射和接收功耗。測試結果如表1 所示。
表1? BGW200 在LPC2220/Linux2.4 系統平臺上的功耗測試
WIFI 子系統的待機功耗為6.36 毫瓦(100 毫秒信標間隔)和2.23 毫瓦(300 毫秒信標間隔),實現了對WIFI 的低功耗設計要求。加上在本論文設計的包括LPC2220 微控制器作為主機端的整個系統平均待機電流為15mA, 通話的平均電流為300mA ,通常以設備采用650mA 的電池能耗下,系統的待機時間可以到48 小時,連續通話時間為3 小時。
5 結束語
本文作者創新點在于:通過實際的設計研究與實驗測試對比,提出在嵌入式移動設備中WIFI 子系統的低功耗設計方法,其中與WIFI 連接的HOST 主機端(嵌入式微處理器)并不局限于特定的型號。本文的低功耗設計到了多個技術層面,包括芯片分析選擇、硬件系統外圍電路架構、電源管理設計優化、PCB 布板與射頻電路、軟件驅動的四個節電模式。它為廣大嵌入式移動設備企業及相關科研機構設計最終WIFI 產品的設計提供一種參考思路,并倡導應用節能技術,研發生產低能耗型產品當作提高企業核心競爭力的有效途徑。
評論
查看更多