1、基于USB接口的数据采集系统设计摘要:以自行开发的基于USB接口的数据采集系统为例,介绍了USB接口的硬件和软件开发过程。关键词:USB 数据采集 PDIUSBD12 协议和芯片选择理解好协议是系统开发的第一步。协议版本包括.、.1和., 是对.版本协议的补充。虽然协议内容繁多且复杂,然而,对开发影响较大的却只是少数部分,以下对协议版本.中这些部分进行介绍。. 协议一般,每个设备由一个或多个配置控制其行为。使用多配置原因是对操作系统的支持;一个配置由接口组成;接口则是由管道组成;管道与设备的端点对应,一个端点可以配置为输入输出两个管道。在固件编程中,设备、配置、接口和管道都用描述符报告其属性。
2、图为多层次通信模型。端点默认配置为控制管道,用来完成所规定的设备请求(协议第九章)。其它端点可配置为数据管道。对开发而言,主要的大数据传输都是通过数据管道完成的。 传输类型包括批量传输、等时传输、中断传输和控制传输,每种传输类型的传输速度、可靠性以及应用范围都不同。控制传输可靠性是最高的,但速度最慢;等时传输速度快,满足实时性,但可靠性低。在具体应用中,端点传输类型可根据传输速度和可靠性选择。 在通信协议中,主机取得绝对主动权利,设备只能是“听命令行事”,通过一定的命令格式完成通信。设备请求包括标准请求、厂商请求和设备类请求。设备的枚举是标准请求命令完成的;厂商请求是用户定义的请求;设备类请求
3、是特定的设备类发出的请求,例如海量储存类、打印机类和类。固件编程中设备请求必须遵循一定的格式,包括请求类型、设备请求、值、索引和长度。 接口芯片选择接口芯片的类型有按传输速度的高低:低速和全速()可选接口芯片,例如公司的和公司的系列;高速可选接口芯片,例如公司的和公司的。是否带:一般公司的都不带,公司大多都带,例如。是否带主控器功能:不需要主机参与,主从设备间可进行数据传输,芯片有公司的和公司的等。还有专门用途芯片,例如闪存专用芯片。工程中用户可根据自己的需求选择一款性价比高的芯片。另外可用开发资源也是要考虑的重要方面,例如开发板和芯片厂商提供的网上资源,可大大降低开发的难度。 基于接口的数据
4、采集系统的设计. 系统简介该系统能够实现路温度数据自动采集,系统的组成框图如图所示。主要包括个组成部分:中央处理器选用芯片,完成各部分控制功能和传输协议;实时时钟记录当前测量温度的时间;温度传感器和接口电路主要完成温度采集,并读入处理;复位电路完成对的上电复位和电源电压监视;看门狗电路用来监视是否工作;存储电路主要存储采集到的温度数据以及采集的实时时间;电源电路主要为各部分提供要求的电源;外设与主机间的通信电路采用接口。. 接口芯片选择接口电路采用公司的芯片。主要因为芯片信息、开发资源丰富,具有较高的性价比。芯片的主要特点包括符合版本规范;可与任何外部微控制器微处理器实现高速并行接口();采用
5、技术的连接指示器,在通信时使闪烁;主端点的双缓冲配置增加了数据吞吐量并轻松实现实时数据传输;在批量和等时模式下均可实现的数据传输率;完全自治的直接内存存取操作。 接口硬件设计由接口组成的通信电路原理如图所示。关于的各引脚说明见参考文献。多路地址数据总线接单片机的脚,这样使用指令可以与接口,对操作就象对操作一样,此时忽略的输入。因为没有使用传输方式,所以没有用到、 和 引脚。是中断请求脚,发出中断请求;是指示灯,在调试过程中非常有用,在通信时会不停闪烁。如果一直亮或者一直暗,表示接口有问题,如果挂起,则关闭。是的时钟输出,可以通过固件编程改变其频率,在调试固件时,可作为参考。 接口程序设计接口程
6、序设计是开发的核心。接口程序设计包括三部分:单片机程序开发、设备驱动程序开发、主机应用程序开发。三者互相配合,才能完成可靠、快速的数据传输。 单片机程序设计单片机程序采用模块化程序设计,主要模块包括:数据采集模块、数据处理、监控模块和数据通信模块。模块化设计的优点是可靠性高、可读性好、升级简单。通信模块固件结构如图所示。主循环和中断服务程序之间的数据交换可通过事件标志和数据缓冲实现。图中中断引脚发出中断请求,中断服务程序根据中断请求类型操作,设置事件和填充数据缓冲区再传输给主循环;标准设备请求程序是对标准请求进行处理;用户可以根据实际需要编写厂商请求,例如发出启动或停止数据采集命令。 驱动程序
7、设计 驱动开发工具有和第三方开发工具。其中开发难度最大,第三方开发工具有和等。难度适中,而则属于应用层驱动开发,难度小,但效率低,并存在发布问题。驱动程序开发工作包括:开发环境设置、驱动程序设计、安装文件设计。驱动程序设计采用。设备驱动程序提供了一个参考框架,大大降低了由书写驱动程序带来的难度。驱动使用的例程包括:、和例程, 以下是的驱动程序函数 ; ; ; ; ;驱动程序与应用程序和硬件之间通信都是完成的。主要是实现即插即用,例如设备的添加、删除和资源的分配;实现电源管理,例如设备的挂起和唤醒;(创建)、(关闭)、和?穴写?雪是主要完成数据通信的函数,实现管道的创建、关闭和数据读写。其中设备
8、控制具有输入输出缓冲区,可实现读和写功能;和实现设备管理,在设备添加和卸载时,创建和删除设备,以及管理资源分配。驱动程序通过安装文件中(产品识别号)和识别设备。 应用程序设计主机应用程序的编写使用编译环境中的函数实现。应用程序的编程方法与串口编程类似。首先必须查找设备,打开设备的句柄;然后进行读写和控制操作;最后是关闭设备句柄。为了提高效率,可使用多线程技术实现读写。应用程序通过(注册表驱动唯一识别号)查找驱动程序。 调 试首先是固件调试,可用仿真机完成,驱动开发工具也是很好的固件调试工具,例如测试标准请求、厂商请求和管道读写。其次是驱动调试,这是接口开发最困难的部分,调试工具可用中工具和文献中跟踪工具,监视工具 可监视的实际数据传输情况。需要注意的是,驱动调试必须在应用程序正确调用的前提下。 传输速度主机每过发出一个,四种传输类型都分布在的帧内。所以为了提高传输速度,可加大端点缓冲区的大小和使用双缓冲,在内尽量多传输数据;采用传输方式,设备不通过微控制器直接完成数据传输,当然相应硬件和软件开发的难度增加;如果单片机数据加载速度较慢,则可考虑使用高速指令的单片机;如果速度要求在以上,则考虑采用接口芯片。本文以接口程序在路温度采集系统中的应用为例,介绍了的接口标准和程序设计。该系统经过一段时间运行,稳定可靠,目前已广泛应用于航空电子设备的测温系统。