当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]嵌入式检测系统的应用程序设计

 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。然后收到“关闭”设备对象。到此,一个完整的通信过程就完成了。[!--empirenews.page--]

  4、应用程序的工作过程

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

  

  图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的相关知识。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭