基于单片机和CH371USB接口芯片实现虚拟示波器的设计

发布时间:2023-06-01  

一、引言

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


二、

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

基于单片机和CH371USB接口芯片实现虚拟示波器的设计

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


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


使用时在本地端,CH371具有8位数据总线和读、写、片选控制线以及中断输出,就像操作一般外设芯片一样方便地挂接到、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用于主控方式由计算机控制四只。


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


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    要给LM358加入±12V电压,从“+12V GND -12V”端口加入。具体的电路原理图如图1.16所示: 17.单片机系统 该系统板上的单片机系统把全部的I/O端口资源提供出来,因此,在实际应用......
    原理图怎么生成pcb?(2024-11-15 23:55:03)
    制作: 在反向研发及PCB自主设计过程中,要对各类电子产品电路原理,功能模块特征等等有透彻的了解,要求充分保证PCB原理图制作的准确性、高效......
    浴室自动风扇控制器电路原理图讲解;这种自动浴室风扇控制器电路设计是灯和风扇电机控制,带有延迟关闭。这种自动风扇控制通常用于厕所和浴室。当开关S1关闭时,风扇电机和灯打开。当开关S1打开(关闭)时......
    三相异步电动机正反转控制的原理图;有关三相异步电动机正反转控制的电路原理图,三相异步电动机正反转控制电路的结构组成,包括辅助接点、分流端子、低压跳闸、自动跳闸、自动复位等部件与功能。 三相异步电动机正反转控制的原理图......
    变频器控制电路原理图分析;学习任何技术,第一步必须要吃透原理图,只有彻底理解原理,才能在工作中游刃有余。 今天给大家带来变频器控制电路原理图分析,掌握变频器基础原理知识! 变频器控制电路原理图......
    1.25V的稳压源。当输入到3脚的电压高于或低于1.25V时,芯片会自动调节PWM占空比的减小或增大,以得到稳定的输出。 图2.1 基于MAX1771的Boost电路原理图 LED 的排列方式及LED......
    .原理图设计:原理图设计是硬件电路设计的核心,使用软件工具绘制电路原理图,将电路需求以图形化的形式表达出来。 5.PCB设计:PCB设计是以电路原理图为依据的,得以实现硬件电路的功能,包括pcb结构......
    微波炉工作电路原理图;分享微波炉的工作电路原理图,微波炉的电路组成与工作原理,家用微波炉基本上都采用箱式结构,一种普及型微波炉电路的电路结构与电路原理图。 微波炉工作电路的原理图 微波......
    图1为数字万用表直流电压测量电路原理图,该电路是由电阻分压器所组成的外围电路和基本表构成。把基本量程为200mv的量程扩展为五量程的直流电压挡。图中斜线区是导电橡胶,起连接作用。 图1......
    LM-04YD系列汽车专用语音电路原理图;汽车专用语音电路LM-04YD固化了“倒车,请注意”、“左转弯,请注意”、“右转弯,请注意”、“刹车,请注意”等四句语音,可分别独立触发控制4段语......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>