基于Android的双通道虚拟数字存储示波器设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于Android的双通道虚拟数字存储示波器设计
刘海成
【摘要】基于Android移动平台、蓝牙接口和数据采集前端电路实现虚拟数字存储示波器,其主要特点是在FPGA的控制下,通过双路程控参数通道实现高速采集,并基于嵌入式处理器与虚拟仪器app互联,在Android平台上实现虚拟数字存储示波器应用.整个系统具有虚拟仪器特点的同时,还具有Android的移动互联特性,为移动互联仪器应用提供可能.
【期刊名称】《黑龙江工程学院学报(自然科学版)》
【年(卷),期】2017(031)004
【总页数】4页(P33-36)
【关键词】虚拟示波器;Android;蓝牙;嵌入式;FPGA
【作者】刘海成
【作者单位】黑龙江工程学院电气与信息工程学院,黑龙江哈尔滨150050
【正文语种】中文
【中图分类】TM131.5
仪器仪表作为信号测试和计量设备广泛应用于生产、生活的各个领域。
相比于传统台式仪器,“软件就是仪器”作为核心理念的虚拟仪器展现出了巨大的生命力[1-2]。
目前,基于Android的智能移动终端已经完全融入每个人的生活,因此,基于智能移动终端的虚拟仪器是重要的发展方向。
本文研究基于Android平台实现双通道虚拟存储示波器的系统构架和通信接口等
本文给出的基于Android平台实现双通道虚拟存储示波器的系统构架和通信接口如图1所示。
其中,由输入模拟调理电路、高速A/D转换器、高速采集控制逻辑及缓存电路,以及嵌入式处理器构成时域信号检测的高速数据采集电路[3-4];由嵌入式处理器和蓝牙串口构成与Android终端的通信接口电路;以及Android终端运行数字存储示波器的App。
信号采集的重要基础是首先要建立一条可靠的信号输入通道,以保证足够的信号带宽和幅度范围。
双路信号的每个输入通道对称模拟调理电路,包括输入保护电路、输入阻抗匹配电路、程控增益等,用以防止信号出现振铃等畸变现象。
本设计前端采用1 MΩ的输入阻抗匹配网络,以实现对信号不失真的接收,保证输入信号
±20 V的幅度范围和20 MHz的模拟带宽要求,要有衰减和带宽调整电路,图2为信号1/10衰减的模拟调理电路。
本设计采用专用的程控增益芯片AD603对信号进行线性放大或衰减,通过D/A转换器进行增益数控调整。
高速度的A/D转换与高速度的缓存器是实现高速信号采集系统的重点[4]。
对于宽带信号进行分析和测试时,对数据采集电路有两个要求:一方面必需使用高速的A/D转换器,使其满足时域采样定理;再者,需要有大容量且高速的数据缓冲系统。
本文采用內建采样保持器的100 Msps双8位高速A/D转换器芯片AD9288进行高速A/D转换采集, SRAM作为高速缓冲器,基于FPGA实现A/D转换器和SRAM的桥接接口,以及嵌入式处理与SRAM的接口[5-8],如图3所示。
另外,示波器还有一个重要技术指标,那就是触发的设置和实现。
本设计采用数字触发的方式实现,既A/D转换的结果作为FPGA内部触发逻辑的输入,当满足触发条件时标记时间基点。
数字触发可以实现多种触发方式,比模拟比较器的硬件触发具有灵活和精准等优势[9-11]。
嵌入式处理器的主要职责之一是操控FPGA,表现在两个方面:一方面是能使FPGA 控制A/D转换器进行数据采集,包括数字触发和进行模拟增益调整等;另一方面
是通过FPGA桥接SRAM,将SRAM中的数据读回 [12-15]。
嵌入式处理器的第
二方面职责是与Android端的app配合,按App端的命令调整时基(时基将发生给FPGA,FPGA据此调整采样频率)、使能通道和上传数据给app等。
嵌入式处
理器的程序流程如图4所示。
Android端的App主要包括三大部分:其一是工作参数设置界面,包括对时基、波形幅值和触发方式等一些参数的设置;另一部分是与嵌入式处理器之间的通信过程;最后对接收到的数据进行处理后显示出波形。
参数设置界面的设计为隐藏的拉窗式菜单结构,便于自动隐藏以提供更大的波形显示界面,通过拉窗菜单进行参数设置的流程如图5所示。
当发生屏幕触摸事件时,系统会回调OnTouch()函数对触摸事件进行处理,进入OnTouch()函数后首先要对触摸的坐标进行判断,如果触摸的位置处于设置区域则隐藏或显示设置菜单,设置完成后通过蓝牙发送给嵌入式处理器。
当然,在使用蓝牙通信之前要进行蓝牙配对并建立连接,建立连接的流程如图6所示。
Android端接收采集的数据流有三种方法,分别是:byte InputStream.read()、int InputStream.read(byte[] buf)和int InputStream. read(buffer, offset, length)。
这三个方法分别是从输入流中读取一个字节的数据、从输入流中读取多
个数据,并将这些读到的数据存放到一个byte类型的数组中,第三个方法就是第一个方法的多次循环。
这里有两个问题要注意:
第一,byte类型的数据是有符号的,与A/D转换的无符号类型发生冲突。
为此建立一个int类型的数组来存放接收到的正确数据。
第二,输入流的完整性控制,防止读取到不完整的数据个数,使得后续绘制波形不完整。
本文采用的方法是InputStream.available(),这个方法将返回输入流中的
字节数,具体如下
while(count==0)
{
count=is.available();
}
byte[] buffer = new byte[1024];
read_count = 0;
while(read_count<count)
{
read_count+=is.read(buffer,read_count,count.read_count);
}
当成功读取一次数据后,app通知嵌入式处理器再次发送数据,这样做的好处是不会过多地浪费数据流的空间,换句话说就是软件尽量少的占用内存。
波形绘制部分是对接收到的数据进行插值或抽取计算,并绘制连续的曲线,这可以通过一个继承于View的类来完成,通过重写View的onDraw()函数完成对波形的绘制。
差值采用奈奎斯特内插。
首先定义两个足够大的数组用来作为两路通道的显示缓存,在绘制波形时,AndroidAPI提供了两个可供选择的方法:Canvas.drawLine()和Canvas.drawPoint(),在一般情况下使用这两个函数的任意一个都可以很好地完成绘制波形的工作,但是如果在显示的方波的情况下,Canvas.drawPoint()只能画出横向的线而不能自己补全纵向的线,所以本设计中使用Canvas.drawLine()方法绘制波形。
并基于Android提供的两个更新UI的方法postInvalidate()和Invalidate()保证显示的实时性。
显示波形如图7所示。
本文所设计的基于Android的虚拟仪器架构,使用蓝牙串口作为数据链路,充分利用了Android设备的硬件资源,实现了数字存储示波器。
该设计在具备虚拟仪器的特征基础上体现了移动互联仪器的特点,为远程仪器应用等提供新的方案。
【相关文献】
[1] 孙延祚.测量仪器仪表的重要性及我国的现状和发展对策[J].中国计量,2009(11):57-59.
[2] 刘洋.虚拟仪器技术及其发展趋势[J].仪表技术,2004(5):61.63.
[3] 刘海成.基于虚拟仪器技术的信号测试与分析系统设计[D].哈尔滨:哈尔滨工业大学,2012.
[4] 解文涛.基于PCI接口的高速A/D采集电路设计[J].航空计算技术,2010(6):113-116.
[5] 秦进平,刘海成.高速信号采集与分析系统硬件架构的研究[J].实验技术与管理,2010,
27(10):80-83.
[6] 徐顺刚,朱仁江.单片机系统中高速数据采集的实现[J].现代电子技术,2003(11):72.
[7] 代芬,张承学,刘延华.CPLD在高速数据采集系统中的应用[J].电子技术应用,2003(2):75-77.
[8] 樊凡,阔永红,陈健.双口RAM CY7C026在高速数据采集系统中的应用[J].今日电子,2004(6):58-59.
[9] 万军,何宝祥,储开斌,等.基于CPLD与单片机的高速数据采集系统[J].微计算机信息,2009,25(11):225.
[10] 吕洁,莫毅群,罗伟雄.200MHz实时采样系统的设计与实现[J].电讯技术,2000(2):16-19.
[11] 翟中.多通道数据采集系统的系统结构研究[J].计算机工程与设计,2005(6):20-24.
[12] 何浩.多通道同步高速数据采集系统研制[J].核电子学与探测技术,2003,40(7):30-3l.
[13] 朱璨.2GSPSA/D转换器中时钟电路仿真分析及版图设计[D].成都:电子科技大学,2013.
[14] 姜雷,周华良.一种新型基于高速串行通信的多通道同步采样技术[J].电力系统自动化,2012(9):82-85.
[15] 黄志文,扈晓兰.基于AD9224及FPGA的高速数据采集系统设计[J] .工业控制计算机,2009(8):41-42.。