版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、嵌入式系统TCP/IP网络解决方案多功能USB智能充电器的研发梁志明(微02) 陈智荣(研04)现在市场上的手机充电器大多数都是针对某种品牌手机的电池来设计的,只能对一种或者某几种电池进行充电,并且其充电模式在设计充电器时已经固化,不能够满足不同用户的使用要求。市场上有同类的USB充电器出现,但是这类充电器只是利用到USB接口上提供的电源,没有利用计算机进行数据处理。因此其与一般的利用市电的充电器相比,功能上并没有多大的改进。本人所研发的多功能USB智能充电器除了利用到PC机USB接口提供的供电电源外还利用到PC机内部的数据处理能力。充电所需得电源由USB接口提供(电压大概在5V左右),通过外
2、部的USB接口电路,和内部的USB设备驱动程序以及win32驱动程序,实现外部充电电路和计算机之间的数据传输。通过计算机内部win32应用程序可以使用户对充电模式进行自由设置,以满足不同用户的需求,并且可以实现一充电器对多种电池进行充电的要求。因此,我们主要在硬件电路元器件的选择和如何建立外部硬件电路与PC机USB接口之间的数据传输方面进行研究。要设计USB设备,就要对USB设备的工作原理有所了解,因此我们对USB设备功能的实现进行了解。一个USB设备能够正常工作应该包含以下三大部分:外部硬件电路、USB设备驱动程序和win32应用程序。其中外部硬件电路和USB设备驱动程序是每一个USB设备正
3、常工作所必需的。对于本课题研究的装置来说,以上说到的三个部分都是功能实现所必需的。外部硬件电路包括充电控制电路和USB接口电路两部分电路;USB设备驱动程序负责USB设备初始化,建立起USB设备与应用程序间进行数据传输的配置环境;win32应用程序实现提供用户对外部硬件设备进行操作的界面,使用户能够通过鼠标和键盘对USB硬件设备进行控制,并且通过应用程序能够使用户对外部硬件电路进行监视。图1为USB设备正常工作所需功能模块结构图。用户利用应用程序对硬件电路发出的请求并不能够直接到达外部USB设备,而是先把这些请求发送到其驱动程序堆栈的顶部,通过驱动程序才能完成用户对外部硬件电路的操作。下面,我
4、们对前期的研究成果进行简单的介绍。一、各部分功能实现的研究结果:(一)USB外部硬件电路的实现外部硬件电路实现方框图如图2所示。电路由充电部分电路和USB接口部分电路两部分构成。充电部分电路要实现的功能如下:电池类型检测、放电控制电路、充电电流检测、充电电压检测、充电电流控制和充电电压控制。其中充电电流和电压检测和控制可以通过对电流和电压其中一个参数的检测和控制来实现另外一个参数的检测和控制。USB接口部分电路由USB接口芯片来实现,主要负责外部硬件电路和PC机之间的数据传输控制。传输是双向的,充电电流和电压参数通过AD转换后由接口电路送进PC机;控制信号由PC机win32应用程序发出,通过接
5、口电路处理输出,经过DA转换之后对充电电流和电压进行控制。(二)USB设备驱动程序作为Windows98和Windows2000推荐的一种新技术,USB设备驱动程序与以前的Windows95下VXD方式驱动程序有所不同,它是WDM类型的,且不直接和硬件打交道。WDM(Windows Driver Mode,Windows驱动程序模型)是Microsoft最新推出的驱动程序模型,旨在实现对新硬件支持的基础上,进一步降低所需驱动程序的数量和复杂性,以简化驱动程序的开发。图3描述了一个WDM驱动程序的基本组成,它包括一下5个例程:(1) 驱动程序入口例程(DriverEntry例程):处理驱动程序的
6、初始化。(2) 即插即用例程(PnP例程):处理PnP设备的添加、删除和停止。(3) 分发例程:处理用户应用程序发出的各种I/O请求。(4) 电源管理例程:处理电源管理请求。(5) 卸载例程(Unload例程):处理驱动程序的卸载。在WDM驱动程序中,即插即用(PnP)管理器负责通知操作系统何时添加(或删除)了一个设备,并使用INF文件来查找新设备的驱动程序;而其它模式的驱动程序必须独立发现自己的硬件设备,并需使用专用的安装程序来安装。另外,在驱动程序的加载方面,WDM不是通过驱动程序的名称来识别的,而是通过一个符号连接名或一个128b的GUID(全局唯一标识符)来识别。编写WDM驱动程序和其
7、它模式驱动程序基本上相同,但在细节上也存在着很多区别。其代码的主要区别在于如何创建设备,其它模式的驱动程序参数一般由注册表提供,即在DriverEntry例程中调用注册表,然后根据注册表的内容再调用CeateDevice;但对于WDM驱动程序,因为其支持PnP,在设备加载时系统会向驱动程序发出PnP消息,所以它一般是在AddDevice例程中调用CreateDevice,或是在PnP消息的处理例程中调用,而不是在DriverEntry例程中调用。(三)win32应用程序win32应用程序用于用户操纵和控制系统硬件设备,用户通过win32应用程序能够对外部硬件设备进行操作。应用程序接收到硬件设备
8、传送到PC机的数据,并对其进行处理,然后作出相应的显示和决定对硬件设备的下一步操作。在本课题研究的装置中,应用程序主要实现以下功能:(1) 显示电池的当前状态。包括电池类型、充电电流、充电电压及电池的温度。并且把数据存储为Vt、It和Tt图线,能够使用户对电池的状态进行实时监视。(2) 根据电池的类型和状态以及用户要求选择不同的充电方式。高级用户可以自定义充电电流及电压的大小以及充电方式(如是否采用脉冲式充电等),以满足不同用户的需求。(3) 记忆充电状态的功能,使设备在突然断电后能够继续上次的充电状态进行充电,这样就可以保证充电的精确度。(4) 通过电池在充电过程中的各参数来判断电池的老化程
9、度。二、硬件电路器件以及开发工具的选择:(一)硬件电路器件的选择充电部分电路的实现我们选择三菱的充电专用IC M62242,其内部电路如图4所示,引脚功能表如图5所示。该IC包括电池类型检测,充电电压(电流)检测,充电电压(电流)控制等功能。该IC与一片MCU结合就能够构成一完整的充电电路。图6给出了M62242与MCU接线的基本接线图。如图: 首先充电电流通过P-MOSFET调整管,流到0.1欧姆的恒流取样电阻,经过一个二极管加到电池上。MCU我们采用AT89C51的简化版AT89C2051。AT89C2051是一个低电压,高性能CMOS 8位单片机,片内含2k bytes的可反复擦写的只读
10、程序存储器(PEROM)和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大AT89C2051单片机可为您提供许多高性价比的应用场合。AT89C2051是一个功能强大的单片机,但它只有20个引脚,15个双向输入/输出(I/O)端口,其中P1是一个完整的8位双向I/O口,两个外中断口,两个16位可编程定时计数器,两个全双向串行通信口,一个模拟比较放大器。同时AT89C2051的时钟频率可以为零,即具备可用软件设置的睡眠省电功能,系统的唤醒方式有RAM、定时/计
11、数器、串行口和外中断口,系统唤醒后即进入继续工作状态。省电模式中,片内RAM将被冻结,时钟停止振荡,所有功能停止工作,直至系统被硬件复位方可继续运行。接口部分路我们采用Philips公司生产的USB系列芯片PDIUSBD12。该接口芯片是一个具有集成的SIE,FIFO存储器、发送器和电压调整器的高性能USB接口芯片,同时还支持DMA逻辑传输形式。他通常应用于基于微控制器的系统中,并且可以通过高速的并行接口和系统中的微处理器进行通信,其中最高并行接口速率可以达到2 MBs,是一个具有8位数据总线和一个地址的存储与数据交换设备。PDIUSBD12芯片的功能方框图如图7所示。它采用28PIN脚模式,
12、有SO28和TSSOP28封装,SIE用来实现USB协议层的完整功能。具体功能如下:同步方式识别、并串转换、比特填充解填充、CRC校验生成、PID确认生成、地址识别和握手信号的鉴定生成、批处理数据传输可达1 MBs,3±03 V双极性输入范围,可接受3655 V工作电压、工业级标准工作环境温度范围为4085。也就是说,利用该芯片可以完成微控制器所送出的信号到符合USB规范的信号的转换。PDIUSBD12引脚功能表如图8所示。PDIUSBD12与89C2051的连接如图9所示。(二)开发工具的选择为了使开发研究工作能够更好地进行,我们选用了周立功公司的PDIUSBD12 SMART 开
13、发板。该开发板的简单介绍如下:n 该开发系统为用户使用PHILIPS公司推出的PDIUSBD12提供一个快速具有自己特色的USB产品的平台。n 采用PHILIPS的USB Interface controller,可实现全速USB(12Mb/s)及低速(1.5Mb/s)的n 数据传输,支持BulkIN/OUT 及Isochronous IN/OUT方式等。单片机护展总线及USB护展总线供用户开发及调试用。n 提供D12 USB固件(Firmware)源程序及驱动程序。该开发套件配套周立功等编写的参考书PDIUSBD12 USB固件编程与驱动开发。该参考书选择PHILIPS公司推出的基于USB
14、1.1协议的PDIUSBD12 USB接口器件,浅显易懂地介绍了USB 1.1协议,全面深入地介绍了PDIUSBD12器件的原理、固件编程思想及其基于DDK驱动程序开发的细节,并且给出了傻瓜化USB接口软件包在USB开发板上的应用设计实例,真正解决了USB接口技术的难题。从而实现作为一个电子工程师即便不懂USB的原理,只要使用相应的软件包即可以将USB器件当做一个简单的集成电路来使用的目的。图10为该开发套件的参考图。单片机固件程序的编写采用KEIL C51开发软件,程序采用C语言来编写。USB固件程序程序由三部分组成:初始化单片机和所有的外围电路(包括PDIUSBD12);主循环部分,其任务
15、是可以中断的;中断服务程序,其任务是对时间敏感的,必须马上执行。根据USB协议,任何传输都是由主机(Host)开始的。单片机作它的前台工作,等待中断。主机首先要发令牌包给USB设备(这里是PDIUSBD12),PDIUSBD12接收到令牌包后就给单片机发中断。单片机进入中断服务程序,首先读PDIUSBD12的中断寄存器,判断USB令牌包的类型,然后执行相应的操作。在USB单片机程序中,要完成对各种令牌包的响应,其中比较难处理的是SETUP包,主要是端口0的编程。单片机与PDIUSBD12的通信主要是靠单片机给PDIUSBD12发命令和数据来实现的。PDIUSBD12的命令字分为三种:初始化命令
16、字、数据流命令字和通用命令字。PDIUSBD12数据手册给出了各种命令的代码和地址。单片机先给PDIUSBD12的命令地址发命令,根据不同命令的要求再发送或读出不同的数据。因此,可以将每种命令做成函数,用函数实现各个命令,以后直接调用函数即可。下面的程序是处理主机的标准控制请求的一个模板:unsigned char ENDPOINT_A0_FIFO8;/判断输入的是SETUP请求,并将其读入缓冲区ENDPOINT_A0_FIFOif(ENDPOINT_A0_FIFO0 & 0b011000000)=0x00)if(ENDPOINT_A0_FIFO1<=0C)(*StandardF
17、unctionTableENDPOINT_A0_FIFO1)();return;const void (*StandardFunctionTable)(void)=GetSatus,ClearFeature,USB_Reserved,SetFeature,USB_Reserved,SetAddress,GetDescriptor,SetDescriptor,GetConfiguration,SetConfiguration,GetInterface,SetInterface,SynchFrame;USB设备在正常使用以前,必须由主机配置设备。主机一般会从USB设备获取配置信息后再确定此设备有哪
18、些功能。作为配置操作的一部分,主机会设备设备的配置值,如果必要的话会选择合适的接口备选设备。其初始化函数为:void D12_int() XmtBuff.pNum=16;D12_COMMAND=0xf4;/读中断寄存器ist=D12_DATA;ist=D12_DATA;if(ist & 0x01) /ENDP0_OUTXmtBuff.out=0;XmtBuff.in=1;D12_COMMAND=0x40; /读OUT最后状态ist=D12_DATA;if(ist & 0x20)/收到SETUP包 Setup_read();Setup_control();else Setup_r
19、ead();else if(ist & 0x02)/ENDP0_IN XmtBuff.in=1;D12_COMMAND=0x41;/读in最后状态ist=D12_DATA;USB_submit();else if(ist & 0x04)/ENDP1_OUT XmtBuff.out=2;XmtBuff.in=3;D12_COMMAND=0x42;/读out最后状态ist=D12_DATA;read_out();else if(ist & 0x08)/ENDP1_IN XmtBuff.in=3;D12_COMMAND=0x43;/读in最后状态ist=D12_DATA;Xm
20、tBuff.b0=5;XmtBuff.wrLength=1;XmtBuff.p=XmtBuff.b;USB_submit();在发出连接USB命令后,主机先读取设备描述符,然后发出设置USB地址SETUP包,设置USB地址后,进行主机客户驱动与设备初始化。其余端点(ENDPOINT)依此类推。在其头文件里需定义USB规范中的各种描述符格式,包括设备描述表、配置描述表、接口描述表、端点描述表、字符串描述表以及描述表类型。这样,在发送配置,接口(1),端点(1),接口(2),端点(2),类,厂商等联合描述表时,主机USBD可以根据描述类型标识区分各种分描述表。下面是固件程序的主循环部分:#incl
21、ude<reg51.h>/指向外部D12访问地址#define D12_COMMAND(*(unsigned char xdata *)0xff01)#define D12_DATA (*(unsigned char xdata *)0x7f02)extern void D12_int();sbit D12_suspend=P10;sbit D12_int_n=P11;sbit D12_eot_n=P12;sbit D12_DMAck_n=P13;sbit D12_DMAreq=P14;void main(void)unsigned char ist;P1=0xff;D12_COMMAND=0xf3;D12_DATA=0x06;/设置模式0D12_DATA=0x03;/初始化频率12MHzD12_COMMAND=0xd0;D12_DATA=0x80;/设置地址0使能D12_COMMAND=0xf3;/连接主机D12_DATA=0x16;while(1) if(!D12_int_n)D12_int();在编写USB的固件程序时,需要注意:单片机的中断应设置为电平触发;中断后一定要读
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 演艺经纪转让合同范本
- 人美版二年级下学期16.画夜景教案
- 美式餐车售卖合同范本
- 酒店合作套房合同范本
- 进口业务采购合同范本
- 监控工程转包合同范本
- 2025年建筑电气考试题目及答案
- 滴灌破损维修合同范本
- 运输货款押金合同范本
- 物业管理施工合同范本
- 《医学统计学》期末考试试题及答案
- 船机桨的匹配问题
- 2023年中央国家机关遴选公务员笔试真题及解析B卷
- SB/T 10737-2012高空外墙清洗服务规范
- JJG 169-2010互感器校验仪
- GB/T 18287-2013移动电话用锂离子蓄电池及蓄电池组总规范
- 劳动者个人信息卡
- 光盘m3352工控核心板-n128li用户手册-v1
- Q∕SY 02004-2016 油气井氮气排液技术规程
- 工艺学异丁烯合成MTBE
- 门诊慢性病病种及鉴定标准
评论
0/150
提交评论