0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于89C52单片机和PDIUSBD12芯片实现USB设备应用程序的设计

电子设计 来源:微计算机信息 作者:涂望明,魏友国, 2021-01-18 10:12 次阅读

作者:涂望明,魏友国,张学志,谢存,梁季程

1、 引言

嵌入式系统(Embedded Systems)被定义为以应用为中心,以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统,它是面向用户、产品和用户的,它具有功耗低、体积小、可靠性高、处理速度快等优点。该嵌入式检测系统采用嵌入式微控制器(microcontroller unit)为核心,以单片机89C52和Philip公司的单纯的USB接口芯片PDIUSBD12为主要器件,所以该检测系统是一个USB接口设备,而USB接口设备在生活中已经随处可见了,它由三部分组成:具有USB接口的PC系统,能够支持USB的系统软件和使用USB接口的设备。它的提出是基于采用通用连接技术,实现外设的简单快速连接,达到方便用户、降低成本、扩展PC连接外设范围的目地。它的最显著优点是支持热插拔,当用户插入USB外设后,计算机能够自动识别接入的外设,而不需要重新启动系统。

用户对USB设备的控制是通过应用程序来实现的。但应用程序不能直接访问USB设备,它必须先与驱动程序通信,通过驱动程序来访问USB设备。所以,应用程序的工作是把用户的对设备的请求翻译成相应的控制代码,并将其传递给驱动程序,同时还负责接收从驱动程序返回的数据。为对应用程序的工作原理有一个较深入的了解,下面先总体介绍一下应用程序与USB设备的通信流程。

2、 USB总线特性

USB是英文Universal Serial Bus的缩写,中文含义是“通用串行总线”。它不是一种新的总线标准,而是应用在PC领域的新型接口技术

那么为什么选用USB呢?因为它具有很多很好的特性。包括:

2.1 使用方便

使用USB接口可以连接多个不同的设备,支持热插拔。在软件方面,为USB设计的驱动程序和应用软件可以自动启动,无需用户干预。 USB设备也不涉及IRQ冲突等问题,它单独使用自己的保留中断,不会同其它设备争用PC机有限的资源,为用户省去了硬件配置的烦恼。USB设备能真正做到“即插即用”。

2.2 速度加快

快速性能是USB技术的突出特点之一。USB接口的最高传输率比串口快了整整100倍,也比并口快了十多倍。今后USB的速度还将会不断提高。

2.3 连接灵活

USB接口支持多个不同设备的串列连接,一个USB口理论上可以连接127个USB设备。而每个外设间距离(电缆长度)可达5米。USB还能智能识别USB链上外围设备的接入或拆卸。 在USB方式下,所有的外设都在机箱外连接,不必打开机箱;

2.4 独立供电

普通使用串口、并口的设备都需要单独的供电系统,而USB设备则不需要,因为USB接口提供了内置电源。USB电源能向低压设备提供5V的电源,因此新的设备就不需要专门的交流电源了,从而降低了这些设备的成本并提高了性价比。

3、通信流程

在应用程序与设备开始通信之前,设备必须先连接在总线上。然后Windows检测该设备,通过设备列举,取得设备的各种描述符。Windows将从该设备所读取的描述符,与它的.inf文件做比较来识别该设备,找出应该使用哪个设备驱动程序来与设备通信,然后载入选定的驱动程序。

接下来应用程序取得一个设备的句柄,此句柄让应用程序识别该设备以及与它通信。设备的句柄是一个惟一的标识符,由Windows指定给每个设备的实例变量。应用程序通过调用带有一个能识别该设备的符号链接的CreateFile API函数,来取得该设备的句柄。该符号链接包含一个全域惟一标识符(globally unique identifier,GUID)。GUID是一个128位的号码,Windows用来惟一识别一个对象。

当设备已经连接好准备传输数据后,主机就可以开始要求传输。当用户要读取一个数据捕获单位的数据时,他可以按下应用程序的按钮来读取一个读数,或是选择让应用程序每分钟要求一个读数。

在用户请求一个传输之后,应用程序开始与设备通信。它通过API函数来与USB设备沟通。API包含有3个与设备交换数据的函数:ReadFile,WriteFile和DeviceControl。 ReadFIle与WriteFile是一般用途的函数,用来读取与写入数据到驱动程序内。读取与写入的数据,是储存在函数所指定的缓冲区内。DeviceIoControl是另一个传输缓冲区数据的函数,它包含一个码用来识别一个特定的要求。与ReadFile和WriteFile不同的是,DeviceIoControl函数可以双向传输数据。

当一个应用程序启动一个API调用来读/写一个USB设备时,Windows把此调用传递给合适的设备驱动程序。设备驱动程序把请求转换为USB总线类驱动能理解的格式。

当应用程序与设备的通信结束时,对于此设备驱动程序的句柄就必须通过CloseHandle API释放出来。当其中的一个应用程序调用CloseHandle函数,驱动程序首先收到“清除”IRP,驱动程序应当在“清除”例程中清除和此设备有关的待处理的IRP。然后收到“关闭”设备对象。到此,一个完整的通信过程就完成了。

4、应用程序的工作过程

应用程序在工作前首先要获得设备的内部名,按内部名打开其驱动程序,然后发送控制代码。如图1所示。

基于89C52单片机和PDIUSBD12芯片实现USB设备应用程序的设计

图1 应用程序的工作过程

设备的内部名是操作系统为设备分配的全局唯一的标识符,需要用操作系统的API来获得。具体的过程如下:

a.通过GUID号获得设备信息句柄;

b.通过设备信息句柄获得设备接口句柄;

c.用设备接口句柄获取设备详细信息;

d.在设备详细信息中取得设备内部名;

e.释放所用的内存资源。

获得设备的内部名后,调用CreateFile函数就可打开设备的驱动程序,该函数返回一个指向驱动程序的句柄。

取得了驱动程序的句柄后,调用函数DeviceIoControl就可发送控制代码对设备进行通信。

5、开发工具

应用程序是用Visual C++6.0来编写的。Visual C++6.0是Microsoft公司在1998年推出的基于Windows9x和WindowsNT的优秀集成开发环境。它的主要优点如下:

(1)Visual C++的最大特色就是提供面向对象技术的支持,它利用类把大部分与用户界面设计有关的函数封装起来,通过MFC(Microsoft Foundation Class)类库的方式提供给开发人员使用,大大提高了程序代码的重用性。

(2) Visual C++提供一个功能强大的应用程序生成向导------AppWizard。AppWizard将帮助MFC类库的用户自动生成一个运行程序框架------一个空的不能做任何事情的应用程序,而用户只需要在该框架的适当部分扩充代码就可以得到一个满意的应用程序。

(3)Visual C++利用“所见即所得”的方式完成程序界面的设计,大大减轻了程序设计人员的劳动强度,提高了开发效率。

(4)Visual C++的功能强大,用途广泛,不仅可以编写普通的应用程序,还能很好地进行系统软件及通信软件的开发。

结束语:功能强大的USB规格已经成为PC的众多标准之一,钻研计算机科技的种种发展,都离不开USB的相关知识。本文创新点:使用USB通信方面的具体协议,设计相应的应用程序完成USB设备与PC主机的具体通信,设计出适合用户需求的USB设备。研制出此检测系统,不仅能快速检测出雷达的多种性能参数,而且使用方便、体积小、便于携带、稳定性好,极大地改善了检测手段和方法,提高了效率,在装备检测和维修上产生了极大的军事效益和经济效益(50万元)。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6032

    文章

    44513

    浏览量

    632871
  • usb
    usb
    +关注

    关注

    60

    文章

    7891

    浏览量

    263963
  • 应用程序
    +关注

    关注

    37

    文章

    3240

    浏览量

    57596
收藏 人收藏

    评论

    相关推荐

    基于PDIUSBD12的无线USB接口收发器的设计

    的设计,即用89C52实现其所需的功能,具体将数据信号转换为符合USB规则的信号,则完全由PDIUSBD12来完成。这样一来,既可以利用89C52
    发表于 03-24 13:24

    基于PDIUSBD12USB控制器的设计

    AT89C52,MCU根据相应的中断请求往PDIUSBD12发送不同请求数据,协同实现USB设备列举和数据传输。当外设经过
    发表于 03-24 13:28

    基于PDIUSBD12USB控制器的设计

    是一个具有8位数据总线的存储设备PDIUSBD12获取USB总线数据,并对数据作相应协议处理之后以中断的方式通知AT89C52,MCU根据相应的中断请求往
    发表于 03-28 15:15

    采用PDIUSBD12USB系统固件程序设计

    。固件的作用以及固件程序的编写流程,并给出了相应程序。 关键词:USB固件程序PDIUSBD12端点单片
    发表于 04-02 13:50

    基于PDIUSBD12的无线USB接口收发器的设

    程序的设计,即用89C52实现其所需的功能,具体将数据信号转换为符合USB规则的信号,则完全由PDIUSBD12来完成。这样一来,既可以利
    发表于 04-08 13:50

    采用PDIUSBD12USB系统固件程序设计

    。固件的作用以及固件程序的编写流程,并给出了相应程序。 关键词:USB固件程序PDIUSBD12端点单片
    发表于 04-13 10:34

    采用PDIUSBD12USB系统固件程序设计

    。固件的作用以及固件程序的编写流程,并给出了相应程序。 关键词:USB固件程序PDIUSBD12端点单片
    发表于 04-20 14:33

    基于PDIUSBD12的无线USB接口收发器的设计

    使用自供电方式。图2所示是采用了1个89C52的微控制器与PDIUSBD12集成电路相互连接图。由于89C52是应用 广泛的一种单片机微控制器,软件开发工作者在其基础上开发大量的软件开
    发表于 04-27 10:43

    采用PDIUSBD12USB系统固件程序设计

    。固件的作用以及固件程序的编写流程,并给出了相应程序。 关键词:USB固件程序PDIUSBD12端点单片
    发表于 04-27 11:02

    使用 PDIUSBD12USB 系统固件程序设计

    USB 外设中。固件的作用以及固件程序的编写流程,并给出了相应程序。关键词:USB 固件程序 PDIU
    发表于 04-27 11:40

    基于AVR单片机PDIUSBD12USB接口设计

    。针对这样的需求,这里采用PHILIPS公司的USB接口器件PDIUSBD12和Atmel公司的AVR系列单片机ATmega8设计一种通用的USB接口模块。该模块可方便为各种嵌入式微处
    发表于 05-03 13:20

    采用PDIUSBD12USB系统固件程序设计

    。固件的作用以及固件程序的编写流程,并给出了相应程序。 关键词:USB固件程序PDIUSBD12端点单片
    发表于 06-03 10:56

    基于PDIUSBD12的无线USB接口收发器的设计

    程序的设计,即用89C52实现其所需的功能,具体将数据信号转换为符合USB规则的信号,则完全由PDIUSBD12来完成。这样一来,既可以利
    发表于 08-22 11:16

    采用PDIUSBD12USB系统固件程序设计

    。固件的作用以及固件程序的编写流程,并给出了相应程序。 关键词:USB固件程序PDIUSBD12端点单片
    发表于 09-30 11:42

    PDIUSBD12与AT80C52单片机的接口电路图

    PDIUSBD12与AT80C52单片机的接口电路图 据总线方式、单地址/ 数据
    发表于 04-17 20:25 3019次阅读
    <b class='flag-5'>PDIUSBD12</b>与AT80<b class='flag-5'>C52</b><b class='flag-5'>单片机</b>的接口电路图