嵌入式移动终端内置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 协议已经固化在芯片内部。
图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 产品的设计提供一种参考思路,并倡导应用节能技术,研发生产低能耗型产品当作提高企业核心竞争力的有效途径。