基于WinCE系统的bob综合体育官方入口FIFO数据传输
  • 时间:2022-06-19
  • 点击率:

介绍

本文引用地址:http://www.eepw.com.cn/article/171610.htm

实时性在嵌入式系统中非常重要,尤其是在数据采集系统中。它不仅要求嵌入式微处理器快速响应,还要求嵌入式系统及时处理数据[1]。在本文设计的数据采集系统中,如果采用常规方法传输数据,当数据采集速度较高时,可能会因为Windows CE系统与采集系统不能同步而导致数据丢失,使得系统无法及时准确地传输数据。为了解决这个问题,可以使用采集板上的内置FIFO缓冲器。目前国内还没有关于在Windows CE系统中实现FIFO的报道。因此,本文讨论了如何在Windows CE.net平台上开发基于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路差分输入。最大转换时间为8微秒。有三种方式:软件触发、定时器触发和外部触发。MIC-2718的功能框图如图1所示。

1.jpg

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

2.jpg

3.Windows CE驱动程序

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

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

根据数据采集系统的特点和Windows CE下的驱动程序模型,本设计采用了流接口驱动程序模型。

4.FIFO传输模式与常规模式的实现及比较。

FIFO有两个端口(输入端口和输出端口),以先进先出的顺序临时存储数据。当采用常规的数据传输时,比如采集板的采样速度很快,系统无法及时读出数据,那么新采集的数据就会覆盖原来的数据,这时系统只能传输新的数据,造成数据丢失。MIC-2718的FIFO缓冲区可以解决这个问题。数据采集卡中FIFO的作用是缓存数据,解决采集系统中数据丢失的问题。使采集板能够在高触发率或多任务操作系统(如Windows操作系统)下实现可靠稳定的高速实时数据采集和传输。

第一次A/D转换后,MIC- 2718将数据存入MIC-2718的A/D数据寄存器(地址为BASE+0和BASE+1(BASE为MIC-2718的基址))和FIFO缓冲区的第一个存储单元。在下一次A/D转换时,新数据将覆盖A/D数据寄存器中的数据,但如果每个转换数据的缓冲区的第一个地址顺序存储在FIFO的缓冲区中,最多可存储1024个A/D转换数据。传输数据时,只需要读取FIFO数据寄存器(地址为BASE+23和BASE+24)中的数据,这也是FIFO缓冲区中第一个存储单元的数据。此时,缓冲器中的第一个数据被读出,下一个存储单元的数据自动取代它的位置。FIFO缓冲区的当前状态可以通过采集板中FIFO的状态寄存器(地址为BASE+25)来判断。寄存器的D0位EF表示FIFO为空,D1位HF表示FIFO为半满,D2位FF表示FIFO为满。此外,对BASE+25寄存器的任何写操作都会清除空FIFO缓冲器,EF设为1,HF和FF设为0。

有丰富的驱动功能(地址映射、总线访问、DMA缓冲和I/O操作等。)在Windows CE系统提供的驱动开发包(Ceddk)中,可以满足硬件平台上任何总线的需求[8]。通常实现为动态库Ceddk.lib文件。因为MIC-2718是基于ISA总线的,所以可以直接读写采集板的地址。同时,由于FIFO的读写操作是独立的,可以同时进行,所以在数据传输过程中不需要考虑采集板和Windows CE系统的时序协调问题。但是在读写FIFO时,需要判断FIFO的状态。只有当缓冲区中的数据未满时才能写入,未满时才能读取[9]空


客服QQ: 点击这里
地址:台州市寨金路899号电子时代广场5116室 客服QQ:329435596
Copyright © 2022 bob综合体育官方入口 版权所有

08980-89895656

服务时间:7X10小时