基于CH371的USB接口虚拟示波器设计

发布者:boyhxz最新更新时间:2016-07-15 来源: eefocus关键字:CH371  USB接口  虚拟示波器 手机看文章 扫描二维码
随时随地手机看文章
    一、引言

    对于学校教学实验以及某些特定需求来说,目前市场上的模拟及数字示波器也许并不适用,价格高昂、体积较大且很多专业功能并不实用。而现在电脑的普及程度也达到了相当的规模,利用电脑以及附加的数采模块实现一个灵活便捷的虚拟示波器能够满足大多数的工作、学习和开发需要,并且可以通过较低代价的硬件和软件升级实现相当复杂的信号处理功能,能够以较低的成本、较小的体积实现配置灵活的智能仪器组合;完全可以与便携电脑结合,构成便携式检测维修工作站。目前已经有计算机并口通信的数据采集器,但是USB的应用日趋广泛和深入,如果将USB功能融合在里面则可以实现更高的数据传输率、更方便的使用方式,更为优越的体现出虚拟仪器的性能。

    二、硬件设计

    此虚拟示波器的数据采集器由以下功能模块组成:前端信号变换模块、高速模数转换模块、高速数据缓冲模块、单片机控制模块、USB接口模块和电源模块。前端信号变换、高速数据采集有成熟的方案并且可根据需要的指标,譬如采样率、量程控制、采样深度等进行设计,我们这里主要讨论USB接口部分的开发。

    USB接口的开发以往都是一个令人头痛的问题,尽管很多设计者向往USB接口高速传输、自主供电、即插即用的优点,但较难逾越它的协议固件开发和驱动程序开发的障碍。在这个方案里,笔者选用了一款不需要开发协议固件和驱动程序的USB总线接口芯片。

    南京沁恒公司(www.winchiphead.com)推出的CH371是一个USB总线的通用接口芯片,它利用硬件逻辑屏蔽了USB 通讯中的所有协议,在计算机应用层与本地端控制器之间提供端对端的连接。基于CH371,设计者不需要了解任何USB协议、固件程序以及驱动程序,可以轻松地将原来的并口、串口的产品升级到USB接口,以较低的风险和成本享用USB接口带来的优越性。

    使用时在本地端,CH371具有8位数据总线和读、写、片选控制线以及中断输出,就像操作一般外设芯片一样方便地挂接到DSP、MCU等控制器的系统总线上;在计算机端,CH371的配套软件包括通用驱动程序以及应用软件包,提供了简洁易用的操作接口,与本地端的单片机通讯就如同读写硬盘中的文件一样简单,开发者可以使用VB、VC、C++Builder等高级语言进行开发。一般情况下,基于CH371设计USB产品不必考虑USB通讯协议、固件程序、驱动程序、配置过程、底层数据传输过程。设计者所要做的工作与设计并口、串口的产品一样,包括两件事:一是从计算机的应用层发出数据传输请求并接收应答;二是当USB 产品的控制器被通知有数据传输请求时,作出应答。

    同时,CH371在提供了透明的USB协议的基础上还提供了I2C器件的直接管理、16个地址的直接读写以及复位、看门狗等功能,本地端甚至不使用单片机就可完成简单的控制功能,因此具有较强的功能适应性,能够满足不同场合的需要,有效的降低系统成本。

    在本系统中使用的是SOP28封装的产品,他的管脚定义如下表:

    

    根据不同的工作方式,芯片的接口类型可以有以下几种:被动并行接口、I2C主接口、主控方式接口。其中被动并行接口是最常用的方式,它提供单片机与计算机的连接,CH371作为单片机的一个被动外设;I2C主接口是CH371在计算机端程序的控制下不经过单片机直接读写一个EEPROM器件(譬如24C04等),经常用于USB外设的产品信息纪录;主控方式接口是不使用单片机,由计算机端程序直接控制CH371提供的16个地址的8位数据读写或者是十几根IO口线,此方式主要用于完成相对简单的外部控制任务。这几种接口方式并非完全对立的,可以根据需要灵活配置。在此虚拟示波器中则将其使用为单片机的一个外设器件,同时将A3~A0用于主控方式由计算机控制四只LED。

    单片机对于CH371的控制依靠对其内部的16个寄存器的操作来实现。这16个寄存器的地址有两种定义方式。一种是上电复位后默认为直接地址方式,A3~A0四个管脚为寄存器地址,这种方式较为简单,但是需要使用单片机较多的IO口资源;另一种是当CH371检测到ALE脚上的上升沿信号后,切换到复用地址方式,寄存器地址由数据总线的D3~D0来控制,根据ALE的跳变来判断是寄存器操作还是数据读写。在此设计中由于大容量数据缓冲需要使用到74373作为地址锁存,所以即使使用直接地址方式也无需多占用单片机资源,但是为了将A3~A0节省出来驱动LED所以选用复用地址方式。

    根据系统的要求我们设计硬件如下。

    USB接口提供数据交换及电源供应(经适当变换后供高速AD使用),CH371在12M晶振下倍频工作,提供与单片机接口的同时提供看门狗复位输出功能,I2C主控功能没有使用,A3~A0可以由计算控制驱动4只LED作为工作显示信号。单片机89C52的P1口组用于控制数据采集模块,包括量程转换控制、AD触发信号、采集数据溢出信号等;高速缓存62256通过低功耗的CPLD控制存放高速AD采集的结果,单片机定时将其中数据读出经CH371传送到计算机的数据显示和分析软件,实现虚拟示波器功能。单片机、CH371和RAM部分原理图如下:

图三 单片机、CH371和RAM部分原理图

    三、软件设计

    单片机端软件:

    单片机端软件主要完成数据采集控制、数据报告这两个功能。其中数据采集控制根据计算机端软件设定的增益、时基、触发等参数控制数据采集模块,这里面要用到计算机向单片机发送少量的控制信息;数据报告功能则需要单片机将缓存中的一个采集周期的所有数据传送给计算机端软件,这属于大批量数据的传输。我们把介绍的重点放在单片机与计算机的通信上面。

    单片机与计算机通信是通过对CH371的寄存器操作实现的,有关其寄存器定义的具体情况请参考数据手册。

    在应用中需要注意的是,CH371提供的单片机接收缓冲区为8个字节,多于8个字节的计算机下传数据被切分;而单片机的发送缓冲区也是8个字节,多于8个字节的上传数据需要分多次上传。另外,CH371的中断包括了上传及接受成功,中断发生后具体的情况需要由传输状态寄存器来辨别;同时其中断电平是单稳态的,一个事件发生后中断信号跳变,但仅维持一个短暂的脉冲便恢复,这是为了配合不同速度的处理器而作的处理。

    单片机与计算机的USB通信主要功能子程序示例如下:(请在使用时加入CH371的相应寄存器的地址定义)
file://********** CH371初始化程序******************************
void ch371_init()   
{    
   CH371_INT_SET=0;  file://CH371中断数据设定寄存器的地址偏移    
   CH371_LENGTH=0X0F;  file://置上传数据长度寄存器为15,表示暂时没有数据上传
   save_length=0;   file://保存下传数据长度
   IT0=1;      file://外部信号为下降沿触发
   IE0=0;      file://清中断标志
   PX0=1;      file://置高优先级
   EX0=1;      file://允许中断
}
file://***********上传数据子程序********************************
void ch371_upload(unsigned char len) file://参数传入数据长度

   unsigned char i;
   unsigned char *up_buf;
   unsigned char *ch371_buf;
   if(len!=0)
{
     up_buf=&ret_buffer;    file://指向数据的地址                   
     ch371_buf=&CH371_BUFFER;  file://指向数据缓冲区
     for(i=0;i{
       *ch371_buf=*up_buf;   file://写入上传数据缓冲区
       ch371_buf++;       up_buf++;
     }
   }
   CH371_LENGTH=len;     file://写入本次数据的长度
}
file://********中断子程序  使用中断0 寄存器组2********
void ch371_inter() interrupt 0 using 2{
   unsigned char *down_buf;
   unsigned char *ch371_buf;
   unsigned char i;
   IE0=0;         file://清中断标志
   if( (CH371_STATUS&0x01) ==0 ){ 
file://读取状态信息寄存器,判断数据传输状态
    save_length=CH371_LENGTH;  file://保持下传数据长度
    down_buf=&save_buffer;
    ch371_buf=&CH371_BUFFER;
    for(i=0;ifile://判断下传数据长度并处理

      *down_buf=*ch371_buf;   file://读取一字节的下传数据
      down_buf++;      ch371_buf++;
    }
  }
  else CH371_LENGTH=0x0f;   file://置上传数据长度寄存器为15
}

    计算机端软件:

    计算机端软件主要功能是模拟一个示波器的界面,实现数据的显示以及满足不同需要的分析功能,同时完成对数据采集硬件的参数设定。在这个设计中已经实现了基本的功能,虚拟示波器的界面如下图。进一步开发后可以实现量程的自动转换、数据的深度分析(譬如波形测量、频谱分析等),甚至可以结合硬件的升级实现波形发生器、逻辑分析仪、扫频仪、网络分析仪等功能。

图四 虚拟仪器计算机软件面板图

    计算机端有关USB通信的开发不需要了解USB底层驱动,并且芯片生产商已经以动态链接库的形式封装好了面向功能应用的API函数,开发者可以在多种高级语言中调用,功能强大且灵活方便。CH371动态链接库提供的API函数主要包括:设备管理API、数据传输API、中断查询API、I2C 操作API和直接控制API。

    其中设备管理API对于一般产品开发不需要用到;数据传输API是最重要最常用的一组函数,他提供了多种数据传输模式;中断查询API一般用于USB设备使用到中断传输的场合,我们这里没有用到;I2C 操作API用于对CH371控制的I2C器件进行读写,一般用于存放产品信息,我们这里也没有用到;直接控制API是用于CH371直接输入输出信号,包括设置、输入和输出三部分组成,我们使用这一组API实现对LED进行控制。
在实际应用中笔者使用VB6作为计算机端应用软件的开发平台,首先要将沁恒公司提供的驱动程序、动态链接库拷贝到计算机中,再将动态链接库的访问入口及函数定义入口添加至VB6项目中,就是将提供的VB6实例程序中的module功能模块添加到自己的工程项目下即可。此时对USB设备的通信编程就几乎和访问本地硬盘中的文件差不多了,具体差别可以通过分析实例程序的句法来解决。下面给出计算机接收与发送数据的相关程序。

Option  Explicit         ' 变量定义
Dim  myReq  As  DEMO_REQ
Dim  mOpen  As  Integer

Private  Sub  Form_Load( )                 ' 窗口加载事件
    Dim  mLength  As  Long
    mIndex = 0
    mOpen = CH371OpenDevice(mIndex)      ' 窗体加载时打开设备
    If  mOpen = -1 Then
       MsgBox "无法打开CH371设备"      ' 加载失败提示      
End If

myReq.mCommand = &HFF        ' 用户定义命令
myReq.mBuffer(0) = &H11              ' 用户定义数据
myReq.mBuffer(1) = &H22              ' 用户定义数据
mLength = Len(myReq)
CH371WriteData(mIndex, myReq, mLength)  ' 通过CH371发送命令数据
……
CH371ReadData(mIndex, myReq, mLength)  ' 通过CH371接收应答数据
……
End  Sub

四、结束语

    使用CH371设计的USB接口的虚拟示波器目前已完成基本功能的验证,正在后期完善中,而且可以推出面向多种应用的不同级别的系列产品。实践表明其技术性能良好,功能强大、体积小巧、使用简便、价格低廉,是广大电子爱好者、开发者的有力助手。

关键字:CH371  USB接口  虚拟示波器 引用地址:基于CH371的USB接口虚拟示波器设计

上一篇:USB接口芯片FT245AM的原理
下一篇:GPIB接口专用芯片TNT4882

推荐阅读最新更新时间:2024-05-03 00:31

基于USB接口电路的远程电压监测系统
0 引言 电力是国家的重要能源,如果电网电压不稳定,会对工农业生产、居民生活造成很大影响,为此电业部门要求定量监测电网电压。电业部门的管理形式为市供电公司管理下属各级变电站,由于各变电站之间的距离较远,组建专用的计算机网络需要较多的资金,设备维护也有一定的困难。针对这种情况,我们用较低的成本开发出了基于USB接口电路的远程电压监测系统。从目前使用上看,设备运行稳定,维护方便。 1 系统原理 目前各级变电站配出的电压有10 kV,4.6 kV,380 V等多种形式。这些不同的电压通过变压在变电站以220 V出现,供变电站来监测配电电压的变化。我们通过这些220 V低电压来监测各种高电压。硬件电路如图1所示。变压器T将220
[测试测量]
基于<font color='red'>USB接口</font>电路的远程电压监测系统
一种新颖的简易多通道虚拟示波器系统电路设计
  本文通过LabVIEW虚拟实验软件平台设计了一种利用ATmega16单片机进行数据采集,通过RS232串行通信将数据传送给PC的简易虚拟示波器。用户可以在开发平台上对数据采集参数进行设置和调整以及对波形数据存储。系统的创新点是摆脱了传统开发平台的限制,具有多通道、方便、灵活等特点,在数据采集、传感器监测等领域有重要应用。虚拟仪器是基于PC技术发展起来的,所以完全 继承 了以现成即用的PC技术为主导的最新商业技术的优点,包括功能超卓的处理器和文件I/O,使在数据导入磁盘的同时就能实时地进行复杂的分析。为了实时、准确地测量输入波形的参数,本文采用自带8路10位ADC的单片机ATmega16,结合简单的外围电路,即可将输入波形实时传送
[测试测量]
一种新颖的简易多通道<font color='red'>虚拟示波器</font>系统电路设计
基于USB接口的电化学沉积仪器数据采集系统的研究
  0 引 言   智能仪器自动化程度的提高为科学研究提供了十分方便的实验手段。电化学沉积仪器是由PC机控制的全自动的恒电位仪、恒电流仪及恒电位脉冲试验仪的集合体。相对于手动的设备而言更为先进,功能更强大,试验精度更高。具体工作时,仪器按照用户设定的实验类型执行具体的试验,同时采集系统实时的电压和电流信号。采集到的信号,由仪器内置的微处理器解析后,转换为数字信号反馈到上位机(PC机)。上位机的仪器数据处理软件,具有强大的解析功能,可以对原始数据进行各种分析,得到研究体系的详细信息。   在PC机控制的系统中,常采用通用串行总线(USB)进行通信。因为基于USB总线的数据采集系统具有安装方便、可靠性高、数据不易丢失、抗干扰能力强
[测试测量]
基于<font color='red'>USB接口</font>的电化学沉积仪器数据采集系统的研究
Diodes负载开关妥善保护USB接口
Diodes公司 (Diodes Incorporated) 推出单通道负载开关AP22802,能够全面保护相连部件免受浪涌及短路的风险。这款高度集成的器件为一般USB和其它热插拔应用作出优化,并采用了SOT25小型封装,占位面积仅9mm2。 AP22802的输入电压范围为2.7V到5.5V,并设定出2.7A的典型电流限制以防过载。该器件的响应时间快速,可即时把箝位输出电流调整到故障检测的安全水平。这款负载开关为电路设计人员提供低电平有效及高电平有效的使能输入选择,从而增加灵活性。 新器件备有欠压闭锁功能,确保内部电源开关即使在使能的情况下也可维持关闭状态,直到输入功率电平最少达到2V,有助于设计单通道热插入
[嵌入式]
Diodes负载开关妥善保护<font color='red'>USB接口</font>
在虚拟仪器中的基于USB 2.0高速数据采集卡
  要USB 2.0的高速数据采集卡的硬件组成和软件设计。克服了传统数据采集卡的局限,使得虚拟仪器的使用越来越快捷方便。   USB2.0高速数据采集     USB2.0的高速数据采集卡在虚拟仪器中的应用。     1 虚拟仪器的硬件系统   2 USB接口示意图       3 应用程序软件流程图1所示。   A/D,是虚拟仪器硬件设备中的关键环节。下位机通过特定接口接受来自上位机的指令并向上位机提供自身所处的状态:在收到采集指令后,对传感器发送的模拟电信号进行采样以转化为数字信号,然后将数字信号通过接口传给上位机。   2个通道的传感器信号进行转换,其最高采样效率为,采样转换精度为位,系统采用了
[工业控制]
在虚拟仪器中的基于USB 2.0高速数据采集卡
基于USB接口虚拟示波器的开发实现
1 系统总体设计   USB规范中将USB分为5个部分:控制器、控制器驱动程序、USB芯片驱动程序、USB设备以及针对不同USB设备的客户驱动程序。根据设备对系统资源需求的不同,在USB规范中规定了四种不同的数据传输方式:等时传输方式(isochronous)、中断传输方式(interrupt)、控制传输方式(control)和批(bulk)传输方式。这些传输方式各有特点,分别用于不同的场所。USB需要主机硬件、操作系统和外设三个方面的支持才能工作。目前,主板一般都采用支持USB功能的控制芯片组,而且也安装了USB接口插座。根据USB规范,整个虚拟示波器系统的设计分为主机软件部分和外插硬件部分(见图1)。 本虚拟示波器的开发
[测试测量]
基于<font color='red'>USB接口</font>的<font color='red'>虚拟示波器</font>的开发实现
基于DSP的USB接口设计
1 引言   通过DSP 处理的数据往往要传输给PC 机进行存储和再处理,那么就必须解决DSP 与 PC 机之间的高速通信问题。本设计方案以德州仪器(TI)的C5000 系列DSP 芯片TMS320VC5416为微处理器,利用Cypress公司提供的USB2.0接口芯片CY7C68001 实现了USB2.0 从机接口设计,从而使PC机与DSP 通过USB2.0 接口实现高速双向地传输数据。   2 TMS320VC5416 与CY7C68001 EZUSBSX2硬件接口设计   系统方案采用PC机作为上位机,负责USB总线上检测到设备接入并进行枚举、识别的过程,并且可以通过在PC机上运行应用程序来控制数据的传输。USB芯片作
[模拟电子]
基于DSP的<font color='red'>USB接口</font>设计
虚拟仪器在USB接口数据处理系统中的应用
  虚拟仪器技术在计算机测控领域得到了快速广泛的推广应用,从简单的仪器控制、数据采集到尖端的测控和工业自动化;从大学实验室到工业现场;从探索研究到技术集成都可以发现了虚拟仪器技术应用的很多领域。国内外相关学者对此做了很多的研究工作。   1 虚拟仪器与图形化编程语言-LabVIEW   虚拟仪器(virtual instrument,VI)是一种基于计算机的仪器,就是在通用计算机上加上软件和硬件,使得使用者在操作这台计算机时,就像是在操作一台他自己设计的专用传统电子仪器。在虚拟仪器系统中,硬件仅仅是为了解决信号的输入输出,软件才是整个仪器系统的关键,任何一个使用者都可以通过修改软件的方法,很方便地增减仪器系统的功能与规模,所以有
[测试测量]
虚拟仪器在<font color='red'>USB接口</font>数据处理系统中的应用
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

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

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