X射线荧光分析是一种快速、准确而又经济的多元素分析方法[1]。目前,X射线荧光分析技术已被广泛应用于地质、冶金、化工、材料、石油、医疗等领域,尤其是能量色散X射线荧光EDXRF(Energy Dispersive X-Ray Fluorescence)光谱仪,由于具有体积小、价格低廉、自动化程度高等优点,已成为普遍多元素同时分析的有力手段。
EDXRF光谱仪利用X射线荧光对于不同元素具有不同能量的特点,依靠探测器实现对测试样品中元素的定性、定量分析。随着电子学技术、计算机科学技术以及半导体材料的发展,特别是嵌入式技术的应用,为X射线荧光光谱仪智能化、小型化及高性能提供了必要的硬件基础。本文提出了基于S3C2440嵌入式处理器的便携式EDXRF光谱仪的设计方案,用于分析检测合金、矿石中的多种元素。
1 方案设计
便携式EDXRF光谱仪采用X射线管作为激发源,Si-PIN探测器作为X射线探测器。X射线打到测试样品后,X射线荧光光量子通过探测器转变为一定形状和数量的电脉冲。该电脉冲经前置放大处理后,变为可测电脉冲信号。本方案采用S3C2440高性能的嵌入式处理器,外扩高速A/D转换芯片AD7676,由S3C2440硬件定时和AD7676组成数字脉冲分析器,将可测电脉冲信号变成数字信号,实现EDXRF光谱的采集。
S3C2440以ARM920T为内核,支持Windows CE操作系统。本系统基于Windows CE系统上的AD7676驱动程序,在应用程序层控制AD7676的工作,实现了EDXRF光谱的采集、存储、分析。其整体方案如图1所示。
2 硬件设计
2.1 AD7676
AD7676是美国模拟器件公司生产的16位高速(500 kS/s)SAR ADC[2],内置16位高速采样ADC、差分输入结构、内部转换时钟、纠错电路以及串行和并行系统接口。
AD7676的采样数据读取有两种方式:转换完成后读取和采样中读取。图2所示为采样中读取方式时序,当AD7676转换结束后,忙信号变为低电平,保持片选信号为低,使得转换及读信号由高变低,此时数据总线上出现上次转换后的数据。采样中读取方式时,在转换完成后,可同时读取数据及启动下一次采样,消耗时间少,适用于本系统。
2.2 数字脉冲分析器
数字脉冲分析器由信号处理电路(信号调理、放大)、高速AD转换器(AD7676)及S3C2440处理器组成,图3所示为系统电路框图。
X射线荧光光量子通过SI-PIN探测器转变为电脉冲,经调理、前置放大处理后变为可测电脉冲信号传给AD7676采样处理。为了保证采样的正确性,采用基准电压芯片为AD7676提供基准电压,同时为了防止电源串入的干扰,采用专用的DC-DC隔离电源使得模拟部分电源与数字处理部分电源隔离。S3C2440处理器与AD7676之间的数据总线采用数据缓冲器SN74LVC16245驱动。
3 基于Windows CE的AD7676驱动程序开发
由图3可知,AD7676被直接映射到S3C2440系统内存,所以其驱动程序采用单片式流接口设备驱动模型。同时当AD7676转换结束后,采用中断方式通知S3C2440读取转换结果,并启动下一次转换。AD7676驱动程序由内核部分和流接口函数部分组成。内核部分完成中断的处理,包括中断的使能、禁止、唤醒中断服务线程等工作;流接口函数完成AD7676的打开、关闭、初始化以及数据的读、写操作。
3.1 内核部分
系统硬件电路采用中断方式对AD7676进行数据的读取,以提高S3C2440的使用效率。Windows CE对中断的响应过程如图4所示[3]。
参照时序图,修改Windows CE中与中断相关的内核文件,完成物理中断到逻辑中断的映射。主要工作如下:(1)修改oalintr.h文件,完成中断向量的注册;(2)修改cfw.c文件,完成中断允许、中断禁止和中断完成操作。经过修改Windows CE内核文件,完成物理中断Eint0到逻辑中断号SYSINTR_ADC的映射,就可以利用Windows CE提供的API函数完成物理中断Eint0的操作。
3.2 流接口函数
Windows CE流接口驱动程序是动态链接库,由设备管理器统一加载、管理和卸载。在Windows CE中,流接口函数一共有10个,所开发的驱动程序采用了其中的7个接口函数:AD7676_Deinit、AD7676_Init、AD7676_Open、AD7676_IoControl、AD7676 _Read、AD7676 _Write、AD7676_Close。
流接口函数需要完成两个主要方面的工作:AD7676数据结构的建立、流接口函数代码的实现。其中AD7676初始化、中断服务程序最为重要。
(1)PADC_CONTEXT AD7676_Init(LPCTSTR pContext,LPCVOID lpvBusContext)
AD7676_Init接口函数在驱动程序加载时,由设备管理器调用,主要完成硬件初始化,如映射设备物理内存、配置相关寄存器、创建中断事件、中断服务线程等工作。
AD7676_Init接口函数按照图5所示调用顺序完成驱动的初始化工作。调用成功后,将返回AD7676数据结构的首地址[4]。
(2)中断服务线程AD7676_ISR
AD7676_ISR中断服务线程是中断处理的核心部分,负责将缓冲区中的数据读至系统内存[3]。
DWORD AD7676_ISR(PVOID pContext){
PHW_INDEP_INFO pHead=(PHW_INDEP_INFO)
pContext;
ULONG WaitReturn;
While(!Done()){
WaitReturn=WaitForSingleObject((PHW_INDEP_
INFO)pContext,INFINITE);
if(WaitReturn==WAIT_OBJECT_0){
……//读取AD7676转换后的数据
InterruptDone(pHead->dwIntID);
}
}
return 0;
}
4 定性分析应用实例
利用此方案设计的便携式EDXRF光谱仪对某被测样品进行了定性分析。图6所示为该被测样品经过光滑、扣背景后的谱线,图中标出了Ni的Kα线与Kβ线、Au的Lα线与Lβ线。
表1为对图6谱线经寻峰、能量刻度后,计算获得的被测样品中元素已知能量值与测量值的对比。
从表1元素已知能量值与测量值之间的相对误差可以看出,使用此方案获得的谱线经过光滑、扣背景、寻峰、能量刻度后,完全能达到定性分析的要求。
上一篇:基于ARM7的畜牧养殖智能消毒机器人控制系统
下一篇:ARM9在高精度生化分析仪温度控制系统中的应用
推荐阅读最新更新时间:2024-03-16 12:31