快捷搜索:

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

一、小序

对付黉舍教授教化实验以及某些特定需求来说,今朝市场上的模拟及大概并不适用,价格高昂、体积较大年夜且很多专业功能并不实用。而现在电脑的遍及程度也达到了相称的规模,使用电脑以及附加的数采模块实现一个机动便捷的能够满意大年夜多半的事情、进修和开拓必要,并且可以经由过程较低价值的硬件和软件进级实现相称繁杂的旌旗灯号处置惩罚功能,能够以较低的资源、较小的体积实现设置设置设备摆设摆设机动的智能仪器组合;完全可以与便携电脑结合,构成便携式检测维修事情站。今朝已经有谋略机并口通信的数据采集器,然则USB的利用日趋广泛和深入,假如将USB功能交融在里面则可以实现更高的数据传输率、更方便的应用要领,更为良好的表现出的机能。

二、

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

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接口的虚拟示波器今朝已完成基础功能的验证,正在后期完善中,而且可以推出面向多种利用的不合级其余系列产品。实践注解其技巧机能优越,功能强大年夜、体积小巧、应用简便、价格低廉,是广大年夜电子喜欢者、开拓者的有力助手。

责任编辑:gt

您可能还会对下面的文章感兴趣: