基于ARM处理器LPC2142的高速数据采集卡设计

发布者:温馨家园最新更新时间:2011-07-11 关键字:ARM处理器  LPC2142  高速数据采集卡 手机看文章 扫描二维码
随时随地手机看文章

  引言

  在瞬态信号测量和图像处理等一些高速、高精度的测量中,往往都需要进行高速数据采集。现在通用的高速数据采集卡(一般多是PCI卡或ISA卡)存在有安装麻烦、价格昂贵、受计算机插槽数量/地址/中断资源的限制、可扩展性差,而且在一些电磁干扰性强的测试现场无法专门对其进行电磁屏蔽,因而会导致采集的数据失真等缺点。为此,本文给出了采用PHILIPS公司的一款LPC2142芯片(基于ARM7内核,内置了宽范围的USB2.0 Device全速串行通信接口)设计的数据采集卡的设计方案,从而有效解决了传统高速数据采集卡的上述缺陷。

  1 基于ARM的数据采集卡系统结构

  该系统主要由双通道模/数转换器AD9238、ARM微控制器LPC2142及FPGA器件EP1C3T100组成,图1所示是其结构框图。AD9238具有A、B两个通道,前端的差分放大器把模拟信号通过放大送入AD9238,由AD9238把模拟信号转换成12的数字信号同时送入FPGA中的FIFO缓存器进行缓存。然后由LabVIEW软件制作的界面便可向LPC2142发送控制指令,LPC2142读取FIFO缓存器中的数据后可通过USB端口发送给主机。而主机也可通过界面菜单选择采样频率、采样的起始点、模拟信号调理及读取精度测频数据等。

基于ARM处理器LPC2142的高速数据采集卡设计

  2 基于ARM的数据采集卡的硬件设计

  2.1 AD9238模数转换芯片

  AD9238是美国模拟器件公司(ADI)推出的快速12位双通道模数转换器。AD9238有3种型号,采样率最高分别可达20 MS/s、40 MS/s和65MS/s。AD9238可提供与单通道A/D转换器同样优异的动态性能,但是比使用2个单通道A/D转换器具有更好的抗串扰性能;AD9238采用单3 V供电(2.7~3.6 V);Rsn=70 dBc;Rsfd=85 dBc;ENOB为11.3 b;差分输入时,具有500 MHz的3 dB带宽;并有片上参考电压和1~2 Vpp的模拟输入范围。

  AD9238的两个通道分别采用一个AD8138做为运放驱动芯片。I/Q两路中频模拟信号分别经过2个AD8138后变为差分信号送给A/D转换器(第2,3,14,15管脚)。

  高速ADC对时钟的占空比很敏感。一般来说需要有50%(±5%)的占空比。AD9238可给每个通道单独提供时钟(管脚CLK_A和CLK_B),当2个通道的采样时钟同频同相时,系统会有比较好的性能,当2个通道小同步时,性能会有所下降。

  本数据采集卡采用40 MHz的AD9238芯片,单双通道选择和转换频率采用软件控制。

  2.2 Cyclone系列FPGA器件

  由于高速数据采集系统的特殊要求,本设计在众多FPGA器件中选择了ALTERA公司生产的Cyclone系列器件。Cyclone系列的高性能和高密度是基于它先进的Stratix的工艺构架,可为高速应用提供非常高的性价比,此外,Cyclone系列器件内部RAM存储器还可以生成FIFO缓存器以便为高速采样提供缓存空间。

  ALTERA公司的Quartus II软件是一款易于使用的综合开发工具,它集成了Altera公司FPGA/CPLD开发流程中所涉及的所有工具和第三方软件接口,其友好界面为设计提供了便利条件。

  在这里,FPGA器件主要用于完成数据缓存、等精度测频、采样频率分频及触发控制等工作。

  2.3 FPGA在触发控制中的应用

  由于此数据采集卡是高速缓存式的,且缓存空间有限,所以不能采用连续式采集方式,而是采用触发式采集方式。为了提高数据采集卡的适用能力,使系统不仅可以采集周期信号,而且要能采集触发信号,还要能手动触发采集,笔者增加了触发点捕捉电路。该电路主要由AD8561电压比较器、FPGA芯片组成,由于AD8561芯片的转换速度很高,故能满足判断速度足够高的要求。可首先把模拟信号送到AD8561比较器的正输入端,负输人端则连接到LPC2142的D/A转换器输出端,LPC2142的D/A转换器输出电压作为AD8561比较器的参考电压,此参考电压可以通过向LPC2142的D/A转换器的寄存器写入不同的值来进行调节。此调节最终可通过LabVIEW制作的界面来控制。当输入信号高于参考电压时,AD8561的TOUT被拉高,TOUT的电平可以通过向AD8561的LATCH端输入高电平来进行锁存。

  在手动采集方式下,TRIEN0为低电平,TRIEN1为高电平,当缓存器为空(即FWr_FUL为高电平)时,可通过LabVIEW制作的界面控制QSTART为高电平,并将FWr_EN拉高以进行数据采集。当缓存器满时,FWr_FUL被拉低,同时FWr_EN被拉低以停止采集。图2所示是本系统的触发控制电路。

基于ARM处理器LPC2142的高速数据采集卡设计

  在输入触发方式下,TRIEN0和QSTART为低,当缓存器为空(即FWr_FUL为高电平)且输入信号高于比较器的参考电压时,TOUT被拉高,同时FWr_EN也被拉高以进行数据采集。而当缓存器满时,FWr_FUL被拉低,FWr_EN也被拉低以停止采集。拉高TRIEN1后可读取缓存数据。

  采集周期信号和输入信号触发方式相似,只是要保持TRIEN1为高电平。而在读取缓存数据时。只要触发信号到来就可进行采集。

  3 基于ARM的高速数据采集卡软件设计

  3.1 基于uC/OS-II的USB驱动编程

  虽然uC/OS-II提供了多任务实时操作系统的内核,但在应用这个操作系统时,用户通常仍然需要自己编写基于uC/OS-II的外围器件驱动程序,以使外围器件能在操作系统的协调下更好的为用户服务。为了使软件可移植性、易维护,笔者编写LPC2142 USB固件时综合考虑了USB协议和LPC2142的USB硬件条件,并把驱动程序分为5层,图3所示是LPC2142的USB固件分层结构图。图中的双向线表示用户软件与USB固件之间存在着数据交换,单向线表示上层软件对下层软件的调用,这样设计,固件结构比较分明。

基于ARM处理器LPC2142的高速数据采集卡设计

[page]

  有了USB驱动程序,用户就可以在此平台上完成用户软件所要实现的任务。用户所要完成的任务如图4所示,图中的单向线表示主任务对读写任务的控制。主任务通过信号量来控制读/写任务的运行状态,从而实现对FIFO缓存器的读和写。双向线则表示各个模块之间存在着数据交换。为了加快大量数据的收发,本程序把LPC2142 USB的逻辑端点1作为控制命令的传输管道,而把端点2作为数据的传输管道。

基于ARM处理器LPC2142的高速数据采集卡设计

  主任务会不断地读取端点1,如接收到PC机发来的读命令,就激活高优先级读任务的就绪信号量,以唤醒读任务并进入读中断服务程序,同时把缓存器数据通过USB总线发给PC机,发送完毕关闭读任务的就绪信号量并同到主循环,以等待PC机发来下一个命令。写任务则与此相似。

  3.2 LabWindows/CVI工具简介

  虚拟测量仪器的关键是要具有易于生成良好操作界面和强大数据处理能力的工具软件。本系统的全部程序是用LabVIEWI开发的。LabVIEW是美国NI公司开发的基于C/C++的、专门用于虚拟仪表及过程控制的可视化编程语言。用Lab-VIEW提供的控制件库(包括开关、旋钮、图表等)可以很容易地设计出符合实际要求、界面新颖美观的操作界面。此外LabVIEW具有很强的数据处理功能,它提供了丰富的库函数以用于数据输入接口、数据处理(FFT等)和图形显示等功能,为开发应用软件带来了极大方便。图5是用LabVIEW开发的系统操作界面。

基于ARM处理器LPC2142的高速数据采集卡设计

  3.3 基于LabWindow/CVI的主体软件设计

  整个主机运用程序包括面板设计、初始化、数据采集、数据处理和结果显示等几部分。

  (1) 面板设计

  主要是提供友好的操作界面,设计要求能符合常规测量仪器的操作习惯。

  (2) 初始化

  完成系统初始化功能,包括复位、送工作方式字、设置程序运行参数等。

  (3) 数据采集

  由于LabVIEW不能直接访问用户自己设计的硬件,因此,作为一个开放式开发平台,Lab-VIEW提供了DLL接口,以使用户在LabVIEW平台上能调用其它软件平台编译的模块,并提供对对象连接和嵌入技术(简称OLE)的支持。笔者利用VC++6.0编写了一个DLL文件,并在LabVIEW环境下调用该文件,从而实现了LabVIEW程序与数据采集卡的数据通信。下面是为读写USB设备所创建的DLL编译项目的相关文件:

  DLLBulk.h:声明变量或功能函数的头文件;

  DLLBulk.def:模块定义文件,是由若干个描述DLL模块参数的语句组成的文本文件;

  DLLBulk.cpp:该文件为DLL主要代码文件;

  对DLLBulk.dsw下的各个文件进行编译之后,即可在菜单栏中选择Build->Build DLLBulk.dll以生成可以被LabVIEW调用的DLL文件。

  (4) 数据处理及显示

  将采集并保存在内存中的采样数据进行各种处理以用于不同测量目的。包括信号波形实时显示、自动测量信号幅度和时间、图形存盘、删除图形及回放等。限于篇幅,程序清单此处略。

  4 结束语

  本文给出的整个虚拟测量系统完全可在人机交互操作下运行,并可随时更改测量参数及进行各种信号处理。系统各项指标如下:

  (1) 最高采样率40 MHz,并可按1/2、1/4、1/8、…、1/128程控分频采样,双路模拟输入;ADC精度为12 bit;模拟输入范围为0~2 V;在板数据缓存4 K字节/路,传输方式为块传输。

  (2) 系统可对信号波形进行实时、最大值、最小值、或峰峰值显示。

  (3) 系统可提供显示图形的存盘、回放、删除图形文件等处理功能。

 

关键字:ARM处理器  LPC2142  高速数据采集卡 引用地址:基于ARM处理器LPC2142的高速数据采集卡设计

上一篇:基于ARM微控制器LPC2138的分布式系统设计
下一篇:基于ARM7TDMI-S微处理器LPC2142的热敏电阻温度计的设计

推荐阅读最新更新时间:2024-03-16 12:38

ARM处理器体系结构简要总结
  搞arm两个月了,有点收获,就谈它了。本文主要介绍ARM7系列处理器。呵呵,不是相关专业可能有很多人不知道arm是个什么东西吧,我现在简要介绍一下各种处理器分类,目前我们的处理器阵营中分为CISC和RISC两大系列,CISC是复杂指令集处理器,这种处理器每条指令可以执行比较多的复杂操作,而且指令长度不定,我知道的有X86处理器是CISC处理器,目前intel和amd出的处理器主要都是x86处理器,intel的x86从8086开始到80186,283,386,486,Pemtium,pentium pro,pentium 2,pentium 3,pentium 4,扣肉2,四核志强等,还有赛扬,pentium M,pentium
[单片机]
三星ARM处理器S3C4510B的HDLC通道使用及编程
摘要 三星16/32位ARM处理器S3C4510B是目前在国内应用非常广泛的一种性价比很高的ARM处理器,本文在介绍S3C4510B中HDLC通道结构特点的基础上,详细说明了4510中HDLC通道在DMA收发方式下的工作过程,使用方法和编程中的一些注意事项。 1:S3C4510B简介 S3C4510B(以下简称4510)是韩国三星公司开发的一款基于ARM7TDMI架构的16/32位高性能微处理器。具用丰富的外围接口,如以太网,HDLC等,可灵活配置,适用于多种应用。4510具有以下性能特点: ◆ 8K字节的内部CACHE,也可用作内部SRAM ◆ 两线IIC接口,作为IIC主器件使用 ◆ 以太网控制
[嵌入式]
嵌入式Linux下ARM处理器与DSP的数据通信
摘要:本文通过一个开发实例详细说明如何通过DSP的HPI接口与运行Linux操作系统的ARM架构处理器进行数据通信。给出接口部分的实际电路和ARM-Linux下驱动程序的开发过程。 关键词:设备驱动程序 嵌入式Linux HPI ARM DSP 1 引言 基于ARM核心处理器的嵌入式系统以其自身资源丰富、功耗低、价格低廉、支持厂商众多的缘故,越来越多地应用在各种需要复杂控制和通信功能的嵌入式系统中。 内核源码开放的Linux与ARM体系处理器相结合,可以发挥Linux系统支持各种协议及存在多进程调度机制的优点,从而使开发周期缩短,扩展性增强。作为数字处理专用电路,DSP的数字信号处理能力十分强大,但对诸如任务管理、通信、
[工业控制]
ARM处理器的SWI异常中断响应过程
通过SWI异常中断指令,在用户模式下应用程序可以调用系统模式下的代码,在操作系统中表现为系统调用, 那这个过程又是如何实现的呢?带着疑问让我们来学习吧! 在SWI指令中包括一个24位的立即数(中断调用号),该立即数指示了用户要请求的特定的调用功能,所以在SWI的异常中断中要读取这个中断调用号,然后根据中断号,来调用相应的处理程序。这个过程可以分两个步骤: 1.SWI异常中断处理程序 由于是在底层操作所以这个异常中断处理程序得用汇编语言编写,描述如下: area top_swi code readonly export swi_headler swi_headler stmfd sp!, {r0-r12, lr}
[单片机]
ARM处理器模式及寄存器
一、ARM处理器模式: ARM微处理器支持7种运行模式,分别为: 用户模式(usr): ARM处理器正常的程序执行状态。 快速中断模式(fiq):用于高速数据传输或通道处理。 外部中断模式(irq):用于通用的中断处理。 管理模式(svc): 操作系统使用的保护模式。软中断和复位 数据访问中止模式(abt): 当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。 系统模式(sys): 运行具有特权的操作系统任务。 未定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件协处理器
[单片机]
<font color='red'>ARM处理器</font>模式及寄存器
跟我写ARM处理器之二:主体结构的确定
好了,上一节定义了端口,基本功能大慨大家已经了然于胸了,现在来确定一下主体结构。我举几个指令执行的例子吧。 第一个是MLA R1,R2,R3,R0。它的意思是:R1=R2*R3 + R0。如果我们要实现这一条指令的话,一个32 32的乘法器需要,一个32+32的加法器是跑不了的。现在定义几个节点:Rm = R2; Rs=R3; sec_operand(第二操作数的意思)=mult_rm_rs (mult_rm_rs的低32位);Rn=R0;则结果等于:Rn + sec_operand。 第二个是:SUB R1,R0, R2, LSL #2。它的意思是:R1=R0 - R2 2。看了我前面文章的知道,这个指令同样可以像前面一样套入:
[单片机]
ARM处理器学习之--GPIO操作篇
在上一篇文章中我们详细讲解了ARM开发环境的搭建,我们选择了X86-linux平台交叉编译ARM程序,交叉编译链选用arm-linux-系列。另外,我们还说明了一些开发需要的基础知识。关于以上这些内容,请参见 ARM芯片学习内容规划及ARM开发环境的搭建 。 我们学习高层应用程序开发的时候,一般第一个程序是经典的”hello world”程序。我们学习嵌入式的开发,主要是根据应用需求,选用合理的电子器件设计硬件电路,然后使用主控芯片控制外设。所以,我们GPIO操作篇的内容选为让电路板上的一个LED灯闪烁。 在讲解实验之前,我还是说明一下。这些基础实验,都是在特定硬件平台上运行的,且现象也是在特定电路板上才能产生的。所以实验中的程序
[单片机]
基于ARM处理器S3C2440的VGA显示技术
目前很多SOC厂商的微处理器芯片都集成了LCD控制器,如三星公司的S3C2410。S3C2440,Intel的Xscale系列等。大多数嵌入式系统也采用流行的LCD显示技术。但是在需要大屏幕显示、对分辨率要求不高的场合,如车间、厂房,采用大屏幕LCD则成本过高。另一方面,VGA显示技术因为技术发展成熟,成本低廉,仍在被大量使用,直到今天它仍是所有显示终端最为成熟的标准接口。如果让嵌入式处理器直接支持VGA显示器,则能很大地利用现有资源,节约系统成本。 1 基于S3C2440的VGA显示技术分析 通过分析VGA显示技术的时序逻辑与S3C2440内部集成LCD控制器驱动TFT LCD的时序逻辑,找出它们的共同点,分析在S3C24
[单片机]
基于<font color='red'>ARM处理器</font>S3C2440的VGA显示技术
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

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