技术中心
 
 

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

   日期:2013-05-07    

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

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

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

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

2 LabWindows/CVI工具简介

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

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) 数据处理及显示

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

 
  
  
  
  
 
更多>同类技术
 
全年征稿 / 资讯合作
 
推荐图文
推荐技术
可能喜欢