微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > 基于ARM的高速数据采集卡

基于ARM的高速数据采集卡

时间:08-07 来源:《国外电子元器件》 点击:

4.1 基于μC/OS-II的USB驱动编程

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

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

主任务不断的读取端点1,当接收到PC机发来的读命令时,就激活高优先级读任务的准备就绪信号量。读任务被唤醒进入读中断服务程序,将缓存器的数据通过USB总线发送给PC机,发送完毕后就关闭读任务的就绪信号量,返回到主任务的循环中,等待PC机发来的下一个命令。写任务与此相似,不再叙述。

4.2 基于LabWindow/CVI的主机软件编程

4.2.1 LabWindows/CVI简介

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

4.2.2 程序设计

整个设计程序包括四个部分:面板设计、初始化、数据采集、数据处理和结果显示,通过精心设计程序,基本完成了预定的各项测量功能。并保证了系统的运行速度。各部分功能介绍如下。

(1) 面板设计:提供友好的操作界面,符合常规测量仪器的操作习惯。

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

(3) 数据采集:LabVIEW不能直接访问用户自己设计的硬件,作为一个开放式开发平台,LabVIEW提供了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) 数据处理及显示:对内存中的采样数据进行各种处理用于不同测量目的。包括信号波形实时显示、自动测量信号幅度和时间、图盘、删除图形以及回放等附加功能。限于篇幅,程序清单此处略。

5 结束语

文中所述的整个虚拟测量系统完全在人机交操作下运行,并随时可更改测量参数及进行各种信号处理。系统各项指标为:最高采样率为40 MHz,并可按1/2、1/4、1/8…1/128程控分频采样,双路模拟输入;ADC精度为12位;模拟输入范围为0 V~2V;在板数据缓存4 KB字节/路,传输方式为块传输。该系统可进行实时信号波形、信号最大值、最小值、峰峰值显示,同时提供了显示图形文件存盘、回放、删除处理功能。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top