USB接口在数据采集系统中的应用

2011-01-25 07:52杨福宝
制造业自动化 2011年13期
关键词:驱动程序中断应用程序

杨福宝,陈 欣

(武汉理工大学 信息工程学院,武汉 430070)

1 方案介绍

目前市面上的USB设备接口芯片种类繁多,可选择的范围也很广泛。CH375是一款具有USB主控和设备功能的(Host/Device)双角色芯片。CH375的设备方式下, CH375芯片功能特点如下:

1)产品制造商可以自定义厂商标识(Vendor ID)和设备标识(Device ID);

2)通用的本地8位数据总线,4线控制:读选通、写选通、片选输入、中断输出;

3)它符合USB1.1版本规范,具备全速设备接口;

4)主端点上传下传缓冲区各64字节,辅助端点上传下传缓冲区各8字节;

5)支持5V电源电压和3.3V电源电压,CH375A芯片还支持低功耗模式。

2 系统硬件设计

2.1 USB接口设计

CH375芯片提供了通用的被动并行接口,CH375以总线方式挂接在单片机数据总线上,与多个外围器件共存。单片机可以与CH375进行通讯操作,当CS375(即CS#)为低电平时;D7~D0上的数据会被写入CH375芯片中,当RD#为高电平并且CS#和WR#及A8都为低电平时;D7~D0上的数据会被作为命令码写入CH375芯片中,当RD#为高电平并且CS#和WR#都为低电平而A0为高电平时。

CH375芯片的UD+和UD-引脚直接连接到USB总线上。CH375芯片内置了电源上电复位电路,并可以产生复位信号。为确保上电复位次序,本系统设计中,单片机的复位信号是通过CH375产生的。

CH375芯片正常工作时需要提供12MHz的外部时钟信号,在XI和XO引脚之间连接一个标称频率为12MHz的晶体,分别为XI和XO引脚对地连接一个容量为30pF的高频振荡电容。CH375芯片支持5V电源电压或者3.3V电源电压。本系统使用5V工作电压,并且V3引脚处外接容量为0.01uF的电源退耦电容。

2.2 片选译码电路设计

单片机[2]是通过片选信号/CS、读写信号线/WR、/RD和地址线A0的联合控制实现对CH375的访问。因为外围总线上扩展了多个器件,需要多个译码逻辑实现总线分配,因此采用了如图1所示的译码电路连接。

此处选用的GAL是可编程阵列逻辑,主要用于通过地址译码给各个芯片产生片选信号。GAL器件在电路结构上采用了可编程输出逻辑宏单元,可由用户定义每个输出管脚的逻辑组合方式。因此,一片GAL可通过不同的编程从而实现多种标准逻辑芯片组合才能实现的功能,不仅简化了电路设计过程,减小体积并降低成本,而且可靠性也得到了极大的改善。同时GAL器件采用电可擦除的CMOS工艺,可以用电压信号擦除并可重复编程。

图1 GAL16V8译码电路

2.3 A/D接口设计

A/D转换部分采用的器件是TLC2543,电路设计如图2所示。TLC2543是德州仪器公司生产的12位开关电容型逐次逼近模数转换器,采用简单的3线SPI串行接口可方便地与控制器进行连接,是12位数据采集系统的最佳选择器件之一。

图2 A/D转换电路

3 系统软件设计

在USB系统中,其软件包括以下几个部分:主机应用程序、设备驱动程序和设备固件程序。根据USB协议,在一个USB系统中,任何一次通讯都是由USB主机发起的,USB设备根据主机发来的命令给予响应,执行相应的操作。

3.1 设备驱动程序设计

Windows提供了一些标准设备如:大容量存储设备、人机接口设备等的驱动程序,但对于用户自行开发的非标准类的应用设备,还需要自行编写、加载驱动程序。驱动程序是保证应用程序正确访问设备的软件组件,使得应用程序无须知道物理连接、信号和与设备通讯所需协议等细节,仅需通过外设名字访问外设或目的端口。

驱动程序通过在应用层和硬件专用代码之间的转化来完成它的任务。编写驱动程序,必须遵循微软在WIN98及其更新版本中为用户定义的WIN32驱动模式。这些驱动程序就是WDM(Win 32Driver Model——设备驱动程序模型),它的扩展名为.sys。USB驱动程序的编写与硬件相关,属于核心模式。另外, Windriver是一款专业的设备驱动程序开发工具,相比DDK开发要简单些,利用它开发设备驱动程序,开发者不需要深入了解操作系统内核。WinDriver for USB也已发布,WinDriver USB使程序员可以开发基于USB接口的高性能设备驱动程序。

3.1.1 使用Windows DDK开发驱动程序

Windows DDK(Device Driver Developer's Kit)是微软公司提供的一个开发Windows驱动程序的工具。使用DDK开发驱动是一个比较传统的方法,其过程如下:

1)根据要变异的驱动程序类型,选择编译环境。注意,这里的环境和运行的操作系统没有关系,例如,在Windows XP环境下,可以编译Windows2000环境下的驱动程序。

2)DDK提供编译驱动程序的环境,在该环境下进入与编译的驱动程序所在的目录,输入build即可开始编译。

3)build将会在这个目录中寻找一个叫sources的文件,这个文件告诉编译程序,应该怎么做。

3.1.2 即插即用(PNP)处理例程的编写(IRP_MJ_PNP)

驱动程序初始化完成后,接着必须对设备进行初始化。PnP管理器调用驱动程序中AddDevice例程来初始化该驱动程序控制的每个设备。当一个驱动程序从PnP管理其中收到IRP_MN_START_DEVICE请求时,驱动程序使设备启动并且准备好处理IO操作。

对设备进行停止或者卸载时,需要等待其余IRP都操作完毕。为了在驱动程序中知道这一点,可以采用一个类似于信号量的计数器,在一个IRP开始的时候使此计数器增加1,结束时使其减少1。

3.2 动态链接库

在本系统应用中,CH375的制造商提供了设备方式下的标准驱动CH375WDM.INF和动态链接库:CH375DLL.DLL,通过加载驱动信息可以在应用程序中直接调用动态链接库。CH375在计算机端提供了应用层接口,应用层接口是由CH375动态链接库DLL提供的面向功能应用的API,所有API在调用后都有操作状态返回,但不一定有应答数据。CH375动态链接库提供的API包括:设备管理API、数据传输API、中断处理API。(相关API参数的未列出。)

3.2.1 设备管理API

打开设备:CH375OpenDevice

关闭设备:CH375CloseDevice

获得驱动程序版本号:CH375GetDrvVersion

获取USB设备描述符:CH375GetDeviceDescr

获取USB配置描述符:CH375GetConfigDescr

复位USB设备:CH375ResetDevice

设置USB数据读写的超时:CH375SetTimeout

设置独占使用当前C H 3 7 5设备:CH375SetExclusive

3.2.2 数据传输API

读取数据块(数据上传):CH375ReadData写出数据块(数据下传):CH375WriteData放弃数据块读操作:CH375AbortRead放弃数据块写操作:CH375AbortWrite

写出辅助数据(辅助数据下传):CH375WriteAuxData24

3.2.3 中断处理API

读取中断数据:CH375ReadInter

放弃中断数据读操作:CH375AbortInter

设定中断服务程序:CH375SetIntRoutine

本设计采用VB6.0作为计算机端应用软件的开发平台,首先需要将CH375的动态链接库、驱动程序复制到计算机中。在设备初次连入计算机USB口时,系统会自动提示设备连入,要求加载驱动。将路径指向驱动所在目录即可完成加载。在VB开发中,需要将动态链接库的访问入口添加至VB6.0的项目中。动态链接库的使用,简化了USB设备开发的步骤,降低了开发难度,为系统调试节省了时间。

3.3 客户应用程序与设备间通讯

通过动态链接库的数据传输函数,CH375在计算机应用层与本地端单片机之间提供了端对端的连接。客户应用程序与设备固件间的通讯采用请求加应答方式。此通讯方式具有较好的交互性和可控性。

请求加应答方式使用一个下传的主动请求和一个上传的被动应答进行交互式的双向数据通讯,下传与上传一一对应,相互关联。所有的通讯都由客户应用程序发起,然后以接收到单片机的应答结束。

3.4 固件程序设计

单片机端程序设计包括I2C器件数据读写、LCD信息显示、按键扫描相应、A/D数据采集及USB接口处理等部分。CH375与单片机之间设计成完全的中断驱动:当单片机处理前台任务时,USB的传输可在后台进行,这样不仅确保了最佳的传输速率和更好的软件结构,也简化了编程和调试。后台ISR(中断服务程序)和前台主程序循环之间的数据交换可以通过事件标志和数据缓冲区来完成。

3.4.1 USB接口处理程序

CH375芯片专门用于处理USB通讯,在从主机接收到数据后或者向主机发送完数据后,CH375以中断方式通知单片机进行处理。

3.4.2 数据采集程序

对于A/D数据采集的程序处理,根据模拟量的不同特点和采用需求,可以采用不同的方式。对采样周期要求严格的数据采样,可以将事件处理放到定时器中断里进行。

4 结论

与基于串口和基于板卡的数据采集系统相比,基于CH375的USB数据采集系统具有即插即用、数据传输速度快、易使用以及低成本的特点。该系统还可以与RS485总线结合起来,实现远程多点数据的采集。

[1]周振宇,谷海颖.基于USB总线的实时数据采集系统的设计[J].电子技术应用,2002.

[2]周立功.增强型80C51单片机速成与实践[M].北京:北京航空航天大学出版社,2003.

猜你喜欢
驱动程序中断应用程序
删除Win10中自带的应用程序
阻止Windows Update更新驱动程序
谷歌禁止加密货币应用程序
基于FPGA的中断控制器设计*
Linux中断线程化分析及中断延时测试
计算机硬件设备驱动程序分析
跟踪导练(二)(5)
千里移防,卫勤保障不中断
三星电子将开设应用程序下载商店
微软软件商店开始接受应用程序