当前位置:首页 > 单片机 > 单片机
[导读]一、引言对于学校教学实验以及某些特定需求来说,目前市场上的模拟及数字示波器也许并不适用,价格高昂、体积较大且很多专业功能并不实用。而现在电脑的普及程度也达到了相当的规模,利用电脑以及附加的数采模块实现

一、引言

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

二、硬件设计

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

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

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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

随着科技的飞速发展,电子设备间的连接与数据传输变得越来越重要。Type-C转接头作为连接各种设备的桥梁,其性能与标准也不断升级。本文将详细探讨Type-C转接头2.0与3.1之间的区别,帮助读者更好地理解和选择适合自己的...

关键字: 电子设备 数据传输 Type-C

随着科技的不断进步,移动通信技术也迎来了飞速的发展。从最初的2G时代到如今的5G时代,每一次技术的升级都为我们带来了更快捷、更便利的通信体验。作为最新一代的移动通信技术,5G以其超高速率、低时延和大连接数的特点,正逐步改...

关键字: 移动通信 数据传输 5G

随着信息技术的飞速发展,数据通信作为连接世界的桥梁,其重要性日益凸显。为了确保数据通信的高效、稳定和可靠,我们需要关注一系列关键的技术指标。本文将深入解析数据通信的主要技术指标,并探讨其前沿发展。

关键字: 数据通信 数据传输

船载通信系统是现代船舶中不可或缺的重要组成部分,它为船舶提供了与外界通信和数据传输的渠道。船载通信系统行业设计方案涵盖了多个方面,包括系统架构、硬件设备、软件系统、通信协议等。本文将详细介绍船载通信系统的行业设计方案。

关键字: 船载通信 数据传输 通信协议

12月22日,由广州日报主办的2023年高质量发展年度峰会在广州举行。OPPO凭借持续创新和技术积累,入选2023年广东创新TOP100榜10强,展现出在科技创新领域的领先实力。

关键字: 智能手机 数据传输

短距离无线通信技术是一种利用无线电波进行数据传输的技术,适用于距离较短、对传输速率要求不高的场景。近年来,随着物联网、智能家居等技术的不断发展,短距离无线通信技术也得到了广泛应用。本文将对常见的短距离无线通信技术进行介绍...

关键字: 无线通信 数据传输 物联网

数字通信是指以数字信号作为载体来传输消息,或用数字信号对载波进行数字调制后再传输的通信方式。它可传输电报、数字数据等数字信号,也可传输经过数字化处理的语声和图像等模拟信号。在数字通信中,信号通常是经过抽样、量化和编码后形...

关键字: 数字通信 数据传输

通信模块的作用是实现数据传输和通信。通信模块可以将数据从一台设备传输到另一台设备,或者在一个设备内部的不同部件之间进行传输。通信模块的应用非常广泛,包括工业自动化、电力系统、安防监控、智能家居、医疗设备、交通工具等领域。

关键字: 通信模块 数据传输

串口通信,也称为串行通信,是一种数据传输方式,它按照二进制位(bit)顺序进行数据传输。在串口通信中,数据从一个设备(发送器)的串口发送到另一个设备(接收器)的串口,这两个设备通过共享的通信通道进行通信。

关键字: 串口通信 数据传输

日前,智慧芽发布《2023年度中国科创力坐标报告》和《2023年度全球科创力坐标》,OPPO凭借持续创新和技术积累,入选2023年全球科创领袖TOP100、中国科创领袖TOP100榜单,展现出在科技创新领域的领先实力。

关键字: OPPO 数据传输 中国科创领袖TOP100
关闭
关闭