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

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

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

取FIFO数据寄存器(地址为BASE+23和BASE+24)中的数据,它也是 FIFO缓冲区中的第一个存储单元的数据,此时缓冲区中第一个数据被读出,下一个存储单元的数据自动代替它的位置。通过采集板中FIFO的状态寄存器(地址为BASE+25)可以判断FIFO缓冲器当前的状态。状态寄存器的D0位EF是FIFO为空的标志,D1位HF是FIFO半满的标志,D2位FF是 FIFO为满的标志。另外,对BASE+25寄存器的任何写操作都将清空FIFO缓冲器,EF被置1,HF、FF置0。

Windows CE系统提供的驱动程序开发包(Windows CE Driver Development Kit,Ceddk)中提供了丰富的驱动程序函数(地址映射、总线访问、建立DMA缓冲和I/O操作等),可以满足硬件平台上任何总线的需要[8],它通常被实现为动态库Ceddk.lib文件。由于MIC-2718是基于ISA总线的,可以直接对采集板的地址进行读写操作,同时,由于FIFO读写操作是相互独立的,可以同时进行,所以不必考虑采集板与Windows CE系统数据传输时的时序配合问题,但是在对FIFO进行读写操作时,要判断FIFO的状态,只有在缓冲区中数据未满时才能写入,未空时才能读出[9],以避免一些错误的操作。

当数据采集板通过程序控制方式、定时器触发方式或外部触发方式采集到模拟信号后自动进行A/D转换后将数据放入A/D数据寄存器并依次写入FIFO 缓冲区中,Windows CE.net中的用户应用程序通过检测FIFO标志寄存器和MIC-2718状态寄存器(地址为BASE+8)的状态来确定是否进行了有效的A/D转换。下面给出在Windows CE开发平台上对FIFO进行读操作的部分代码,设MIC-2718的基地址为300H:
PUCHAR ioPortBase=MapIoSpace(300H);//将物理地址影射为虚拟地址
BYTE aistatus=READ_PORT_UCHAR(ioPortBase+8);//读MIC-2718的状态寄存器
BYTE status=READ_PORT_UCHAR(ioPortBase+25);//读FIFO的状态寄存器
BYTE ad0,ad1;
if(aistatus0x10)//若MIC-2718状态寄存器的A/D转换位有效
{
if(status1!=0)//若FIFO不为空,则读FIFO
{
ad0=READ_PORT_UCHAR(ioPortBase+23);
ad1=READ_PORT_UCHAR(ioPortBase+24);
}
}

表1 A/D数据寄存器与FIFO数据寄存器的比较

在使用MIC-2718的某一通道分别用常规方式和FIFO方式对一个持续变化的电压源做连续的信号采集和传输时,两种方式传输的数据如表1所示。可以看出,第2和第8组中A/D数据寄存器中的数值是错误的,可见使用普通A/D传输方式存在数据丢失问题,因此并不能准确传输数据,而使用FIFO方式可以保证数据传输的完整性。

5.结束语

通过实际测试,在Windows CE的高速数据采集系统中,采用FIFO可以保证数据采集的可靠性,并且编程简单,程序调试方便,可以极大地提高数据采集板的采样效率。本文作者的创新点在于在Windows CE.net系统下实现FIFO数据数据传输,从而保证了数据传输的可靠性。

参考文献
1. 刘大鹏,马孝江,基于Windows CE的嵌入式操作系统实时性分析[J],自动化技术与应用,2002(1): 41
2. Microsoft Corporation. About Windows Embedded[EB/OL]. http://www.microsoft.com/windows/embedded/about.mspx,2005
3. Advantech Co,Ltd. PC-Based Modular Industral Computer Designed for Industrial Automation MIC-2000 Modular Industuial Computer Series[Z].1996-5
4. Advantech Co,Ltd. PC-Based Modular Industral Computer Designed for Industrial Automation MIC-2718 High-Performance DAS Module[Z].1998-4
5. 周毓林,宁杨,卢贵强,付林林,Windows CE.net内核定制及应用开发[M],(北京)电子工业出版社,2005.2
6. 王少红,徐小力,李海燕,Windows CE平台上开发采集板驱动程序[J],北京机械工业学院学报,2004,19(3):23
7. 杨军波,须文波,基于WinCE环境的CAN适配卡驱动程序的设计与实现[J],微计算机信息,2005,21(12):26
8. 张冬泉,谭南林,王雪梅,焦风川,Windows CE实用开发技术[M],(北京)电子工业出版社,2006.4
9. 曾照福,成继勋,采用FIFO的CAN总线接口卡的设计[J],工矿自动化,2002(9): 33

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

网站地图

Top