欢迎来到天天文库
浏览记录
ID:6696882
大小:452.00 KB
页数:10页
时间:2018-01-22
《多功能usb智能充电器的研发》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、多功能USB智能充电器的研发现在市场上的手机充电器大多数都是针对某种品牌手机的电池来设计的,只能对一种或者某几种电池进行充电,并且其充电模式在设计充电器时已经固化,不能够满足不同用户的使用要求。市场上有同类的USB充电器出现,但是这类充电器只是利用到USB接口上提供的电源,没有利用计算机进行数据处理。因此其与一般的利用市电的充电器相比,功能上并没有多大的改进。本人所研发的多功能USB智能充电器除了利用到PC机USB接口提供的供电电源外还利用到PC机内部的数据处理能力。充电所需得电源由USB接口提供(电压大概在5V左右),通过外部的USB接
2、口电路,和内部的USB设备驱动程序以及win32驱动程序,实现外部充电电路和计算机之间的数据传输。通过计算机内部win32应用程序可以使用户对充电模式进行自由设置,以满足不同用户的需求,并且可以实现一充电器对多种电池进行充电的要求。因此,我们主要在硬件电路元器件的选择和如何建立外部硬件电路与PC机USB接口之间的数据传输方面进行研究。要设计USB设备,就要对USB设备的工作原理有所了解,因此我们对USB设备功能的实现进行了解。一个USB设备能够正常工作应该包含以下三大部分:外部硬件电路、USB设备驱动程序和win32应用程序。其中外部硬件
3、电路和USB设备驱动程序是每一个USB设备正常工作所必需的。对于本课题研究的装置来说,以上说到的三个部分都是功能实现所必需的。外部硬件电路包括充电控制电路和USB接口电路两部分电路;USB设备驱动程序负责USB设备初始化,建立起USB设备与应用程序间进行数据传输的配置环境;win32应用程序实现提供用户对外部硬件设备进行操作的界面,使用户能够通过鼠标和键盘对USB硬件设备进行控制,并且通过应用程序能够使用户对外部硬件电路进行监视。图1为USB设备正常工作所需功能模块结构图。用户利用应用程序对硬件电路发出的请求并不能够直接到达外部USB设备
4、,而是先把这些请求发送到其驱动程序堆栈的顶部,通过驱动程序才能完成用户对外部硬件电路的操作。下面,我们对前期的研究成果进行简单的介绍。一、各部分功能实现的研究结果:(一)USB外部硬件电路的实现外部硬件电路实现方框图如图2所示。电路由充电部分电路和USB接口部分电路两部分构成。充电部分电路要实现的功能如下:电池类型检测、放电控制电路、充电电流检测、充电电压检测、充电电流控制和充电电压控制。其中充电电流和电压检测和控制可以通过对电流和电压其中一个参数的检测和控制来实现另外一个参数的检测和控制。USB接口部分电路由USB接口芯片来实现,主要负
5、责外部硬件电路和PC机之间的数据传输控制。传输是双向的,充电电流和电压参数通过AD转换后由接口电路送进PC机;控制信号由PC机win32应用程序发出,通过接口电路处理输出,经过DA转换之后对充电电流和电压进行控制。(二)USB设备驱动程序作为Windows98和Windows2000推荐的一种新技术,USB设备驱动程序与以前的Windows95下VXD方式驱动程序有所不同,它是WDM类型的,且不直接和硬件打交道。WDM(WindowsDriverMode,Windows驱动程序模型)是Microsoft最新推出的驱动程序模型,旨在实现对新
6、硬件支持的基础上,进一步降低所需驱动程序的数量和复杂性,以简化驱动程序的开发。图3描述了一个WDM驱动程序的基本组成,它包括一下5个例程:(1)驱动程序入口例程(DriverEntry例程):处理驱动程序的初始化。(2)即插即用例程(PnP例程):处理PnP设备的添加、删除和停止。(3)分发例程:处理用户应用程序发出的各种I/O请求。(4)电源管理例程:处理电源管理请求。(5)卸载例程(Unload例程):处理驱动程序的卸载。在WDM驱动程序中,即插即用(PnP)管理器负责通知操作系统何时添加(或删除)了一个设备,并使用INF文件来查找新
7、设备的驱动程序;而其它模式的驱动程序必须独立发现自己的硬件设备,并需使用专用的安装程序来安装。另外,在驱动程序的加载方面,WDM不是通过驱动程序的名称来识别的,而是通过一个符号连接名或一个128b的GUID(全局唯一标识符)来识别。编写WDM驱动程序和其它模式驱动程序基本上相同,但在细节上也存在着很多区别。其代码的主要区别在于如何创建设备,其它模式的驱动程序参数一般由注册表提供,即在DriverEntry例程中调用注册表,然后根据注册表的内容再调用CeateDevice;但对于WDM驱动程序,因为其支持PnP,在设备加载时系统会向驱动程序
8、发出PnP消息,所以它一般是在AddDevice例程中调用CreateDevice,或是在PnP消息的处理例程中调用,而不是在DriverEntry例程中调用。(三)win32应用程序win3
此文档下载收益归作者所有