随着技术的发展和普及,手持设备出现在越来越多的场合。手持设备以体积小、重量轻、可携带性好等优势吸引了各种电子设备向手持方向转型和发展,同时也必然地提出了电池的充电和电量计量问题。手机、数码相机、MP3、笔记本、PDA等手持设备都必备1个电池的充电电路以及可以在手持设备显示界面上反馈当前电池电量的计量电路。本文通过2款高性能的芯片LM3658和DS2786,以PXA270处理器为例,介绍1种可应用于各种手持设备场合的电路模块。
1 硬件设计
1.1 PXA270处理器简介
PXA270嵌入式处理器是Intel公司推出的基于XS-cale架构的新一代高性能处理器,主用应用于高端无线手持和移动设备。PXA270主频可以设置在312~624 MHz之间,内部集成了WMMX技术,拥有高性能、低功耗的多媒体加速能力,可以很好地支持音频、视频解码。同时它集成了Intel先进的SpeedStep技术,可以动态地调节CPU的性能,实现高效的功耗控制。此外,PXA270内部提供了UART、I2C、I2S、USB等各种常用接口,使得PXA270可以应用在各种场合。
1.2 电池充电及电量计量电路
由于PXA270出色的移动性能,电池供电成为了PXA270系统的必需电路。本系统中的充电芯片选用了美国国家开云棋牌官网在线客服公司(National Semi-conductor Corporation)推出的LM3658。它可以使用USB充电,也可以使用交流适配器充电,同时具有电源管理功能。该芯片可为单颗锂电池和锂聚合物电池安全充电,终止充电误差不超过1.5%,有助延长电池寿命,因此适用于多种场合下的手持设备,包括PDA、MP3、数码相机和手机等。图1是LM3658的引脚分布和典型电路。
如图1所示,EN_b是充电的使能端,低电平表示允许充电,高电平表示禁止充电。CHG_IN和USBpwr引脚分别表示交流适配器输入和USB输入。输入电压都是在4.5~6 V之间。LM3658芯片在利用USB或交流适配器为锂电池或锂聚合物电池充电时,若这2种电源都处于开启状态,充电器芯片便会自动选用预先设定的交流电模式。如果用交流适配器电源充电,可以通过Iset引脚与地址之间连接1个电阻,该电阻阻值的大小决定了充电时的电流大小。如果用USB给电池充电,可以通过USB_sel引脚决定充电电流的大小,该引脚低电平时充电电流为100 mA,高电平时充电电流为500mA。LM3658通过BATT引脚连接电池的正极,为电池提供充电电流。同时通过Ts引脚连接电池的负极,获取电池的温度信息。
Statl和Stat2高低电平的不同组合可以反映当前电池的4种充电状态,如表1所列。可以将Statl和Star2的状态输出到PXA270的GPIO,通过软件程序读出当前状态,并显示在用户界面上。
本系统中的电量计量芯片选用的是美国Dallas Semiconductor公司推出的一款基于开路电压(OCV)的电量计量芯片——DS2786。该芯片能够根据电池闲置期间的开路电压来估算可充电锂离子和锂离子聚合物电池的可用电量。通过储存在IC中的查找表,开路电压可用于确定电池的相对电量,可以在电池包插入后立即得到准确的电量信息。当电池高速率放电时,无法使用OCV计量,因此DS2786使用库仑计量作为估算相对电量的第2种方法。
DS2786以百分比的形式给出剩余电量的同时,还给出了电池电压、电流和温度信息。电量计算所需的电池特性和应用参数存储在片上EE-PROM中。为了支持在某些对成本比较敏感的场合对电量进行监测,DS2786还提供了电流、电压和温度的测量数据。
DS2786可以应用在手持设备上,也可安装在电池包内,其典型应用如图2所示。VDD是芯片DS2786的工作电源输入引脚,而VIN则是所测量电池的电压输入引脚。
通过VPROG引脚可以对芯片内部EEPROM里存储的查找表进行修改。SCL和SDA分别是串行时钟输入和串行数据输入/输出,可以将电量计量数据传递给PXA270上的I2C接口进行读取操作。在2个辅助输入端AN0和ANl,可通过比例计量法提供电池包识别(PACK ID)电阻和热敏电阻的阻抗计量。
本系统采用PXA270+LM3658+DS2786组成1个完整的嵌入式系统的电池充电及电量计量模块。LM3658负责电池的充电功能和反馈当前电池的充电状态,DS2786负责提供当前电池的剩余电量信息,而PXA270则提供系统的控制和数据接收功能。
模块的系统框图如图3所示。由于没有采用USB电源供电,因此将LM3658芯片的CHG-IN引脚直接5 V输入。BATT端接上电池的正极进行充电。在电池的正极同时接上N沟道的MOSFET管,可以实现对电池的安全保护,防止充电过量,出现电流过大、温度过高等情况。电池的充电状态通过Statl和Stat2引脚将信息输出到PXA270的GPIO进行读取操作。DS2786的VDD引脚用5 V外接电压直接供电。而VIN引脚既可以用电池电压输入,也可以用外接5 V电压输入。当电池电压输入VIN的时候,DS2786可以根据OCV查找表计算电池的剩余电量。当电池高速率放电时,通过电流感测电阻R进行库仑计测量。最终通过SDA和SCL将电量信息输出给PXA270的I2C接口。
2 软件设计
本系统中PXA270上面运行的嵌入式操作系统采用微软公司的Windows CE。Windows CE是实时操作系统,支持在多种CPU硬件平台上运行,并且提供了强大的开发工具。为了使DS2786在系统中能够正常地工作,必须对其编写基于Windows CE 5.O的驱动程序。
本模块的驱动程序设计采用的是流接口的形式。Windows CE的流接口驱动程序以DLL(动态链接库)的形式存在,由设备管理器(通常是de-vice.exe或者gwes.exe)统一加载、管理和卸载。与具有单独目的的本机设备驱动程序相比,所有流接口驱动程序都是用同一接口,并调用同一个函数集。每个流式接口驱动程序必须实现1组标准的函数,用来完成标准的文件I/O函数和电源管理函数,这些函数提供给Windows CE操作系统的内核使用。这些函数通常叫做流式接口驱动程序的DLL接口。同时,本驱动程序设计采用分层驱动的形式。分层驱动程序把驱动程序的代码分为2层:上面一层叫模型设备驱动(MDD),下面一层叫平台相关驱动(PDD)。Windows CE操作系统自带驱动的MDD代码,MDD的代码是无需更改的,只需修改PDD层的代码。本系统的主要涉及函数如下:
驱动程序调用PDD层的初始化函数BatteryPDDlnitialize,初始化CPU的GPIO、相关寄存器和电池状态全局变量。同时定义了1个SYSTEM_ POWER_STATUS_EX2结构体变量sps。通过BatteryPDDGetStatus函数从DS2786芯片中得到电池当前的状态信息来更新sps结构体中的各个电池信息。用户界面上也可以根据sps结构体中的内容更新当前的显示状态。这样就完成了电量计量的实时更新和显示。
结语
本文研究并设计了一种电池充电及电量计量的硬件电路,并且给出了在Windows CE操作系统下的驱动设计,实现了完整的软硬件模块。该模块设计简单,性能出色,可以满足大多数情况下手持消费电子的需求,具有很好的应用前景。