微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 嵌入式数据采集系统中的ADS8364驱动程序设计

嵌入式数据采集系统中的ADS8364驱动程序设计

时间:03-23 来源:互联网 点击:

s8364_open(struct inode * inode, struct file * filp)

ads8364_open ()函数必须对将要进行的I/O操作做好必要的准备工作,如调用内核函数memset()清除缓冲区,使能中断等。如果设备是独占的,即同一时刻只能有一个程序访问此设备,则open()子程序必须设置一些标志以表示设备处于“忙”状态。当其为NULL指针时,设备的打开操作永远成功,但系统不会通知你的驱动程序。

5)释放设备操作

static int ads8364_release(struct inode * inode, struct file * filp)全功能版J-LINK ARM仿真器V6.0

ads8364_release是ads8364_open的逆操作,主要用来完成释放驱动程序占用的空间,禁止中断等。

4.4 中断处理程序

响应中断并提供相应服务的程序称为中断处理程序。在ADS8364的驱动程序中,中断处理程序的主要功能是,控制ADS8364进行采样,并将采样后的数据放入缓冲区,等待应用程序调用read函数读取。我们把中断处理程序注册到系统中,操作系统在硬件中断发生后,调用驱动程序的中断处理处理程序。函数定义如下:

static void ads8364_interrupt(int irq, void *dev_id, struct pt_regs *regs)

{…..

stat = AT91_SYS->PIOB_PDSR;//读出中断电平,如果为低电平, 控制ADS8364开始采样。

/*单芯片采集6路*/全功能版J-LINK ARM仿真器V6.0

for(j=0;j6;j++) { tmpdata=*(volatile u16 *)(ADOFFSET[i][j]+RtPara.remapptr); *(ad_priv->head_ptr++)= tmpdata;}

…..}

5 将驱动程序加载进Linux内核

经过上面各部分的编程设计,我们的ADS8364驱动程序已经设计完毕,把上面的各部分程序组成一个源程序文件,并将其命名ADS8364drv.c,然后经过以下步骤将其加载进内核,那么我们的ADS8364芯片就可以在驱动程序的控制下进行工作了。具体加载操作如下:全功能版J-LINK ARM仿真器V6.0

1)将驱动程序源码ADS8364drv.c拷贝到arm/linux /drives/char/目录下。

2)修改位于arm/linux/drives/char/目录下的Makefile文件,在该文件中添加下面语句。obj-$(ADS8364_drv)+= ADS8364drv.o。

3)修改位于arm/linux/drives/char/目录下的config.in文件,增加如下语句。

bool ‘ADS8364_drive’ ADS8364_drv。

6 结束语

本文就嵌入式数据采集系统中的AD驱动程序的设计进行了叙述,阐述了ADS8364字符设备驱动程序开发的方法和过程。本文作者创新点为:本嵌入式数据采集系统以嵌入式ARM芯片AT91RM9200为处理器,以高精度ADS8364为AD转换芯片,实现了多通道、高精度的数据采集和AD转换,以 LKM机制设计成的ADS8364驱动程序可以减小内核空间,对其它字符设备的学习与开发设计具有一定的指导意义。

参考文献

1ADS8364 Technical Document.Texas Instruments.2002.6http://www.51kaifa.com/shop/read.php?ID=4823

2郑伟 王钦若 吴乃优.Linux内核空间设备驱动程序的开发[J] .全功能版J-LINK ARM仿真器V6.0 微计算机信息,2003,12:85-87

3孙天泽,袁文菊,张海峰.嵌入式设计及Linux驱动开发指南—基于ARM9处理器[M].北京:电子工业出版社,2005

4魏永明,骆刚等译.Linux设备驱动程序(第二版)[M] .北京:中国电力出版社,2002

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

网站地图

Top