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

发布者:心灵律动最新更新时间:2014-08-22 来源: cecb2b关键字:USB  2.0  数据采集系统  程序设计 手机看文章 扫描二维码
随时随地手机看文章

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

关键字:USB  2.0  数据采集系统  程序设计 引用地址:基于USB 2.0数据采集系统的程序设计

上一篇:CP2701:USB接口芯片
下一篇:低成本USB接口密钥的设计方法

推荐阅读最新更新时间:2024-05-02 23:08

京东方推27英寸智慧屏:支持DC调光集成USB-C接口
制造商京东方是知名的显示面板供应商,您可能不知道的是,该公司还制造自己的品牌产品。京东方旗舰店近日推出了新的27英寸京东方智慧屏。集成了 USB-C 接口,并支持使用鼠标和键盘等外设设备。 京东方的智慧屏采用了自行开发的 27 英寸 ADS-IPS 屏幕,分辨率为 2560 x 1440 像素。还配备了京东方的专业 GAMMA 技术,可以使深色部分的细节更清晰,而明亮部分的图像质量不会受到影响。 该显示屏支持 75Hz 的刷新率和 122%的 sRGB 广色域,可提供更丰富的色彩和更逼真的体验。 对于熬夜的用户,显示屏将自动调整为低亮度。京东方的智慧屏采用DC调光,亮度低且无闪烁。它通过了德国 TUV 莱茵低蓝光护眼认
[手机便携]
TDK推出一系列用于保护USB-C的超小型TVS,具有更低电容
随着智能手机、笔记本电脑等对于传输速度及功率的需求与日俱增,USB-C接口已取代micro USB成为如今最流行的标准接口。TDK 开发了一系列用于 ESD 保护的小型化高性能 TVS 二极管,这款产品在设计之初就考虑到了未来增长的数据和能量传输需求。 除了高达 40 Gbps 的数据速率外,还可以通过 USB-C 传输高达 100 W的功率以进行快速充电。除了用于高速数据传输的 8 个引脚外,USB-C 还具有符合 USB 2.0 标准的 4 个低速引脚,以及用于能量传输和辅助总线的连接。图 1 显示了典型 USB-C 接口的分配。 图 1:USB-C 的引脚分配。橙色:高速总线,绿色:低速总线(USB 2.0,蓝色:
[电源管理]
TDK推出一系列用于保护<font color='red'>USB</font>-C的超小型TVS,具有更低电容
全球首款USB-C iPhone全面亮相:你也可以尝鲜了
9月下旬,Kenny Pi设计并订购了一块柔性印刷线路板,以将iPhone延续多年的 Lighting 端口改装成 USB-C ,这引起了全球用户的关注,因为真的是太有必要了。   然而改造的过程,实现起来并不那么轻松。Kenny Pi表示,其对苹果C94连接器进行了逆向工程。然而由于iPhone X的机身空间捉襟见肘,该项目还是耗费了数月的时间。   按照这位手工大神的说法,即便是用最新发布的iPhone 13系列,也严重受限于普通的Lighting连接器(数据传输速率只有USB 2.0)。   WCCFTech指出,苹果之所以不情愿在iPhone上迅速采用USB-C端口,只因其在官方/第三方 MFi授权配件制造商那里获
[手机便携]
MP3专用特殊USB数据线的改法图解
首先进行了测试,发现插上USB线后电脑无任何反映,MP3也无法开机(由于丢了数据线,已经很久没用了,所以可以确定MP3没问题)。 第一步,我们要排除USB插孔接触不良的问题,拆开MP3,用烙铁补焊了USB插孔的四个引脚。再次插上USB线,还是无法识别. 第二步,到这时可以确认是线的接法不对,只好一狠心将线从靠近USB电脑端剪断(因为这一端没有经常插拔)如图,用万用表的电阻档可以确认出4根线依次是:红色USB电源正极、黑色负极、白色和绿色分别是数据脚. 第三步,找出MP3插孔上的电源正负极,还是用万用表的电阻档,从锂电池的负极(如图)到插孔的四个脚,把插孔上的负极对应脚找出来。再从充电二极管的正极(如图)用电阻档依次测插
[嵌入式]
USB端口找到新居,落户嵌入式系统
安装过PC的人员都知道,通用串行接口(USB)具有与即插即用相似的性能。因而,将USB端口移植到嵌入式系统是一种方便的控制外部设备的办法。毕竟USB只有两条信号线和两条电源连接线,设计一个USB端口不会有什么困难吧。这一任务说起来简单,对设计者却有不少困难。不过,供应商可以提供从板卡到软件的一切帮助。 在一个嵌入式系统上添加USB端口的最简单的办法是采用基于Windows的计算机。很多单板机(图1)提供了内置的USB端口,并且运行Windows 软件。许多USB外设都装有现成可用的Windows驱动器。当你需要采用实时操作系统(RTOS)时,任务就会变得困难起来。若干家公司提供了能够简化USB端口设计的芯片和软件,还可以获得在片上
[嵌入式]
51单片机IO口模拟串口通讯程序设计实例
51 IO口模拟串口通讯C源程 #include reg51.h sbit BT_SND =P1^0; sbit BT_REC =P1^1; /********************************************** IO 口模拟232通讯程序 使用两种方式的C程序 占用定时器0 **********************************************/ #define MODE_QU IC K #define F_TM F0 #define TIMER0_ENABLE TL0=TH0; TR0=1; #define TIMER0_D ISA BLE TR0=0; sbit A CC 0=
[单片机]
AT45DB081B在数据采集系统中的应用
0 引言 在信号采集系统中,往往需要对多种数据波形进行存储、转移或比较,这就要求系统能方便地访问、传输波形数据。FLASH存储器以其体积小、容量大、可随机访问的特点,在系统中得到了很好的应用。本文从实际应用角度出发,简单介绍了FLASH存储器AT45DB081在数据采集系统中的软/硬件设计思路和设计要点。 1 系统设计 本系统的整个数据存储系统可以分为数据缓冲模块、控制单元和FLASH存储模块三个部分,其系统结构框图如图1所示。图中数据缓冲模块负责对端口数据进行缓冲,以满足FLASH存储器的传输要求。控制单元可按照FLASH存储器的控制要求,对FLASH的读写、擦除操作进行控制。在存储开始后,FLASH的控制单元将数据缓冲模
[缓冲存储]
基于OHCI协议的S3C2440 USB Host Driver之协议介绍(二)
一 HCD的职责: 1.HCD负责HC的操作。 HCD可以直接与HC的可操作寄存器通信,且在HCCA中建立中断ED表头指针。HCD维护HC的状态,表处理指针,表处理使能,中断使能。 2.带宽分配。 HCD负责对USB访问进行调度。HCD给每一个周期端点分配一定可用的带宽。如果没有足够的带宽可用,一个新连接的周期端点不允许访问总线。 一部分带宽分给非周期传输。这会确保在每帧里一定量的批量和控制传输会发生。每帧是1ms。 每帧的开始,HC发起SOF给USB总线。HC紧接着服务非周期列表。然后服务周期列表。还有剩余时间的话,再次服务非周期列表。 3列表管理。 USB传输机制以通过连接ED表上的TD。HCD
[单片机]
基于OHCI协议的S3C2440 <font color='red'>USB</font> Host Driver之协议介绍(二)
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved