微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于WinCE系统的FIFO数据传输程序设计

基于WinCE系统的FIFO数据传输程序设计

时间:04-16 来源:互联网 点击:

1.引言

在嵌入式系统特别是数据采集系统中,实时性至关重要,它不仅要求嵌入式微处理器能快速作出响应,还要求嵌入式系统能及时处理数据[1]。在本文设计的数据采集系统中,如采用常规方法传输数据,当采集数据的速度较高时,由于Windows CE系统和采集系统不能同步,可能会造成数据的丢失,使得系统不能及时准确的传输数据。为解决这一问题,可以使用采集板上内置的先入先出(FIFO)缓冲器。目前国内关于在Windows CE系统中实现FIFO的文献还未见报道。对此,本文讨论了如何在Windows CE.net平台上开发基于FIFO的数据采集板的驱动程序,以保证数据采集数据的准确性。通过试验将常规方法与FIFO进行比较,得到较好的结果

2.系统的软件及硬件平台

嵌入式系统以其体积小、针对性强、实时性好等特点,在通讯、控制和消费电子等诸多领域得到了广泛的应用。本设计中的操作系统就是微软公司推出的专门用于嵌入式系统的实时操作系统Windows CE.net,它是一个32位、多线程、多任务的嵌入式操作系统,以其模块化的结构,良好实时性能力,强大的通信能力和对多种CPU的支持,在各种工业控制、消费电子等领域拥有较好的应用前景[2]。

数据采集系统的硬件平台是研华公司的MIC-2000工业控制计算机,MIC-2000具有良好的机械可靠性和总线扩展能力[3],可用于环境恶劣的工业现场。数据采集板是模拟量输入板MIC-2718,它是一个高增益、高性能的多功能数据采集板,它提供的程序可控增益放大器使用户可以不用外加电源就可以采集很小的输入信号,内置的1K字FIFO缓冲区保证了采集数据的快速性和准确性。MIC-2718为12位100KHz的A/D模块,支持16路单端或8路差分输入最大转换时间为8usec,有软件触发、定时器触发和外部触发三种方式,MIC-2718的功能框图如图1所示。

MIC-2718支持跳线选择16路单端输入或8路差动输入,当选择单端输入时每个通道只需要接一根信号线,信号的参考地为板上的公共地[4]。标准连线图如图2所示。当选择双端输入时每个通道有2根信号线,MIC-2718测量2个模拟信号的电压差,如果信号源没有接地,则称为“浮”信号源,测量“浮”信号源用图3所示的接线方法。

3.Windows CE驱动程序

与其他操作系统一样,Windows CE.net也提供了很多外设的驱动程序,驱动程序将操作系统和设备连接起来,使操作系统能够识别设备并为应用程序提供设备服务[5]。 但是,对于非常规硬件设备(或者说对现有的Windows CE应用系统是非常规的),微软并没有提供驱动程序,因此需要设备的硬件厂商提供WndowsCE的驱动,或是使用者自行开发[6]。目前,还没有MIC-2718的基于Windows CE.net 4.2版本的驱动程序,因此需要自行开发。

Windows CE.net驱动程序的2种模式是本机驱动和流接口驱动模式[7]。本机设备驱动适于集成到基于Windows CE.net平台的设备,如通用LED驱动和电源驱动。流接口驱动模型适用于任何在逻辑上被认为是一个数据源或数据存储的设备的I/O设备(任何以产生或消耗数据流作为主要功能的外围设备)[8],因此在采集系统中,WinCE的外围设备驱动程序一般以流接口驱动程序较多。另外,绝大部分外围设备驱动程序都可映射为流接口驱动程序。无论驱动程序控制的设备是什么类型,流接口驱动都使用相同的接口并导出一组相同的函数(流接口函数)。

针对本文中数据采集系统和Windows CE中驱动程序模型的特点,本设计采用流接口驱动程序模型。

4. FIFO传输方式与常规方式的实现与比较

FIFO存储器有两个端口(输入口和输出口),并按先入先出的顺序来暂时存放数据。当采用常规方式进行数据传输时,如采集板采样速度很快,而系统不能及时读出数据时,新采集的数据会把原来的数据覆盖,这时系统只能传递新的数据,从而造成数据丢失。MIC-2718的FIFO缓冲器可以解决这个问题,FIFO在数据采集卡中作用是缓存数据,解决采集系统中数据丢失的问题,它使采集板在高触发率或多任务操作系统(如Windows操作系统)中实现可靠稳定的高速实时数据采集和传输。

MIC-2718在完成第一次A/D转换后将数据存入MIC-2718的A/D数据寄存器(地址为BASE+0和BASE+1(BASE为MIC- 2718的基地址))和FIFO缓冲区的第一个存储单元,下一次A/D转换时,新的数据会覆盖A/D数据寄存器中的数据,但是如果缓冲区的第一个存储单元中的元素没有被系统读取,FIFO会自动将此次转换的数据存入缓冲区的下一个存储单元,上一次的数据仍然保留。每一次转换的数据都被依次存入FIFO的缓冲区中,最多可以存储1024次A/D转换的数据。转移数据时,只需读

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

网站地图

Top