电子文章 | 电子资料下载 | 家电维修 | 维修资料下载 | 加入收藏 | 全站地图
您现在所在位置:电子爱好者电子文章单片机学习基于单片机和USB接口的数据采集系统设计

基于单片机和USB接口的数据采集系统设计

11-20 00:11:11 | http://www.5idzw.com | 单片机学习 | 人气:458
标签:单片机开发,单片机原理,单片机教程,http://www.5idzw.com 基于单片机和USB接口的数据采集系统设计,http://www.5idzw.com

  在工业生产和科学技术研究中,常利用PC或工控机对各种数据进行采集,以获得所需要的控制信息和实验数据。传统的数据采集系统多以ISA,EISA或PCI插卡的形式完成数据传输,这种方式存在安装麻烦,受计算机插槽数量、地址、中断资源限制,可扩展性差等缺点。由于通用串行总线(Universal Serial Bus.USB)具有自动被系统识别.自动安装驱动程序、自行进行系统配置,以及支持不同速率的同步和异步传输方式,支持热插拔和即插即用(Plug and Play,PNP)等优点,已逐渐成为现代数据传输的发展趋势。目前实现USB数据传送多采用专用的USB接口芯片,文献采用的PDIUSBDl2可支持USBl.1协议,文献E37采用的接口芯片为USBl00也仅支持USBl.1协议,文献采用CP2102符合USB2.0协议,其通用的驱动程序可将设备作为虚拟的COM端口设备进行操作,文献采用Philips公司ISPl581芯片作为USB2.0的接VI芯片’。这里采用Cypress公司的CY7C68013作为USB接口芯片,设计实现了基于单片机和USB2.0的数据采集系统。该系统可实现单通道模拟信号的采集,主机应用程序负责启动和停止采样,采样间隔时间由主机应用程序设置调整,采样数据传给主机应用程序显示并保存。

  1 系统硬件设计

  1.1 系统硬件组成

  整个系统的硬件结构如图1所示。AT89C52为主控单片机,负责控制A/D转换、上传采集数据、接收并执行主机的命令。CY7C68013为USB接口芯片。A/D转换芯片采用TI公司生产的TLC549,AD780是一款高精度参考电压芯片,可为TLc549提供2.5 V或 者3.0 V的参考电压。系统+5 V电源由主机的USB 接口提供,CY7C68013所需的电源为+3.3 V,由+5 v 电源接稳压芯片APlll7提供,图中没有画出。


  1.2 TLC549

  TLC549是以8位开关电容逐次逼近A/D转换器为基础而构造的CMOS A/D转换器,将其设计成能通过三态输出与微处理器或外围设备串行接VI。TLC549用输入/输出时钟(I/O CLOCK)和芯片选择(CS)输入作数据控制,转换结果由DATAOUT引脚输出。I/o CLOCK端的最高频率可达1.1 MHz。TLC一549片内系统时钟工作在4 MHz(不需要外部时钟)。片内系统时钟使内部器件的操作独立于串行输入/输出时序并允许TLC549像许多软件和硬件所要求的那样工作。I/O CLOCK和内部系统时钟可以实现高速数据传送,使得TLc549可实现40 kHz的采样频率。TLC549具有通用控制逻辑及自动工作或在微处理器控制下工作的片内采样/保持电路,差分高阻抗基准电压输入端,易于实现比例转换的高速转换器,定标及隔离电路。整个开关电容逐次逼近转换器电路的设计允许在小于17μs的时间内,以最大误差±0.5为最低有效位的精度实现转换。

  1.3 CY7(368013及其固件程序

  EZ—USB FX2系列芯片CY7C68013是业界第一个支持USB2.0,同时向下兼容USBl.1规范的单片机,为描述方便以下简称该芯片为FX2。FX2支持全速传输(12 Mb/s)和高速传输(480 Mb/s),该芯片将USB2.O收发器、串行接口引擎SIE、增强的8051内核、GPIF等集成于一体。FX2内含4 KB的端点缓冲区F1FO,可以被配置为具有不同大小缓冲区的IN或OUT端点(EP2,EP4,EP6,EP8),具有USB协议所规定的4种传输方式,即控制方式、中断方式、批量传输、和同步传输方式。Cypress公司为FX2提供了完善的软件开发工具包,降低了开难度,加快了开发进度。

  FX2可以工作在3种不同的模式下完成USB数据的传输,即:Ports模式、GPIF模式和Slave FIFO模式。Ports模式下其uSB数据的传输主要在FX2的8051内核参与下完成,数据传输通过执行指令实现,因此数据的传输率比较低,对大批量数据传输一般采用后两种方式。GPIF方式,称为通用可编程接口方式,在此模式下,FX2的FIFO是由内部的GPIF控制的,FX2利用由软件编程输出读写控制波形读取FIFO标志,控制FIFO的选通,并且对外部设备提供了用户专用接口,可以对许多通用总线接口进行访问,如ASIC,DSP和存储器等。文献利用FX2的GPIF方式构建了LISB数据传输通道。Slave FIFO方式是将FX2的FIFO作为外部控制器(如FPGA或单片机)的从属FIFO,外部控制器可像普通FIFO操作一样对FX2的FIFO进行读写,而不考虑该包的大小,传输速率可明显提高,文中FX2在Slave FIFO模式下工作。FX2有3种封装形式:128引脚、100引脚和56引脚,这里选用FX2的56引脚的封装形式。

  FX2芯片在使用时必须先下载固件程序,固件程序主要负责完成芯片初始化,对芯片进行必要的配置、处理设备请求、进行数据传输等相应工作。用户通过编写适当的固件程序完成对FX2的设置。Cypress公司提供了一个固件程序开发框架可以大大简化FX2芯片固件程序的开发难度。通过编写用户初始化函数TD_Init(),用户可以规定各种端点资源的使用以及配置外围接口的输入/输出等。其主要配置语句如下:


  固件程序将FX2配置为异步Slave FIFl0模式,总线宽度8位,在4个端点中,EP4和:EP8未被使用,EP2和EP6的配置如表1所示。由于采用自动输入/输出模式,主机和单片机通过旁路FX2的CPU直接连接,所有数据被直接通过FIFO管道提交,不需固件程序干预。在FX2的slave FIF0模式下,FIFOADR[1:0]引脚作为地址线选择某个端点,SLCS相当于片选信号,SLwR(写)与单片机的wR引脚相连,SLRD(读)和SLOE(输出使能)与单片机的RD引脚相连。单片机通过访问地址为0x00的外部存储器的方式就可以实现对EP2的访问,同理可访问EP6端点。


  单片机通过FX2的3个标志引脚(FALGA,FLAGB,FLAGC)来全面掌握FX2的各端点FIFO的状况。FLAGA定义为输入端点EP6的满标志,当输入数据满时该引脚为低电平;FLAGB被定义为输出端点EP2的空标志,当主机传来的数据被读空时该引脚为低电平;FLAGC定义为当EP2端点整个FIF0中的字节数大于等于1时为低电平。假设当前主机没有传送命令,则FLAGC为高电平,当主机发送命令后,EP2的字节数大于等于1,则FLAGC变为低电平。这样在FALGC引脚上产生了一个下降沿,将此引脚与单片机的INTO引脚相连,则当主机发送命令后单片机会触发INT0中断,在INTO的中断处理程序中单片机读取并执行传来的命令。

  2 系统软件设计

  2.1 驱动程序

  在EZ—USB FX2开发包中,提供有通用的驱动程序包,对该程序包稍加修改就可生成一个具有下载固件并完成设备重枚举功能的设备驱动程序。文献对驱动程序的开发步骤有详细的记述,这里采用的就是这个通用驱动程序(GPD)。

  2.2 主机应用程序

  主机应用程序主要实现向设备发送命令数据包,接收设备传送的数据并进行显示,主机应用程序通过通用驱动程序来完成对设备的控制和通信。应用程序采用VC6.O编写,与设备通信时,首先通过调用win32函数CreateFile()来取得访问设备驱动程序的句柄。该函数的语句实例如下:


  用户得到设备句柄后,就可以使用win32函数DevicelontroI()来向设备提交相应的IOCTL控制码,进行读写和控制操作,完成相应操作后应用程序通过Win32函数CloseHandle()关闭设备句柄结束1次操作。以下是部分操作的代码实例:

[1] [2]  下一页

,基于单片机和USB接口的数据采集系统设计