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