新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于USB 2.0数据采集系统的程序设计

基于USB 2.0数据采集系统的程序设计

作者:时间:2016-12-21来源:网络收藏

  1 引言

  在工业生产和科学技术研究的各行业中, 常利用PC或工控机对各种数据进行采集, 如压力、频率、液位、温度等。常用的采集方式是通过数据采集板卡, 其不仅安装麻烦, 易受机箱内环境的干扰,而且由于受计算机插槽数量和地址、中断资源的限制, 不可能挂接很多设备。而通用串行总线( Universa l Ser ia l Bus, USB )的出现, 很好地解决了以上这些冲突, 可实现低成本、高可靠性、多点的数据采集。USB 2. 0 是一种计算机外设连接规范, 除了USB1. 1中规定的1. 5Mb it / s和12Mb it / s两个模式以外, 还增加了480Mbit / s( 60MB / s)这一 高速 模式, 将USB的应用范围得到进一步扩大。

  本文介绍的基于USB 2. 0的两路力信号采集传输系统, 可用于销盘式摩擦实验机, 测量材料的摩擦系数。

  2 硬件设计

  2. 1 系统方案

  外部传感器的摩擦力信号和压力信号分别通过两片8位AD转换器转换为数字信号, 由USB 芯片直接传输至计算机中处理, 并使用软件演示两路力之间的关系, 计算出材料的摩擦系数。主机同时负责数据传输的启动与停止, USB 控制器控制信号的采集并读取到内部缓冲区。

  2. 2 控制器芯片选择USB 控制器采用56 脚SSOP 封装的CY7C68013, 属于Cypresss 公司FX2 系列。

  Cypresss EZFX2将USB 2. 0的收发器、SIE、增强型8051 和一个可编程逻辑接口集成在一个芯片上。在EZUSB FX2 上, 灵活的SIE 处理大部分USB1. 1和USB 2. 0硬件协议, 释放了用于特殊应用功能的嵌入式微控制器。通用可编程接口( GPIF)和主控/伺服端点FIFO ( 8..或16..位数据总线) 提供了其与常用接口, 如: ATA, UTOPA, EPP,PCMC IA, 以及大多数DSP /处理器的简单无缝连接。其有如下特点:

  内核: 增强型8051的时钟频率高达48M; 每个周期4个时钟; 运行来自内部RAM的程序。

  四个可编程BULK / INTERRUPT / ISOCHRONOUS端点: 缓冲区可选择为双缓冲区, 三缓冲区或四缓冲区; 外部数据接口可为8或16位。

  GPIF: GPIF对于FX2的FIFO来说是一个内部主机, 可编程状态机是它的核心。对于56脚封装,它可以产生三个‘控制?’( CTL [ 2: 0] ) 和九个‘地址’ (GPIFADR [ 8: 0] )输出, 能接收两个外部和两个内部‘准备’ ( RDY [ 1: 0] )输入。控制状态机由四个用户定义的!波形描述‘控制’。内部RAM 中的波形描述符描述每个GPIF信号的行为。初始化阶段, 波形描述符由FX2固件下载到GPIF寄存器中,通过GPIF接口在传输操作的代码执行全过程使用它。控制输出信号( CTL[ 1: 0] )通常用做闸门控制(使能信号线)、读/写信号线等。CTLx波形边沿可通过编程进行传输, 速率可达每个IFCLK时钟一次( IFCLK 运行于48MH z)。RDY[ 1: 0]由GPIF取样,而且能迫使一个传输处于等待, 继续, 或重复状态,直到它们处于一个特殊的状态。

  2. 3 硬件电路图

  根据所选控制器和具体条件, 设计硬件电路如图2所示。

  采用从主机下载固件程序的方法, SCL, SDA引脚通过两个2. 2k 的电阻接3. 3V 电源, RESET引脚有滞后作用, 低电平有效; 内部PLL 在V cc 到达3. 3V后约200s后稳定。典型电路是外接一个RC电路(R = 100K, C = 0. 1F)提供RESET:信号;软件部分采用GPIF Master模式, 16 位数据总线,将两路8位ADC 数据线直接连到GPIF数据总线上: FD[ 0: 7]接摩擦力数据信号FDATA [ 0: 8] ,FD[ 8 : 15] 接压力数据信号PDATA [ 0 : 7 ]。

  CTL0, CTL1分别连接ADC 的READ 和WRITE 引脚, 用于控制其工作时序。REY0连接ADC 的INTR, 用于判断是否开始读取数据, 并由此判断何时改变GPIF状态。

  芯片电源使用USB 总线电源, 采用MAX IM 公司的MAX882 芯片, 把5. 25V 的Vbus转换为3.3V, 如图3所示。

  对于USB 2. 0系统, D + 和D - 信号线上的差分特性阻抗会严重影响到信号眼图、EOP、带宽、信号抖动和干扰的大小。根据U SB 2. 0规范的要求,差分线对的特性阻抗要求控制在90 ? 10% 以内,使D+ 和D - 布线长度在1英寸以内, 匹配误差在50m il以内。

  3 软件设计

  USB接口程序设计包括三部分: 固件程序设计、硬件驱动程序设计、高级应用程序设计。

  3. 1 固件( firmw are)设计

  设备固件程序的主要功能是控制EZUSB FX2接收并处理USB 驱动程序的请求、控制芯片中应用程序控制指令的接收、控制ADC 中的数据读入等。该设计的固件程序除能够使内置的GPIF在没有CPU 的干涉下通过四个端点FIFO ( EP2、EP4、EP6、EP8)中的两个处理数据传输外, 还有配置端点、通过控制端点0 来响应主机请求、控制和监测GPIF的活动等固定工作。

  GPIF的波形描述符通过FX2的固件保存在波形寄存器中。FX2可以保持多达4个波形描述符,均可采用4种传输方式( Single 读, Single写, FIFO读, FIFO写)中的一种。

  一个波形由7 个可编程的状态( S0 ~ S6 ) 和一个特殊的IDLE 状态S7 组成, 当程序分支到它的IDLE 状态时波形终止。从一种状态到另一个状态的转换发生在IFCLK 的上升沿, 但GPIF可以保持在同一种状态很多IFCLK 周期。每一个状态都通过一个32位的状态指令定义: 1) NDP状态: 在整个状态期间, 控制输出CTLx 被GPIF 指令定义为1, 0, 或三态。NDP状态有一个以IFCLK 周期为单位的程序固定周期。如果一个波形定义的状态少于7个, 最后一个编程的状态结束后不会自动进入IDLE状态, 即最后一个编程状态的状态指令必须包含一个IDLE 状态的明确分支。2) DP 状态: 任何一个状态都可以定义为DP, 允许GPIF采样两个信号, 对采样值进行布尔操作, 根据结果跳转到其它状态(或循环到自身)。若一个状态指令包含一个控制任务(递增FIFO 指针, 增加GPIFADR 地址等) , 这些任务总是在进入该状态时执行一次。若该状态是一个循环到自身的DP, 可以编程为在每一个循环中重新执行控制任务。

  GPIF的设计使用的是Cypress的GPIF Design工具, 可根据ADC 的时序和控制要求方便地设计,设计波形如图4。采用Sing le Read 方式, 每一个状态的持续时间可设置为0~ 256个IFCLK 个周期。

  在Status中设置了一个DP, 当RDY0( INTR )信号为高时, 跳转到状态0 重新下一次数据采集; 当为低时, 则返回到自身继续执行。定义好波形后, 由工具栏中的Too ls菜单中的Export to GPIF. c file导出为C语言文件。定义端点2, 6 为输入端点, 对应的FIFO 缓冲区为双缓冲区, 保证不会因为缓冲区中的数据没有传送完毕而被覆盖。每次采集数据的高字节存入端点2缓冲区, 低字节存入端点6缓冲区。

  3. 2 驱动程序的设计

  该系统需要两个驱动程序, 下载固件的驱动程序和功能驱动程序。采用固件从主机下载的方式,由固件下载驱动程序完成。当设备连接到U SB 总线后, 负责把固件程序下载到CY 7C68013的RAM中, 完成重列举工作, 使内核正常工作。主机根据其设置的V ID /PID寻找并安装功能驱动程序, 从而实现主机与设备的通信。用户程序与设备的通信及控制由功能驱动程序负责完成。

  驱动程序设计采用WDM (W indow s DriveMode)。其引入设备对象的概念来描述一个设备,主要包括物理设备对象( PDO )、功能设备对象( FDO)、过滤设备对象( f ilter DO )。其中, PDO 对应实际的物理设备, FDO 和f ilterDO 是相应驱动程序的处理对象。WDM 驱动程序直接操作的不是硬件本身, 而是相应的PDO, FDO, 和filter DO。当用户发出请求时, 操作系统会将其打包形成一个IRP结构, 并发送至驱动程序, 通过识别IRP 中的设备对象来区分它是发送给哪个设备。

  USB设备最大优点就是即插即用功能( PnP) ,PnP设备具有不同的设备状态, 当它接收到某些PnP IRP时, 其所处的设备状态就会发生改变。图5描述了PnP设备状态及其相应的PnP IRP。

  为保证USB设备连入系统时, W indow s能够找到并加载与其进行通信的设备驱动程序, 除提供的编译好的驱动程序外, 还需为其提供一个设备信息文件( DIF) , 该文件包含USB 设备、设备驱动程序及其安装过程的详细信息, 如该为设备使用哪个驱动、系统注册表中应存储哪些信息等, 以确保其硬件设备能正确地配置和安装。在U SB 设备驱动程序安装完毕后, 该设备的一些基本信息将被存储到W indow s系统注册表中, 驱动程序可执行文件和其DIF也被复制到指定的系统目录, 该USB 设备将出现在W indow s设备管理器中。

  3. 3 应用程序设计

  高级应用程序建立在驱动程序之上, 主机应用程序的编写使用VC 编译环境中的API函数实现。

  应用程序的编程方法与串口编程类似。首先必须查找设备, 打开设备的句柄, 然后进行读写和控制操作, 最后是关闭设备句柄。为了提高效率,可使用多线程技术实现读写。

  4 结语

  本文设计的用于摩擦实验机的USB 数据采集系统, 采用Cypress FX2系列芯片CY7C68013, 利用其GPIF Master模式的16位数据线与两块8位数模转换芯片连接, 准确地保证了两路力信号的同步。该芯片灵活的接口大大简化了硬件连接。其固件程序自动下载功能可方便地对固件进行修改和调试。此USB设备的即插即用特性满足了该系统便携式及使用方便的要求。



评论


相关推荐

技术专区

关闭