新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 便携式数据采集系统的设计

便携式数据采集系统的设计

作者:时间:2009-12-08来源:网络收藏

Linux设备驱动程序实现的功能包括驱动程序的注册与注销、设备的打开与释放、设备的读写操作、设备的控制操作等。当用户需要通过设备文件与硬件通信时,必须通过调用open、read、write、close、ioctl等函数实现,这些函数都由file_operations结构体的函数指针成员给出入口地址,file_operations结构体的每一个成员名都对应一个函数嗍。用户进程利用调用在对设备文件进行诸如read、write操作时,系统调用通过设备文件的主设备号找到相应的设备驱动程序,然后读取该数据结构相应的函数指针,接着把控制权交给该函数。因此,编写设备驱动程序就是编写file_operations数据结构的各个函数指针对应的各个函数,随着Linux设备驱动程序的复杂程度越来越高,file operations结构体的成员数越来越多,但并不是每种设备的驱动程序都需要利用file_operations中的全部功能,大多数驱动程序只是利用其中一部分,对于驱动程序中无需提供的功能,只需将相应位的数值设为NULL。本系统将作为字符型设备驱动程序,对于字符设备来说,file_operations结构体中要提供的主要入口有:打开设备文件open()、释放设备文件release()、读取A/D转换的数据read()、启动A/D转换和选取A/D转换的读数通道号write()、A/D转换参数快速设置ioctl()。
结合与S3c24lO的接口电路,驱动程序时,采用中断方式或者查询方式读取转换数据。采用查询方式在驱动程序中需将通用输入输出引脚GPF4设置成输入模式,在应用程序中反复查询GPF4的输入状态,当查询到低电平时表明A/D转换器完成一次转换,此时可调用驱动程序中的read()函数读取转换结果;采用中断方式需在驱动程序中将GPF4设置中断方式,将中断触发方式设置下降沿触发,产生的EOC信号触发Linux系统的外中断EINT4,应用程序只需打开ADS8364所对应的设备文件,并采用write()函数启动相应通道开始转换,然后由驱动程序中的中断服务函数将数据存放到一个全局变量中,应用程序通过read()函数读取数据,因此,利用中断方式采集数据速度更高、读数控制更简单。图4为采用中断方式的程序流程。


5 测试结果
该系统已应用于某油田的井口多参数采集装置,前端分别接压力、流量、流速、温度等传感器,用来测量采油井井口的多种参数。经测试,该系统与传统的基于单片机的多参数测量装置相比,具有界面美观,易操作,精度高,可方便利用存储卡或U盘存储重要设置参数、系统运行状态的数据和测量数据,便于使用者管理和维修等优点。表1为该系统所测量值与实际值的对比情况。

从表1看出,该系统的测量误差很小,其中所测量的多个电压点,相对误差都小于O.08%,这样的精度可满足应用需求。


6 结束语
本文提出的基于嵌入式Linux技术的系统,与传统的单片机或DSP技术实现的系统相比较,具有功耗低、体积小、用户操作界面友好、采集精度高、便于扩展升级等优点。ARM的片上资源丰富,Linux操作系统的功能强大,该系统通过外接不同传感器可实现多种参数采集,利用系统的丰富GPIO接口编程设计多个外部设备控制动作,完成多通道PWM输出。该系统在石油钻采、工厂自动化等领域具着广泛的应用前景。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭