微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于USB 2.0数据采集系统的程序设计

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

时间:12-21 来源:互联网 点击:

式( 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设备的即插即用特性满足了该系统便携式及使用方便的要求。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top