武汉爱迪科技发展有限公司

智慧城市网试用14

收藏

巡更系统-电子巡更系统带USB接口的设计

时间:2009-06-03      阅读:1503

基于USB接口的诸多优点和本设计中巡更机的特点,我们在设计巡更系统时,采用了USB接口。该电子巡更系统具有使用方便、数据传输速度快、易扩展、充电方便、功耗低、性价比高等优点,有效地解决了传统巡更机的不足...
 

电子巡更系统是智能楼宇中保安系统的一个子系统。保安巡更时,需按的路线和时间,依次以达各个巡更点进行巡更。在此系统中,各巡更点设有信息钮扣,保安用巡更机读取信息钮及当前时间。巡更完毕后,将巡更机交至安保中心,使之与计算机的USB接口相连,将存储在巡更机中的巡更数据输入计算机。所以,通过它可以了解保安的巡更情况,有效地管理和督促保安的工作。

1996年,In、Microsoft、IBM等七家公司共同推出USB1.0通用串行接口标准,随后带USB接口的产品陆续出现。USB接口具有速度快、支持热插拔和即插即用、易扩展、可提供总线供电等优点。

基于USB接口的诸多优点和本设计中巡更机的特点,我们在设计巡更系统时,采用了USB接口。该电子巡更系统具有使用方便、数据传输速度快、易扩展、充电方便、功耗低、性价比高等优点,有效地解决了传统巡更机的不足。

1 电子巡更系统硬件设计

针对电子巡更系统的特点,为了降低开发成本,提高系统的性价比,本设计采用MCU+USB接口芯片的方案。MCU采用Atmel公司的AT89C52单片机,可以设置成低功耗方式。USB接口芯片采用Philips公司的PDIUSBD12。带USB接口的电子巡更系统硬件原理框图如图1所示。其中DS1302为高性能、低功耗、宽电压、带有RAM实时时钟芯片,它适合于工作电池供电设备的系统时钟。这里MCU通过它读了当前时间;24LC64为低功耗、宽电压、64Kb、支持I2C协议的串行CMOS电可擦除程序存储器EEPROM,这里用于存储巡更点信息钮扣的ID值和读取信息钮扣时间数据。DS1990A外形上是一种圆形不锈钢器件,内部存有64b的二进制代码,以此代码作为巡更点的ID值。DS1302和24LC64电压工作范围为2.5~5.5V,以I2C总线和MCU通信。DS1990A以单总线(1-Wire总线)和MCU通信。

本系统中巡更机采用3.6V可充电电池供电,充电电源由USB接口的5V电源线提供,电源电压监测电路如图2所示。其吕AMS1117是一个DC-DC电压变换器,其输入端为USB接口的5个电源线,输出端为3.3V电压,以此电压为3.6V电源充电。MAX9117是一个带有1.245V基准电压(Vref)的比较器。当电池电压下降到3V以下时,LED点亮,指示电量不足。

    PDIUSBD12是一种性能优化的USB器件。它是一种与微控制器进行通信的高速爱用并行接口,它同时也支持本地DMA传输。设计人员可以在各种不同类型的微控制器中选择出zui合适的微控制器,而且不需要的开发设备。这种组件方式增强了系统开发的灵活性,减少了开发时间、风险和费用,是开发USB外设的一种快捷和经济的途径。PDIUSBD12符合USB1.1规范,也符合大多数在规范,如成像类、大容量存储类、通信类、打印类和人工输入设备等。因此,PDIUSBD12非常适合数外围设备,如打印机、扫描仪、外部大容易存储器(Zip驱动器)和数码相机等的接口芯片。它使得当前使用SCSI的系统可以立即降低成本。

图1 图2 图3 图4 图5 略
    2.3 应用程序设计

2 电子巡更系统软件设计

2.1 巡更机固件程序

巡更机固件程序从功能上主要分为两部分。

①信息钮扣的读取操作程序。这一部分实现MCU主外围器件的初始化、读取信息钮以及对DS1302和24LC64的读写操作。调试时要注意I2C总线的时序问题。巡更机固件程序采用C语言编程。信息钮读取操作程序流程如图3所示。

②MCU和USB接口的通信程序。这一部分程序要实现将24LC64中的数据经USB接口读入到上位计算机中。USB接口芯片PDIUSBD12的端点适用于不同类型的设备,可通过命令配置为4种不同的模式:模式0(非同步传输)、模式1(同步输出传输)、模式2(同步输入传输)和模式3(同步输入输出传输)。PDIUSBD12带有三个端点,即端点0、端点1和端点2。这里仅列出模式0(非同步传输)时各端点的配置表格,如表1所列。

表1 模式0各端点配置

端点号 端点索引 传输类型 端点类型 方向

zui大数据包容量/B

0 0
1
控制输出
控制输入
缺少值 输出
输入
16
16
1 2
3
普通输出
普通输入
普通
普通
输出
输入
16
16
2 4
5
普通输出
普通输入
普通
普通
输出
输入
64×2(双缓冲区)
64×2(双缓冲区)

本程序设计时,使用PDIUSBD12的端点1和端点2进行上位计算机与巡更机MCU之间的命令和数据的传输。端点1和端点2设置成模式0,其中端点1进行命令的传输和应答,端点2用于数据的传输。端点1接收上位计算机发送过来的8字节的读指令,指令正确回应后,使用端点2返回读成功数据。通信中所使用的端点情况如图4所示(括号内为使用的端点号)。

PDIUSBD12收到上位计算机的数据包时,就以中断的方式通知巡更机的MCU。固件程序工作过程如下:当PDIUSBD12从USB收到一个数据包时,PDIUSBD12就会对MCU产生中断请求,MCU立即响应中断。巡更机固件程序将数据包从PDIUSBD12内部缓冲区移到数据缓冲区,并清零PDIUSBD12的内部缓冲区,以使之能接收新的数据包。在断处理程序中,MCU判断产生的中断类型,并进行相应的处理。其中断程序流程如图5所示。

2.2 巡更机驱动程序

Windows98和Windows2000已经为一些USB标准设备提供了驱动程序,巡更机目前还不是标准的计算机外设,所以必须针对巡更机的特点来编写驱动程序。本设计中巡更机驱动程序是通过Windows DDK来开发的,它是Microsoft公司提供的一个开发Windows驱动程序的工具,DDK提供了编译驱动程序的环境。该巡更机的驱动程序是WDM类型的,采用VC++编程。

驱动程序中对USB进行操作的请求都应调用系统例程,将其转化为一个URB结构,即USB请求块(USB Request Block),然后使用系统级的IRP将其提交。该驱动程序由四个模块组成:初始化模块、即插即用管理模块、电源管理模块和I/O控制模块。

①初始化模块。DriverEntry为驱动程序的入口处,通过它来执行大量的初始化函数。

②即插即用管理模块实现设备的热插拔和动态配置。驱动程序初始化完成后,接着对设备进行初始化,这主要是通过即插即用(PnP)管理器调用驱动程序中的AddDevice和IRP_MJ_PNP两个例程来完成的。当驱动程序从PnP管理器中收到IRP_MN_START_DEVICE请求时,驱动程序启动设备,并且准备好处理I/O操作。

③电源管理模块负责设备的唤醒和挂起。电源管理器(powermanager)从整个系统的角度来管理电源,所有与电源相关的IRP都是由它发出的,它发出的请求包可以一种新的电源状态以及查询或更改一种状态。支持电源管理的驱动程序,在zui大程序地帮助Windows合理地利用资源方面起着重要作用。值得注意的是,与电源相关的IRP必须在同步操作上有非常严格的要求。例如,任何时候在一个PDO(物理设备对象)中。只能有一个IRP_MN_QUERY_POWER或者IRP_MN_SET_POWER;电源IRP的处理要尽可能地快等。

④I/O控制模块完成输入输出请求的大部分功能。设备的控制由设备控制例程(IRP_MJ_DEVICE_CONTROL)负责,主要是对设备进行一些操作命令的发送或者标志的读取。数据读写主要由IRP_MJ_READ和IRP_MJ_WRITE两个例程完成,只需在AddDevice中申请一个符号链接,并且在StartDevice中将此符号链接激活即可。

 

在Win32系统中,每一个设备对象都抽象为文件,此时的应用程序只需通过几条简单的文件操作API函数,就可以实现与驱动程序中某个设备的通信。在本设计中,应用程序是该电子巡更系统的中心,采用Visual C++编程。其主要功能有:启动或关闭USB设备、检查USB设备、设置巡更参数、从巡更机中读取数据以及显示、比较、存储数据等。

结 语

USB接口因其具有诸多优点,近年来为计算机外设的开发热点,尤其是USB2.0标准的推出,其传输速率可达480Mb/s,使其真正意义上成为了一种通用串行总线。而根据笔者的实际开发经验,Philips公司的PDIUSBD12是一种性能优良、经济、实用、的USB接口器件,很适合投资少、周期短的开发项目,而且可以根据自己的实际情况灵活地选择组件,相信其在各领域必有广阔的应用前景。

上一篇: 门禁系统的施工布线及注意事项 下一篇: 接触式与感应式巡更器各自的优缺点比较
提示

请选择您要拨打的电话: