当前位置:首页 > 单片机 > 单片机
[导读]1.引言在嵌入式系统特别是数据采集系统中,实时性至关重要,它不仅要求嵌入式微处理器能快速作出响应,还要求嵌入式系统能及时处理数据[1]。在本文设计的数据采集系统中,如采用常规方法传输数据,当采集数据的速度较

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转换的数据。转移数据时,只需读取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(aistatus&0x10)//若MIC-2718状态寄存器的A/D转换位有效
{
if(status&1!=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
 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

伊利诺伊州莱尔市 – 2026年3月12日 – 全球电子设备领军企业暨连接技术创新企业 Molex莫仕推出 Impress 共封装铜缆解决方案,通过提供超高速数据传输和卓越的信号完整性,满足下一代数据中心和 AI 工作流...

关键字: 数据传输 ASIC 电缆

USB(通用串行总线)作为目前最主流的接口标准之一,其数据传输的核心依赖于D+和D-两条差分信号线。差分传输的优势的在于能有效抑制共模噪声、提升抗干扰能力,而电平范围的规范则是保障不同厂商设备互通、传输稳定的基础。不同U...

关键字: 串行总线 数据传输 差分传输

在高速FPGA设计中,多时钟域(Multi-Clock Domain, MCD)数据传输是常见挑战。异步FIFO作为跨时钟域通信的核心组件,其深度计算与握手信号设计直接影响系统稳定性。本文从理论建模到工程实现,系统阐述关...

关键字: FPGA FIFO 高速FPGA

随着智能手机多摄、汽车 ADAS、8K 显示等技术的爆发,图像数据量呈指数级增长,传统传输接口面临带宽不足、功耗过高、延迟明显的三重挑战。MIPI(Mobile Industry Processor Interface)...

关键字: MIPI 协议 图像 数据传输

在信息技术飞速发展的当下,数据的传输与处理需求呈爆炸式增长。无论是数据中心的海量数据交换,还是人工智能、高性能计算等领域对高速、低延迟数据传输的严苛要求,都促使光通信技术不断向前演进。在这一进程中,CPO(Co-Pack...

关键字: 数据传输 光通信 光模块

在当今数字化时代,5G 通信技术以前所未有的速度改变着我们的生活,从高速的数据传输到实时的物联网应用,5G 的影响力无处不在。然而,在这一系列令人瞩目的技术背后,有一个常常被忽视却至关重要的角色 —— 晶振。它如同幕后的...

关键字: 通信 数据传输 晶振

在当今数字化时代,汽车不再仅仅是一种交通工具,更是一个移动的智能空间。随着人们对汽车电子设备依赖程度的不断提高,车内 USB 接口的重要性也日益凸显。从最初单纯为手机充电,到如今支持数据传输、连接各种智能设备,USB 接...

关键字: 接口 数据传输 汽车供电

FIFO 中断状态位的轮询和中断机制各有优劣,适用于不同的应用场景。轮询实现简单但效率低下,中断实时性好但复杂度高。在实际设计中,应根据系统需求、性能指标和资源限制,选择合适的机制或混合方案。随着硬件技术的发展,现代处理...

关键字: FIFO

FIFO 发送器凭借其独特的工作原理和结构特点,在众多领域中发挥着不可或缺的作用。它为数据的有序传输和高效处理提供了有力支持,尽管面临一些挑战,但通过不断的技术创新和优化,FIFO 发送器将在未来的科技发展中继续展现其强...

关键字: FIFO

上海 2025年6月23日 /美通社/ -- 近期,黑芝麻智能分享了其如何通过零拷贝共享内存技术,解决车载多域间大数据传输的延迟与资源消耗问题。核心技术包括全局内存管理单元和dmabuf机制优化,显著降低CPU负载与D...

关键字: 内存 数据传输 大数据 BUF
关闭