《基于单片机USB接口的PC主机驱动程序和应用程序设计.pdf》由会员分享,可在线阅读,更多相关《基于单片机USB接口的PC主机驱动程序和应用程序设计.pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第28卷第3期2005年9月电子器件Chinese JOurnal Of electrOn DevicesVOl.28NO.3Sep.2005Design Of Driver and ApplicatiOn in PC Based On MCU with USB InterfaceWU Peng,TAO Zheng-su,HU Yu-zhen(Department of lnstruments engzneerzng,Shanghaz zaotong Unzuerszt,Shanghaz 200030,Chzna)Abstract,The design Of sOftWare under Wi
2、ndOWs in PC linking 51MCU With USB interface is presented.the prOcess Of the driver prOduced by DriverStudiO,the dynamic link library cOmpiled by Visual C-andthe applicatiOn implemented With Visual Basic are intrOduced.The functiOn Of data cOmmunicatiOn betWeenPC and MCU thrOugh PDIUSBD12 is realiZe
3、d.Key wOrds,USB interface;driver;dynamic link library;applicatiOn ACC,1220基于单片机USB接口的PC主机驱动程序和应用程序设计吴鹏,陶正苏,胡宇贞(上海交通大学信息检测技术与仪器系,上海200030)摘要,介绍了与51单片机USB接口的PC主机在WindOWs环境下软件设计过程G驱动程序由DriverStudiO生成,动态链接库和应用程序分别采用Visual C-和Visual Basic编写G实现了PC机与单片机之间通过PDIUSBD12芯片进行数据通讯的功能G关键词,USB接口;驱动程序;动态链接库;应用程序中图分类
4、号,TP342文献标识码,A文章编号,1005-9490(2005)03-0612-03在传统的单片机系统中,单片机与PC机进行数据传输都是通过RS-232接口G这种接入方式硬件实现简单,因此得到了广泛应用G但是它传输速度慢,扩展不方便,不能热插拔,因此大大限制了它的发展G特别是对于一些测量仪器,当出现问题时,不能热插拔就极大妨碍了用PC机对其进行实时故障诊断G为了向用户提供一种速度更快功能更强使用更 方 便 的 串 行 总 线,COmpaf Intel MicrOsOft和NeC等公司共同开发了一种新的快速的双向的同步传输的并可以热插拔的数据传输总线,简称USB总线GUSB总线具有以下优点,
5、D用户使用方便G设备自动识别,自动安装驱动程序和配置,支持动态接入和动态配置G应用范围广G传输速度从几kb/s至几Mb/s,总线支持同步和异步传输方式G 具有同步带宽G灵活,稳定,协议中包含错误检测,支持热插拔GG易于与PC接口G支持即插即用G成本低廉,易于升级G本文主要介绍了与单片机系统的USB接口时,在WindOWs环境下的PC主机驱动程序的编写,用户端可直接执行的eXe程序的编写以及调用动态链接库的过程 G收稿日期,(2005-01-0)作者简介,吴鹏(1981-),男,硕士研究生,主要从事在线检测的研究,Wupeng s 1PDIUSBD12器件特性及描述PDIUSBD12是PHILI
6、PS公司开发的一款高性能USB接口器件 集成了SIE FIFO存储器收发器以及电压调整器 符合USB1.1版规范和大多数器件的分类规格 可与任何外部微控制器/微处理器实现高速并行接口(2 Mb/sD OPDIUSBD12挂起时的低功耗以及LazyClock输出符合ACPI OnNOW和USB电源管理设备的要求O低功耗工作允许实现总线供电的外围设备O此 外 本 器 件 还 集 成 了 像SoftConnectGoodLink可编程时钟输出低频晶振和终端电阻等特性O所有这些特性都能在系统实现时节省成本 同时在外围设备上很容易实现更高级的USB功能OPDIUSBD12功能框图如图1所示O图1功能框图
7、2硬件电路描述以及总线枚举单片机与PDIUSBD12的连接电路如图2所示,图2D12接口电路将该单片机系统与PC主机相连后 主机会经过枚举过程来识别此USB设备O主机使用总线枚举来识别和管理必要的设备状态变化O总线枚举的过程如下,D设备连接OUSB设备接入USB总线O 设备上电OUSB设备可以使用USB总线供电 也可以使用外部电源供电O主机检测到设备 发出复位O考虑到使用的方便性 图2电路采用的是总线供电O 设备默认状态O设备收到复位信号后 使用默认地址(OOHD对其进行寻址O 地址分配O当主机接收到设备对默认地址响应的时候 就对设备分配一个空闲的地址O 读取USB设备描述符O主机读取USB设
8、备描述符 确认设备属性O 设备配置O主机依照读取的设备描述符来进行配置O 挂起O为了节省电源 当总线保持空闲状态超过3 ms后 设备驱动程序就会进入挂起状态O完成以上的几个步骤后 USB设备即可使用O由于PDIUSBD12不是Windows默认的USB设备 系统没有提供相应的驱动程序 会造成设备无法使用 因此我们必须编写与PDIUSBD12数据通信功能相匹配的驱动程序O3驱动程序的编写在PC机软件设计中 依照 五层模型进行开发OD用户应用程序,由用户编写的 可直接执行的exe程序O IO管理层,由Windows管理 负责应用程序与驱动程序之间数据交换O 驱动程序,可在Windows DDK基础
9、上自行编写驱动程序OHAL(硬件抽象层D,Windows管理 方便了驱动程序的编写O硬件OWindows DDK是Microsoft公司提供的一个开发Windows驱动程序的工具 但使用DDK来直接开发驱动程序难度较大O目前有许多第三方软件厂商提供了各种各样的生成工具 像Compuware的DriverStudio就是其中效率较高的开发工具O它能够很容易地在几分钟之内生成高质量的USB的驱动程序O驱动程序由四个模块组成,初始化模块即插即用管理模块电源管理模块以及I/O功能实现模块O驱动使用的例程包括,DriverEntry AddDeviceDispatchPnp Dispatchread D
10、ispatchWrite和Dis-patchDeviceControlO DriverStudio有很方便的向导提示开发者提供USB设备的相关属性参数 随后会在VC-环境下生成相应的.dsw工作平台 里面包含驱动程序入口初始化以及各种例程的.cpp源文件及.h头文件等O此外 DriverStudio还提供了DriverMonitor SoftIce等调试工具 可以对驱动程316第3期吴鹏 陶正苏等,基于单片机USB接口的PC主机驱动程序和应用程序设计序的执行情况进行观察0经过编译,生成.sys文件,将该驱动程序拷入系统盘drivers目录下,并配合.inf安装文件可以完成驱动程序的安装使用04
11、动态链接库文件的编写比较大的应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它们彼此协作来完成整个软件系统的工作0可能存在一些模块的功能较为通用,在构造其它软件系统时仍会被使用0 Win-dows系统平台上提供了一种较有效的编程和运行环境,可以将独立的程序模块创建为较小的动态链接库文件(dll),并可对它们单独编译和测试0只有当应用程序要调用这些dll模块的情况下,系统才会将它们装载到内存空间中,减少了应用程序文件的大小和对内存空间的需求0本次设计的dll文件在VC+环境中开发,并被VB所开发的应用程序所调用,它由四个导出函数组成,OpenByname(),CloseifOpen()
12、,ReadUSB(),WriteUSB()0OpenByname()根据设备路径名来打开设备,返回值是打开设备的句柄0CloseifOpen()关闭打开的设备句柄0ReadUSB()从USB接口读取若干个字节的数据存储于数组中0WriteUSB()将数组中的数据写入USB接口0ReadUSB()中主要语句如下,buf=(chare)malloc(size);分配size字节内存给buf缓存Readfile(hdevice,buf,size,8 iCount,nULL);从USB端口读取数据for(iCount=O;iCount size;iCount+)将数据返回给myarray数组hdevi
13、ce为句柄变量myarrayiCount=bufiCount;WriteUSB()中主要语句如下,buf=(char e)malloc(size);分配size字节内存给buf缓存for(iCount=O;iCount size;iCount+)把要写入的数据放入缓存中bufiCount=myarrayiCount;Writefile(hdevice,buf,size,8 iCount,nULL);向USB接口写入缓存中的数据经过编译后得到dll文件05应用程序的编写应用程序采用Visual Basic6.O编写0由于主要操作已由动态链接库文件完成,所以应用程序的主要功能包括错误操作提示,输入
14、/输出数据格式转换0图B为最简单的PC主机与单片机进行数据通信的应用程序主界面0动态链接库文件的使用,需要在应用程序的全局定义变量定义模块中显式调用.dll文件,应用程序会在其所在目录和系统目录下查找.dll,如不存在,发出错误提示0图B应用程序界面6结论在安装好驱动程序和动态链接库文件后,即可将该单片机系统接入USB总线中,打开应用程序开始数据传输0实验证明,采用USB接口后,数据传输速度快,性能稳定,并且可以即插即用,将极大地方便对测量仪器进行实时故障诊断,是仪器理想的新一代接口0参考文献1周立功等.PdiUSBd1Z USB固件编程与驱动开发M.北京,北京航空航天大学出版社,ZOOZ.Z
15、苏涛,张海峰,张登福.基于USB总线的实时数据采集系统设计与实现J.电子技术应用,ZOO4,(1),1Z14.B兰文武,付桂翠,高泽溪,高成.基于USB接口的数据采集系统设计J.电子技术应用,ZOO4,(Z),Z1ZB.416电子器件第Z8卷基于单片机USB接口的PC主机驱动程序和应用程序设计基于单片机USB接口的PC主机驱动程序和应用程序设计作者:吴鹏,陶正苏,胡宇贞,WU Peng,TAO Zheng-su,HU Yu-zhen作者单位:上海交通大学信息检测技术与仪器系,上海,200030刊名:电子器件英文刊名:CHINESE JOURNAL OF ELECTRON DEVICES年,卷(
16、期):2005,28(3)被引用次数:12次 参考文献(3条)参考文献(3条)1.兰文武;付桂翠;高泽溪;高成 基于USB接口的数据采集系统设计期刊论文-电子技术应用 2004(02)2.苏涛;张海峰;张登福 基于USB总线的实时数据采集系统设计与实现期刊论文-电子技术应用 2004(01)3.周立功 PDIUSBD12 USB固件编程与驱动开发 2002 本文读者也读过(2条)本文读者也读过(2条)1.王少伟.巫丹 89C51单片机USB接口的设计与实现期刊论文-科技创新导报2009(28)2.史迩冬.李清栋.周雪莉 基于USB接口的51单片机与PC机通信的方法期刊论文-大众科技2008(1
17、1)引证文献(12条)引证文献(12条)1.左旭坤.左家圣.李经达 手持数控编程/仿真器设计期刊论文-机床与液压 2011(2)2.杨顺.王星 基于USB接口芯片CH372的人机接口设备的设计与实现期刊论文-计算机系统应用 2010(4)3.沈洋 浅析51单片机的USB接口设计期刊论文-电脑知识与技术 2010(15)4.牛睿.李云雁 基于USB的便携式硬度计数据通信的实现方法期刊论文-现代电子技术 2010(23)5.刘洋.金太东 基于CAN总线的智能型温湿度采集系统设计期刊论文-现代电子技术 2010(1)6.彭文彬.陈彬兵.米红菊 基于AN2131QC USB固件程序设计期刊论文-现代电
18、子技术 2008(20)7.梁星辉.谭志明 基于USB2.0的通用PC之间高速通信模块的设计期刊论文-计算机与数字工程 2008(6)8.刘改梅.韩慧莲 基于LabVIEW的USB无线通信接口的设计期刊论文-电子技术应用 2007(12)9.董友才.陈洪亮.梁倩 基于PDIUSBD12的USB接口固件程序设计期刊论文-电子测量技术 2007(8)10.陈宇.温欣玲 基于CAN总线分布式环境监测控制系统设计期刊论文-核电子学与探测技术 2007(5)11.翟子楠.王彦辉 51单片机扩展USB接口的方法期刊论文-平顶山学院学报 2006(2)12.周罡 在线签名数据采集系统研究学位论文硕士 2006 本文链接:http:/