新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 嵌入式数据采集系统中的ADS8364驱动程序设计

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

作者:时间:2012-03-23来源:网络收藏

cmd参数的内容主要有以下:通过调用copy_from_user( )内核函数将应用程序中由参数arg传来的数据结构传给内核的同类型结构;采样开始控制命令,通过调用采样开始函数,使能AD开始控制管脚来开始采样,该函数通过调用copy_from_user( )内核函数将应用程序中由参数arg传来的数据结构传给内核的同类型结构;获得采样频率,控制按照用户要求的采样频率进行采样。

2)查询设备状态操作

static unsigned int ads8364_poll(struct file * filp, poll_table * wait)

该函数用于查询的状态,以便用户程序获知是否能对设备进行非阻塞的访问。它的设计比较简单,它通过调用API函数poll_wait()把当前阻塞的进程添加到wait参数指定的等待列表(poll_table)中。

3)从设备中读数据操作

static ssize_t ads8364_read(struct file * filp, char * buf, size_t count, loff_t * l)全功能版J-LINK ARM仿真器V6.0

该函数由用户程序调用,它主要通过调用内核函数copy_to_user()把内核空间已经完成转换的数据读入到用户空间。这是内核与用户交换数据的接口函数。

4)打开设备操作

static int ads8364_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进行采样,并将采样后的数据放入缓冲区,等待应用程序调用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 将驱动程序加载进内核

经过上面各部分的编程设计,我们的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郑伟 王钦若 吴乃优.内核空间的开发[J] .全功能版J-LINK ARM仿真器V6.0 微计算机信息,2003,12:85-87

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

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

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭