基于USB总线和Aduc831的数据采集系统的设计方案

时间:2011-08-11

  由于信息网络化的发展,经常需要将各种设备与主机相连,传统的外设与主机的信息化代表了一种信息技术被高度应用,信息资源被高度共享,从而使得人的智能潜力以及社会物质资源潜力被充分发挥,个人行为、组织决策和社会运行趋于合理化的理想状态。同时信息化也是IT产业发展与IT在社会经济各部门扩散的基础之上的,不断运用IT改造传统的经济、社会结构从而通往如前所述的理想状态的一个持续的过程。通讯接口一般是基于PCI总线、ISA总线或者是RS-232C串行总线。PCI总线是一种不依附于某个具体处理器的局部总线。从结构上看,PCI是在CPU和原来的系统总线之间插入的总线,具体由一个桥接电路实现对这一层的管理,并实现上下之间的接口以协调数据的传送。管理器提供了信号缓冲,使之能支持10种外设,并能在高时钟频率下保持高性能。PCI总线也支持总线主控技术,允许智能设备在需要时取得总线控制权,以加速数据传送。

  1.USB简介

  1.1USB特点

  USB的英文全称为Universal Serial Bus,它是一种快速、双向、同步传输的廉价的并可以进行热拔插的串行接口。它的特点主要有:

  1)速度快。速度性能是USB技术的突出特点之一。USB接口的传输率可达每秒12Mb,比串口快了整整100倍,比并口也快了十多倍。

  2) 设备安装和配置容易。安装USB设备不必再打开机箱,加减已安装过的设备完全不用关闭计算机。所有USB设备均支持热插拔,且易于扩展。

  3) 使用灵活。USB接口支持多个不同设备的串列连接,一个USB口理论上可以连接127个USB设备。连接的方式也十分灵活,既可以使用串行连接,也可以使用中枢转接头(Hub),把多个设备连接在一起,再同PC机的USB口相接。在 USB方式下,所有的外设都在机箱外连接,连接外设不必再打开机箱;允许外设热插拔,而不必关闭主机电源。USB采用 "级联"方式,即每个USB设备用一个USB 插头连接到一个外设的USB插座上,而其本身又提供一个USB插座供下一个USB外设连接 用。通过这种类似菊花链式的连接,一个USB控制器可以连接多达127个外设,而每个外 设间距离(线缆长度)可达5米。

  1.2 USB总线协议

  USB总线属于一种轮讯方式总线,主机控制端口初始化所有的数据传输。每一总线动作多传送三个数据包,包括令牌(Token)、数据(Data)、联络(HandShake)。按照传输前制定好的原则,在每次传送开始时,主机送一个描述传输动作的种类、方向、USB设备地址和终端号的USB数据包,这个数据包通常被称为令牌包(TokenPacket)。USB设备从解码后的数据包的适当位置取出属于自己的数据。数据传输方向不是从主机到设备就是从设备到主机。在传输开始时,由标志包来标志数据的传输方向,然后发送端开始发送包含信息的数据包或表明没有数据传送。接收端也要相应发送一个握手的数据包表明是否传送成功。

  2. 硬件设计

  2.1 Aduc831简介

  ADuC831 是一个完全综合的247 k采样保持数据采集系统,在同一片中 结合了高性能的自校准12位 ADC 多路通道,双12位 DAC通道和可编程8位 MCU.微处理器是 8052,提供片内 62 kB 非易失性闪速/电擦除程序存储器。还提供片内 4 kB 非易失性闪速/电擦除数据存储器、256 b RAM 和2 kB 扩展 RAM.

  ADuC831 还提供额外的电源监视器, 和一个高参考源。片内数字外围设备包括2个16位Σ-Δ DAC, 双输出16位 PWM,看门狗定时器, 定时间隔计数器,3个定时器/计数器, 定时器 3用于波特率产生核 串行接口 I/O (I2C, SPI 和UART) .

  并且片内提供串行和调试模式 (通过 UART), 并且通过EA引脚提供单引脚竞争模式。ADuC831 支持 QuickStart 和 QuickStart Plus 升级系统和低成本的软件和硬件工具。

  2.2 USBN9603简介

  USBN9603是一个集成的USB端点控制器,具有增强的DMA功能。USBN9603集成了一个带有3.3V的调节器的收发器,1个SIE(串行接口引擎),1个8 b并行接口,1个时钟发生器和1个MICROWIRE/PLUS接口。USBN9603可以进行7个端点的数据传输,除了1个端点必须为控制传输端点以外,其他的6个端点可以被配置成中断传输端点、批量传输端点或者等时传输端点;每一个端点都有一个专门的FIFO,控制端点的FIFO长度为8B,其他的为64B.8 b并行接口可以支持多路复用或者非多路复用2种与CPU的接口方式。USBN9603的突出特点为:低EMI(电磁干扰),低等待电流,24M晶振,增强的DMA功能;可使用5V或3.3V电源;总线操作具有异步唤醒的全速静态HALT模式;改进的3.3V电压输入的电压调节器,所有非双向端点都有64B 的FIFO;外部控制器接口简单,编程方便。

  2.3 原理图设计

  USB数据采集系统硬件模块主要由Aduc831芯片、USB接口芯片USBN9603组成。硬件结构简单,硬件总体结构框图如图1所示。

  模拟输入信号A/D转换器,转换结果存储在FIFO存储器中;一旦FIFO存满,SIE立刻对数据进行处理,然后Aduc831系统将数据从FIFO存储器中读出,由收发器通过数据线(D+、D-)送至主机。

  当USB控制器从USB总线检测到主机启动的某一传输请求后,通过中断方式将此请求通知Aduc831系统,Aduc831系统通过访问USB控制器的状态寄存器和数据寄存器获得与此次传输有关的各种参数,并根据具体的传输参数,对USB控制器的控制寄存器和数据寄存器进行相应的操作,以完成主机的传输请求。Aduc831与USBN9603接口电路如图2所示。

  3. 系统软件设计

  系统软件主要包括:控制程序和USB设备驱动程序。

  3.1 控制程序

  程序控制法即对经常性的重复出现的业务,要求执行人员按规定的标准化程序来完成,以保证业务处理质量达到控制目标和要求。程序控制要求按照牵制的原则进行程序设置,所有的主要业务活动都要建立切实可行的办理程序。即:按生产流程,每道工序的终点为程序控制点, 每道工序的终点的生产者为质量控制者,对不合格的加工、 不合格的配制有责任也有权提出改正, 这样使每个人在生产过程都受到监控。

  既然程序也是计划,因而程序的设计必须考虑到有助于实现整个组织的(而不仅仅是个别部门的)目标和提高整个组织的效率。主管人员应当向自己提出如下的问题并作出满意的回答:程序是否已计划好?如果建立某一程序是必要的,那么所设计的程序能否收到预期的效果?能否有助于实现计划?举个例子,间接材料的发放程序必须起到监督间接材料的领用、控制间接材料的消耗、加强成本核算、降低成本、提高企业经济效率的作用。

  控制程序主要功能有控制A/D采样, 控制USBN9603接受并处理USB驱动程序的请求及应用程序的控制指令不用仿真机,不用传统的方法向EEPROM中烧制程序,所以调试起来非常方便。控制程序流程、中断处理程序如图3、4所示。

  3.2 USB设备驱动程序设计

  USB设备驱动程序基于WDM.WDM

  型驱动程序是内核程序,与标准的Win32用户态程序不同。采用了分层处理的方法, 较的USB设备驱动程序和较低级的USB函数层。其中USB函数层由两部分组成:较的通用串行总线模块(USBD)和较低级的主控制器驱动程序模块(HCD)。USB设备驱动程序不必具体对硬件编程,所有的USB命令、读写操作通过总线驱动程序转给USB设备。但是,USB设备驱动程序必须定义与外部设备的通讯接口和通讯的数据格式,也必须定义与应用程序的接口。Windows环境下驱动程序共有三类,一类是VxD( Virtual Device Driver,虚拟设备驱动程序),起源于Windows 3.1 时代,用于Windows 95/98/Me操作系统中;一类是KMD( Kernel Mode Driver,内核模式驱动程序),用于Windows NT下;还有一类就是WDM(Win32 Driver Mode,Win32驱动程序模型),是微软从Windows 98开始,推出的一个新的驱动类型,它是一个跨平台的驱动程序模型,不仅如此WDM驱动程序还可以在不修改源代码的情况下经过重新编译后在非Intel平台上运行,毫不夸张地讲,WDM算得上是21世纪的驱动程序框架。另外,所有对各种IRP(I/O请求包)的处理例程都在此入口函数中作为定义。

  DriverEntry(IN PDRIVER_OBJECT DriverObject,…) //驱动程序入口

  {

  DriverObject->DriverExtension->AddDevice=USBAddDevice;

  DriverObject->DriverUnload=USBUnload;

  DriverObject->MajorFunction[IRP_MJ_READ]=USBRead;

  DriverObject->MajorFunction[IRP_MJ_WRITE]=USBWrite;

  DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = USBDeviceControl;

  RegisterForPnpNotification(DriverObject);

  return status;

  }

  电源管理模块负责设备的挂起与唤醒

  I/O功能实现模块完成I/O请求的大部分工作。若应用程序想对设备进行I/O操作,它便使用Windows API函数,对WIN32子系统进行WIN32调用。此调用由I/O系统服务接收并通知I/O管理器,I/O管理将此请求构造成一个合适的I/O请求包(IRP)并把它传递给USB设备驱动程序。USB设备驱动程序接收到这个IRP以后,根据IRP中包含的具体操作代码,构造相应的USB请求块并把此 URB(USB请求块)放到一个新的IRP中。然后,把此IRP传递到USB总线驱动程序,USB总线驱动程序根据IRP中所含的URB执行相应的操作(如从USB设备读取数据等),并把操作结构通过IRP返还给USB设备驱动程序。USB设备驱动程序接收到此IRP后,将操作结果通过IRP返还给 I/O管理器。,I/O管理器将此IRP中操作结果返还给应用程序,至此应用程序对USB设备的I/O操作完成。

  结束语:

  USB为计算机外设输入输出提供了新的接口标准。它使设备具有热插拔,即插即用,自动配置的能力,并标准化设备连接, 还可与MAX

  485结合起来实现数据的远程采集。该系统具有可靠性高、性价比高和多点采集等优点。而USB2.0标准具有更高的传输速率,更具有美好的应用前景。

  即插即用管理模块用来实现USB设备的热插拔及动态配置。当硬件检测到有USB设备接入时,Windows98查找响应的驱动程序,并调用它的 DriverEntry例程。PnP(即插即用)管理器调用驱动程序的AddDevice例程,告诉它添加了一个设备。在此处理过程中,驱动程序收到一个设备启动请求(IRP_MN_START_DEVICE)的IRP.同理,当要拔除时,PnP管理器会发出一个设备删除请求(IRP_MN_REMOVE_DEVICE)的IRP,由驱动程序进行处理。通过对这些PnP请求的处理,可支持设备的热插拔和即插即用


  

参考文献:

[1]. PCI datasheet https://www.dzsc.com/datasheet/PCI_1201469.html.


上一篇:超越智能的触摸传感解决方案
下一篇:一种太阳能充电控制器的设计

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料