




已阅读5页,还剩48页未读, 继续免费阅读
(通信与信息系统专业论文)信号频谱分析模块设计.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
硕士论文信号频谱分析模块设计 摘要 近年来,随着通信技术的发展及对通信设备的研究逐渐深入,频谱分析技术越来越 多地体现出其重要性。结合嵌入式技术能使频谱分析仪更加灵活方便,便于携带。 本文对基于a r m 处理器$ 3 c 2 4 1 0 a 的嵌入式频谱分析模块的实现进行了研究。首 先讲述了频谱分析的原理以及实现的算法。接着介绍了嵌入式系统的特点,构架组成及 其选择方案,包括硬件以及操作系统的选型。然后详细介绍了操作系统在a r m 处理器 $ 3 c 2 4 1 0 a 上的移植和开发,包括b o o t l o a d e r 的原理和实现,内核移植,根文件系统的 制作等。最后深入阐述了系统驱动模块与显示界面的设计和实现,包括a d c 驱动,触 摸屏驱动,q t 程序设计等。论文最后得出了该模块的测试性能,并给出了以后改进的建 议。 关键词:频谱分析,a r m ,l i n u x ,q t a b s t r a c t i nt h el a s ty e a r s ,w i t ht h ed e v e l o p m e n to fc o m m u n i c a t i o n sa n d i n d e p t hs t u d yo ft h e e q u i p m e n t , t e c h n o l o g yo ff r e q u e n c ys p e c t r u ma n a l y s i sh a sb e c o m em o r ea n dm o r ei m p o r t a n t c o m b i n i n gw i t ht h ee m b e d d e dt e c h n o l o g y , t h es p e c t r u ma n a l y s i sc a nb em o r ec o n v e n i e n ta n d p o r t a b l e t h i st h e s i sf o c u s e so nt h ei m p l e m e n t a t i o no fe m b e d d e ds y s t e mb a s e do na r m p r o c e s s o r $ 3 c 2 410f o rf r e q u e n c ys p e c t r u ma n a l y s i s f i r s t ,i ti n t r o d u c e st h ep r i n c i p l ea n d a l g o r i t h mo f f r e q u e n c ys p e c t r u ma n a l y s i s a n dt h e n ,i td e s c r i b e st h ed e v e l o p m e n to fl i n u x ,i n c l u d i n g i n t r o d u c t i o no f b o o t l o a d e r , p r o c e s so fl i n u xk e r n e lp o r t i n ga n dd e s i g no fr o o tf i l e s y s t e m i n t h ee n d ,t h i st h e s i sd e s c r i b e st h ed r i v e r sa n dd e s i g no ft h eg r a p h i c a li n t e r f a c e si nd e t a i l , i n c l u d i n ga d cd r i v e r , t o u c hs c r e e nd r i v e ra n dq tp r o g r a m t h et h e s i sg i v e st h er e s u l to ft h e s y s t e m sp e r f o r m a n c e ,a n ds u g g e s t i o n sa r ep r e s e n t e df o rf u r t h e rd e v e l o p m e n t k e yw o r d s :s p e c t r u ma n a l y s i s ,a r m ,l i n u x ,q t i i 声明 本学位论文是我在导师的指导下取得的研究成果,尽我所知,在 本学位论文中,除了加以标注和致谢的部分外,不包含其他人已经发 表或公布过的研究成果,也不包含我为获得任何教育机构的学位或学 历而使用过的材料。与我一同工作的同事对本学位论文做出的贡献均 已在论文中作了明确的说明。 研究生签名:兰垒型丝,郦勿以日 学位论文使用授权声明 南京理工大学有权保存本学位论文的电子和纸质文档,可以借阅 或上网公布本学位论文的部分或全部内容,可以向有关部门或机构送 交并授权其保存、借阅或上网公布本学位论文的部分或全部内容。对 于保密论文,按保密的有关规定和程序处理。 研究生签名: 硕士论文 信号频谱分析模块设计 1 绪论 1 1 课题背景及研究意义 近年来,随着通信技术的发展以及对通信设备研究的逐渐深入,频谱分析技术越来 越多地体现出其重要性。功率谱估计按照采样方法可以分为均匀采样和非均匀采样。均 匀采样是最常用的描述信号的方法,而非均匀采样则是最早由ycj e n g 研究的。功率 谱估计还可以分为经典谱估计和现代谱估计两大类【2 1 。经典谱估计是基于传统傅立叶变 换的一种方法,原理是将观测区外的数据假设为零,并可进一步分为“直接法 和“间 接法 ;而现代谱估计则是基于对观测数据估计模型参数1 4 1 ,从而回避了观测区外假设 数据为零的问题,因此现代谱估计性能优于经典谱估计。 目前,嵌入式技术已经广泛深入的融入到了各行各业当中,日常生活的各个角落都 可以看到嵌入式技术的身影。相对于通用p c ,嵌入式系统是专门针对某一特定领域进 行优化设计的系统,具有软硬件可裁剪,成本低,体积小,功耗低,可靠性高等特点。 手机,p d a ,传真机,打印机,自动贩卖机等都是典型的嵌入式系统。这里,简单介绍 一些嵌入式系统的定义。广义来说,凡是不用于通用目的的可编程计算机设备,就可以 算是嵌入式计算机系统。狭义而言,嵌入式系统是指以应用为核心,以计算机技术为基 础,软硬件可裁剪,适于应用系统对功能、可靠性、成本、体积和功耗要求严格的专用 计算机系统。嵌入式系统的核心部件是嵌入式处理器,嵌入式处理器目前主要有a r m , a m l 8 6 8 8 ,3 8 6 e x ,s c 一4 0 0 ,p o w e rp c ,6 8 0 0 0 ,m i p s 系列等。对于开发者而言,可以 根据各自的实际需求选择不同的嵌入式处理器【3 】。将嵌入式技术与频谱分析相结合,其 过程如下所示: 7 “ ?二 入a 入 信号源 i t 嵌入式系统频谱分析显示 yy 图1 1 嵌入式频谱分析示意图 a r m 处理器核中自带了d s p 功能,既可以执行算法还可以进行事务处理,并且支持 广泛的操作系统,适应于未来智能化发展方向。结合a r m 技术的信号频谱分析模块,集 运算,显示,良好的用户界面为一体,将拥有广阔的应用前景。 1 2 课题研究的主要内容 l 绪论硕士论文 本课题围绕基于a r m 处理器的嵌入式频谱分析模块的设计与实现而展开,首先提出 了模块的设计方案,并介绍了频谱分析的原理及算法。然后对嵌入式系统及l i n u x 操作 系统进行详细阐述,包括系统构建,内核移植,驱动开发及调试。接着深入讲解了基于 q t 的图形界面的开发。最后对系统进行测试,给出结论和建议。本文主要完成以下工作。 1 提出模块设计方案,介绍频谱分析的原理及算法实现。 2 硬件的选型及操作系统的选择。 3 l i n u x 操作系统的移植与开发,包括内核移植,b o o t l o a d e r 移植,设备驱动开发 等,为实现频谱分析提供软件平台。 4 基于q t 的用户图形界面开发,提供友好的人机界面,并将频谱分析结果显示出 来。 5 介绍频谱分析模块的测试结果,给出结论和改进建议。 1 3 论文结构 发。 2 第一章绪论,主要介绍课题背景和研究意义,以及研究的主要内容。 第二章提出了模块设计方案,硬件选型,并介绍了频谱分析的原理及算法实现。 第三章介绍了操作系统的选择,阐述了l i n u x 操作系统的移植与开发过程。 第四章详细介绍了l i n u x 驱动开发流程,重点讲述了a d c 和触摸屏驱动的设计和开 第五章研究了图形界面的开发,并对模块进行测试,给出了结论和改进建议。 硕士论文 信号频谱分析模块设计 2 模块模型及频谱分析原理 2 1 信号频谱分析模块模型 信号频谱分析模块的主要功能是分析并显示输入信号的频谱特性。因此,模块从功 能上主要分为以下两个部分:信号处理部分和显示部分。信号处理部分又可进一步划分 为信号接收部分以及频谱分析部分。因为本模块是基于操作系统的应用,所以必须处理 好应用程序与硬件的调用形式。具体模型如下图所示: 图2 1 信号频谱分析模块总体模型图 整个模块由三大部分组成:接收单元,操作系统,应用程序。接收单元主要负责将 接收到的信号经过a d 转换后存入特定的寄存器,以便进行后续的数据处理。接收单元 决定了a d 转换的最高速率。操作系统作为应用程序和硬件的中间层,提供进程调度, 内存管理,文件管理,设备控制【2 】等功能。应用程序要操作硬件,需要通过系统调用进 行内存映射,然后由操作系统调用相应的驱动程序来实现i o 操作。因此,操作系统是 连接应用程序和硬件的纽带。应用程序主要进行数据的处理和显示,完成频谱分析并通 过友好的图形界面显示结果。 2 2 嵌入式处理器的选择 嵌入式处理器是系统的核心,它接收来自外界的信号,进行a d 转换,并将得到的 数据再通过快速傅立叶变换来进行频谱分析,最后还要绘制图形来向用户直观的显示结 果。 3 2 系统模型及频谱分析原理硕士论文 微处理器按照字长可以分为8 位,1 6 位和3 2 位。字长代表处理器一次处理的数据 长度。一般来说,字长越长,处理能力越强。微处理器按照指令系统还可以分为c i s c 和r i s c 两类。一般p c 平台使用的都是c i s c 微处理器,而r i s c 体系结构主要用于嵌 入式系统,原因在于其精简的指令集可以大大降低系统对处理器的要求。 a r m ( a d v a n c e dr i s cm a c h i n e s ) ,既可以认为是一个公司的名字,也可以认为是 对一类微处理器的通称,还可以认为是一种技术的名字。a r m 公司是3 2 位嵌入式r i s c 微处理器技术的领导者,自从1 9 9 0 年创办公司以来,基于a r m 技术i p 核的微处理器 的销售量已经超过了1 0 0 亿。基于a r m 的处理器以其高速度、低功耗、低价格等优点 得到了非常广泛的应用【1 4 】: 1 、 为无线通信、消费电子、成像设备等产品提供可运行复杂操作系统的开放 应用平台; 2 、 在海量存储、汽车电子、工业控制和网络应用等领域提供实时嵌入式应用; 3 、安全系统,例如信用卡、s i m 卡等。 从应用的角度出发,在选择a r m 微处理器时所应考虑的问题主要有以下几个方面: 一、内核的选择。常用的a r m 微处理器有a r m 7 、a r m 9 、a r m l 0 、a r m l1 、 c o r t e x 、s e c u r c o r e 、o p t i m o d ed a t ae n g i n e s 等系列,以满足不同的需求。如果用户希 望使用功能强大的操作系统,就需要选择带有m m u ( m e m o r ym a n a g e m e n tu n i t ) 功能 的a r m 芯片,而没有m m u 的a r m 处理器也可以支持u c l i n u x 操作系统( l i n u x 的精 简版) 。 二、工作频率。工作频率是衡量处理器工作能力最重要的指标之一。a r m 7 系列、 a r m 9 系列的主时钟分别为2 0 m h z - - 一1 3 3 m h z 、1 0 0 m h z 2 3 3 m h z ,而a r m l 0 系列微 处理器最高可达到7 0 0 m h z 。有的芯片只需要一个主时钟即可控制所有的部件,而有的 芯片需要将内部时钟分离以分别为a r m 核和外围部件提供不同频率的时钟。 三、片内存储器的容量。一般的a r m 微处理器片内存储器的容量都很小,如果用 户根据实际需求,需要相对较大的存储空间,可以在外围扩展存储器。 四、片内外围电路的选择。除a r m 微处理器以外,其他集成在芯片内的功能模块 都叫做外围电路。生产商根据市场需求搭配了各种各样的功能模块,用户根据各自的实 际需求选择相应的芯片。这样不仅可以简化系统设计,还可以提高系统的可靠性。 由于a r m 技术的快速发展,丰富的在线文档以及低廉的价格,我们决定采用三星 公司的$ 3 c 2 4 1 0 a ( 基于a r m 9 系列微处理器,包含m m u ) 芯片。这样我们可以使用 功能强大的操作系统来降低开发难度,一方面我们可以利用基于操作系统的丰富的开发 平台来开发各种具有友善人机界面的应用软件;另一方面,也为将来扩展功能和升级系 统做好准备。我们可以在尽量不改动硬件资源的条件下,通过软件升级来进行功能的完 善和增添新的应用。 4 硕士论文 信号频谱分析模块设计 2 3 频谱分析的方法 频谱分析在各个科研领域都会遇到。首先,在无线电技术的许多方面,例如通讯、地 震测量、电信、导航、雷达、电子对抗、空间技术等都有广泛的应用;此外,由于光波、 机械振动、冲击、声响等各种非电量都可以通过各种转换变成电流或电压的变化来方便 地进行分析,所以,频谱分析在各种振动、噪声、电声、发动机、建筑、生物、医学等领 域也起到了重要的作用。 通过频谱分析能将时域信号变换为频域信号,将工程信号分解为各个频率分量,可 获得信号的频率结构和组成信号各个谐波的振幅、相位信息,从而可达到保留有用信号, 去除噪声的目的。 下面重点介绍功率谱估计的原理。 功率谱估计是一种从频域分析随机信号的方法,一般分为两大类:经典谱估计与现 代谱估计。经典谱估计的方法在工程上都是以离散傅立叶变换为基础,它隐含着对无限 长数据的加窗处理,所以经典谱估计有着分辨率不高、能量泄漏的固有缺点。而现代谱 估计则不再简单的将观测区外的数据假设为零,而是先就观测数据估计模型参数,再按 照求模型输出功率的方法估计信号功率谱【9 】。从而避免了数据观测区外的假设问题。因 此,现代谱估计优于经典谱估计。 下面介绍几种常用的经典谱估计方法: 1 、周期图法 设x u ( n ) 是x ( n ) 在区间【o ,n - 1 】的有限长信号,即: | ,x ( ,2 ) ,0 n b u f f c r a b l c = 0 ; 至此,内核移植完成,下面进入内核编译阶段。 3 4 4l i n u x 内核编译 编译嵌入式l i n u x 内棱前,要先安裟交叉编译工具t o o l c h a i n 。 图3 2 内核配置界面 从网上下载交叉编译器c f o s s 一2 9 53 t a rb z 2 ,并将它放到u s r l o c a i a r m 目录下,执行 “l a r j x v f c r o s s - 29 53 t a r b z 2 ”解压,之后编辑e t c b a s h r c 文件,在最后增加路径“e x p o r t 3l i n u x 移植与开发硕士论文 p a t h - - u s r i o c a l a r m 2 9 5 3 b i n :p a t h 即可,以后编译内核或其他应用程序均可用 “a r n l 1 i n u x 来指定交叉编译器。 然后进入l i n u x 内核源码文件夹,并输入命令“m a k em e n u c o n f i g 来配置内核,如 图3 2 所示。 选择需要加载的内核模块后,保存退出。 然后输入命令“m a k ed e p ”来建立模块间的依赖关系。 最后输入命令“m a k ez l m a g e 即完成了内核编译,生成的内核映像存放在 a r c h a r m b o o t 中。 3 4 5 根文件系统 在现代计算机系统中,文件系统是必不可少的组成部分。文件系统用于明确磁盘或 分区上的文件的数据结构,即磁盘上组织文件的方法。由于各种文件系统的性能与用途 不同,所以合理的选择文件系统对整个系统的性能是很重要的。l i n u x 上的文件系统有 j f f s 2 、c r a m f s 、f a t 3 2 、n t f s 、e x t 2 、e x t 3 等。 由于c r a m f s 文件系统具有临时性存储数据的功能,正好符合我们的要求,因此 选择其作为根文件系统。 我们构建的文件系统结构如下: b i n s b i n h o m e d e v e t c 。_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 。 u s r 厂一e t c t m p 卜l i b u s r s h e l il - s b i 日 p r o c i - - - 一l o c a l i b q t l i b l i n u x r c v a r 广一l o g b a s h r c 1 一r u n i n i t d r e d i n i t t a b 配置文件 图3 3 文件系统结构图 文件系统是树形结构的,“ 即根目录,是其他所有目录的父目录。下面介绍一些 重要的、将要用到的目录: h o m e 存放普通用户的个人文件。 d e v 存放设备文件,接下来我们编写好驱动程序后,就可以在该目录下看到相应的 设备文件了。 t m p 存放临时文件,可以将程序下载到该目录进行调试,调试成功后再烧入f l a s h 1 8 硕士论文 信号频谱分析模块设计 中。 p r o c 虚拟文件系统,主要存放由内核控制的状态信息。 q t 里包含了q t e 的库文件,在后面我们编写图形界面时需要用到这些库文件。 3 5 本章小结 本章主要讲述了l i n u x 系统的移植与开发。首先介绍了l i n u x 操作系统;然后简要 描述了嵌入式l i n u x 开发环境的建立;接下来详细讲述了系统启动过程中最重要的一环 加载引导程序b o o t l o a d e r ,包括其功能介绍和开发步骤;最后深入研究了l i n u x 操 作系统在a r m 平台上的移植过程。 1 9 4 l i n u x 驱动开发硕士论文 4l i n u x 驱动开发 4 1 驱动程序简介 驱动程序实际上就是硬件与应用程序之间的中间层。驱动程序工作在内核空间,应 用程序一般运行于用户念。在内核态下,c p u 可执行任何指令,在用户态下c p u 只能 执行非特权指令。当c p u 处于内核态,可以随意进入用户态;而当c p u 处于用户态, 只能通过特殊的方式进入内核态,例如l i n u x 操作系统中的系统调用。系统调用是操作 系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接 口。 设备驱动程序的本质是实现逻辑设备到物理设备的转换,启动相应的i 0 设备,发 出i 0 命令,完成相应的i 0 操作,它是内核与外围设备数据交流的核心代码。设备驱 动程序为应用程序屏蔽了硬件的细节。在应用程序看来,硬件设备只是一个设备文件, 应用程序可以像操作普通文件一样对硬件设备进行操作。 l i n u x 支持三类硬件设备【1 9 1 :字符设备、块设备及网络设备。 字符设备接口只是面向字符的i 0 操做,它不经过系统的快速缓存,所以它们负责 管理自己的缓冲区结构。字符设备接口只支持顺序存取的功能,一般不能进行任意长度 的i 0 请求,而是限制i o 请求的长度必须是设备要求的基本块长度的倍数。典型的字 符设备包括鼠标、键盘、串行口等。 块设备接口主要是针对磁盘等慢速设备设计的,以免耗费过多的c p u 等待时间。 它仅支持面向块的i o 操作,所有i o 操作都在内核地址空间中的i o 缓冲区进行,它 可以支持几乎任意长度和任意位置上的i o 请求,即提供随机存取的功能。块设备主要 包括硬盘、软盘设备、c d r o m 等。 网络设备是一类特殊的设备,它既有字符设备的部分特性,又有块设备的部分特性, 在此就不再赘述。 l i n u x 系统为每个设备分配了一个主设备号和次设备号,主设备号唯一的标识了设 备类型,次设备号标识具体设备的实例。系统为所有设备文件提供了统一的接口,定义 如下2 4 1 : s t r u c tf i l e o p e r a t i o n s s t r u c tm o d u l e * o w n e r ; 模块所有者指针,一般初始化为t h i sm o d u l e l o f t t ( 宰l l s e e k ) ( s t r u c tf i l e 木,l o f f _ t ,i n t ) ; 用来修改文件当前的读写位置,返回新位置。 s s i z e _ t ( 宰r e a d ) ( s t r u c tf i l e 宰,c h a r 木,s i z e _ t ,l o f f _ t 水) ; 2 0 硕士论文信号频谱分析模块设计 同步读函数,读取成功则返回读取的字节数。 s s i z e _ t ( * w r i t e ) ( s t m c tf i l e 宰,c o n s tc h a r 幸,s i z e _ t ,l o f t t ) ; 同步写函数 u n s i g n e di n t ( * p o l l ) ( s t r u c tf i l e 宰,s t r u c tp o l l _ t a b l e _ s t r e e t 幸) ; 判断目前是否可以对设备进行读写操作。 硫( 幸i o c t l ) ( s t r u c ti n o d e + ,s t r u c tf i l e ,u n s i g n e di n t , u n s i g n e dl o n g ) ; 向设备发送i o 控制命令的函数。 血( o p e n ) ( s t m c ti n o d e 奉,s t r u c tf i l e ) ; 打开设备的函数。 i n t ( * f l u s h ) ( s t r u c tf i l e 枣) ; 在关闭设备文件时调用,执行未完成的操作。 i n t ( * r e l e a s e ) ( s t r u c ti n o d e 毒,s t r u c tf i l e 幸) ; 释放设备函数。 ; 这个结构的每一成员名字都对应着一个系统调用。用户进程利用系统调用对设备文 件进行诸如读写操作时,系统调用通过设备文件的主设备号找到相应的设备驱动程序, 然后读取这个数据结构相应的函数指针,接着将控制权交给该函数。 本系统中,主要用到了a d c 和触摸屏,下面主要介绍这两个驱动程序。 4 2a d c 驱动程序 4 2 1a d c 接口概述 s 3 c 2 4 1 0 a 提供8 通道模拟输入的1 0 位c m o s 循环类型模数转换器( a d c ) 。它 将输入的模拟信号转换为1 0 位的二进制代码。a d 转换器支持片上采样保持功能,并 支持掉电模式。 由于$ 3 c 2 4 1 0 a 的a d c 和触摸屏接口是集成在一起的,而触摸屏驱动我们随后也 会详细描述,因此我们将其完整的结构显示为如图4 1 所示心0 1 : 当p c l k ( 提供给a d c 的时钟) 频率是5 0 m h z 且a d c c o n 寄存器预分频器的设 置值为4 9 时,转换时间计算如下: a d 转换频率= 5 0 m h z ( 4 9 + 1 ) = l m h z 转换时间= i ( 1 m h z 5 个周期) = l 2 0 0 k h z = 5 u s 因为a d 转换器最高可工作在2 5 m h z 时钟下,因此最大转换速率能达到5 0 0 k s p s 。 2 1 4 l i n u x 驱动开发硕十论文 e i n t 2 3 】 e i n t 2 2 】 e i n t 2 1 】 e i n r 2 0 】 v d d a _ a d c a i n 7 a i n f q a i n s a i n 4 】 a i n 3 a i n 2 a i n 1 】 a i n 0 v s s aa d c 4 2 2a d c 相关寄存器 图4 1a d c 和触摸屏接口结构图 表4 2 【2 0 1 为a d c 控制寄存器。主要进行采样通道的选择、预分频系数的使能和设置, a d 转换开始以及结束的状态指示。 表4 3 【2 0 1 为a d c 数据转换寄存器( a d c d a t o ) 。对于普通a d c 来说,主要用来 存放转换生成的数据。而对于触摸屏接口来说,还有设置转换模式的功能。 表4 1a d c 控制寄存器 r e g is t e r a d d r e s s r wd e s c r i p ti o n r e s e tv a l u e a d c c o no x 5 8 0 0 0 0 0 0 r w a d cc o n t r o lr e s g i t e ro x 3 f c 4 a 【) c c o nb i t d e s c r i p t i o n i n i t i a ls t a t e e n do fc o n y e r s i o nf l a g ( r e a do n l y ) e c f l g 1 5 0 = a dc o n v e r s i o ni np r o c e s so 1 = e n do fa dc o n v e r s i o n a dc o n v e r t e rp r e s c a l e re n a b l e p r s c e n 1 4 0 = d i s a b l e0 1 = e n a b l e 硕士论文信号频谱分析模块设计 a dc o n v e rp r e s c a l e rv a l u e d a t av a l u e :1 2 5 5 n o t et h a td i v i s i o nf a c t o ri s ( n + 1 ) w h e n p r s c v l 1 3 :6 o x f f t h ep r e s c a l e rv a l u eisn t e :a d cf r e q u e n c ys h o u l db es e tl s e e t h a np c l kb y5t i m e s a n a l o gi n p u tc h a n n e ls e l e c t 0 0 0 = a i n0 0 0 1 = a i n1 0 1 0 = a i n2 s e l _ 狮j x 5 :3 0 1 1 = a i n30 1 0 0 = a i n4 1 0 1 = a i n5 1 1 0 = a i n6 1 1 1 = a i n7 ( x p ) s t a n d b ym o d es ele c t s t d b m 2 0 = n o r m a lo p e r a ti o nm o d e1 l = s t a n d b ym o d e a cc o n v e r s i o ns t a r tb yr e a d r e a d - s t a r t 1 0 = d i s a b l es t a r tb yr e a do p e r a t i o no 1 = e n a b l es t a r tb yr e a do p e r a ti o n a dc o n v e r si o ns t a r t sb ys e t ti n g t h i sb i t i fr e a ds t a r ti se n a b l e d , t h i sv a l u ei sn o tv a l i d e n a b l e j t a r t 0 3 o 0 = n oo p e r a t i o n 1 = a dc o n v e r s i o ns t a r t sa n dt h i s b itisc l e a r e da f t e rt h es t a r t - u p 表4 2a d c 数据转换寄存器( a d c d a t o ) r e g i s t e r a d d e r s s咖 d e s c r i p t i o n r e s e tv a l u e a d c d a t o0 x 5 8 0 0 0 0 0 c ra d cc o n v e r s i o nd a m r e g i s t e r a d c d a t 0b i t d e s c r i p t i o n i n i t i a ls t a t e u p d o w n 1 5 】u po rd o w ns t a t eo fs 够l u sa tw a i t i n gf o ri n t e r r u p t m o d e 0 = s 够l u s d o w n s t a t e i = s t y l u s u ps t a t e a u t o _ _ p s t 【1 4 a u t o m a t i cs e q u e n c i n gc o n v e r s i o no fx - p o s i t i o na n d y - p o s i t i o n 0 = n o r m a la d cc o n v e r s i o n 1 = s e q u e n c i n gm e a s u r e m e n to fx - p o s i t i o na n d y p o s i t i o n 4 l i n u x 驱动开发硕士论文 ,s t【1 3 :1 2 】 m a n u a lm e a s u r e m e n to fx p o s i t i o no ry p o s i t i o n 0 0 = n oo p e r a t i o nm o d e 0l = x p o s i t i o nm e a s u r e m e n t 1o = y p o s i t i o nm e a s u r e m e n t 11 = w a i t i n gf o ri n t e r r u p tm o d e r e s e r v e d 1 1 :1 0 】 r e s e r v e d x p d a t a 9 :0 】 x - p o s i t i o nc o n v e r s i o nd a t av a l u e ( i n c l u d en o r m a l ( n o r m a la d c ) a d cc o n v e r s i o nd a t av a l u e ) d a t av a l u e :0 3 f f 4 2 3a d c 驱动解析 a d c 驱动程序主要实现读取外部模拟信号,并转换为数字量,供应用程序调用的 功能。 a d c 驱动程序可以有两种编写模式中断模式和查询模式。中断模式就是在 a d c c o nb i t 1 5 为1 时产生一个中断,并进入中断处理函数完成相应功能;而查询模 式则是不间断的跟踪a d c c o nb i t 1 5 ,当其为1 就立即调用相应函数完成数据处理功 能。这两种方式在a d c 单独运行时都可以正常工作,但是当加入触摸屏驱动时,就需 要注意资源冲突的问题。关于这个问题,我们会在触摸屏驱动程序中分析。这里我们采 用查询模式a d c 驱动。 编写设备驱动程序需要分配设备号,为了不和其他设备冲突,我们把主设备号设为 0 ,让系统自动分配设备号 1 9 1 。 s t a t i ci n ta d c m a j o r = 0 : 然后来看接口定义。所谓接口,就是驱动程序和操作系统交互的一种方式。l i n u x 操作系统统一了这种方式,并把它规范为接口【3 7 1 。 s t a t i cs t r u c tf i l e _ o p e r a t i o n ss 3 c 2 410 _ f o p s = o w n e r :t h i s _ m o d u l e , o p e n :s 3 c 2 4 10a d e _ o p e n , r e a d :s 3 c 2 410 _ a d c _ r e a d , w r i t e :s 3 c 2 410 _ a d c _ w r i t e , r e l e a s e :s 3 c 2 410 _ a d c _ r e l e a s e , ; 驱动程序主要就是为了实现上面的这些接口函数。根据不同的应用,还可以增加很 多不同功能的接口。下面详细介绍a d c 驱动中的各个接口。 首先是打开设备,主要完成以下任务: 使能a d c 时钟: c l k c o i ni - ( 1 1 5 ) : 2 4 硕士论文 信号频谱分析模块设计 设置默认通道号和分频系数: a d c d e v c h a n n e l = l : a d c d e v p r e s c a l e = 19 ; 并告诉系统打开了一个设备( 即计数器j j h l ) : m o d _ i n c _ u s e _ c o u n t ; r e t u r n0 : 读取接口主要用来完成a d 采样的取值功能,并将其拷贝至用户空间供应用程序使 用。 在读取之前首先获得自旋锁,使得系统读取相应寄存器时不被外界打扰( 即不准其 他进程使用该寄存器) : s p i n _ l o c k _ i r q ( & ( a d c d e v 1 0 c k ) ) ; 然后使触摸屏无效,因为触摸屏的响应可能影响到a d c 的值: a d c t s c = 0 : 接下来选择需要的通道号和分频系数: s t a r t a d t a i n ( a d c d e v c h a n n e l ,a d c d e v p r e s c a l e ) : 下面就准备读取a d 转换的值了。首先要确定a d 转换是否已经开始,通过检查 a d c c o n 寄存器最低位是否为0 来判断:如果非0 ,则持续查询直到为0 。 w h i l e ( a d c c o n & o x 0 1 ) : 再来确定a d 转换是否已经结束。这又可以通过查看a d c c o n 最高位是否为1 来 判断:如果非l ,则持续查询直到为1 w h i l e ( ! ( a d c c o n & o x 8 0 0 0 ) ) : 最后就是读取a d c d a t 0 寄存器,并将值复制到用户空间,使能触摸屏,解锁。 r e t = a d c d a t 0 & 0 x 3 i f ; c o p y _ t o _ u s e r ( b u f f e r ,( c h a r 木) & r e t ,s i z e o f ( r e t ) ) ; a d c t s c = t m p :术先前己将a d c t s c 值保存在t m p 变量中了术 s p i n _ u n l o c k _ i r q ( & ( a d c d e v 1 0 c k ) ) : 写入接口主要用来选择通道号和预分频系数。 首先判断写入数据是否符合规范( 即写入数据大小是否和指定大小相符) : i n td a t a ; i f ( c o u n t ! = s i z e o f ( d a t a ) ) * c o u n t l l p 为写入数据木 r e t u r no ; ) 4 l i n u x 驱动开发 硕士论文 然后将用户空间的数据复制到内核空间( 因为驱动程序工作在内核空间) : c o p y _ f r o m _ u s e r ( & d a t a , b u f f e r ,c o u n t ) : 最后选择通道号和预分频系数: a d c d e v c h a n n e l = a d c _ w r i t eg e t c h ( d a t a ) ; a d c d e v p r e s c a l e = a d c _ w r i t e _ g e t p r e ( d a t a ) : 设备功能完成后就可以关闭设备,只需要通知系统计数器减一即可: m o dd e cu s ec o u n t : 最后进行设备的注册与注销。 注册函数原型如下: i n tr e g i s t e r _ c h r d e v ( u n s i g n e di n tm a j o r ,c o n s tc h a r 水n a m e , s t m c tf i l e _ o p e r a t i o n s 木f o p s ) 本驱动中主设备号为0 ,设备名称为“s 3 c 2 4 1 0 a d o ”,而f o p s 即为前面所介绍的接 口s 3 c 2 4 1 0f o p s ,因此注册函数如下: r e t = r e g i s t e r c h r d e v ( 0 ,“s 3 c 2 4 1 0 - a d o ”,& s 3 c 2 4 1 0 _ f o p s ) : 注销函数原型如下: v o i du n r e g i s t e r c h r d e v ( u n s i g n e di mm a jo r c o n s tc h a r 宰n a m e ) 其中m a j o r 为主设备号。由于先前注册时是让系统动态分配的主设备号,因此我们 用a d c m a j o r 变量来保存系统分配的设备号,在这里就用到了这个变量。设备名称仍然是 “s 3 c 2 4 1 0 - a d o ”,因此注销函数如下: u n r e g i s t e r c h r d e v ( a d c m a j o r ,“s 3 c 2 4 10 一a d o ”) : 2 6 在文件系统中设备文件节点的建立与删除: d e v f sa d cd i r = d e v f sm k ,” ”,d i r ( n u l l a d c n u l l ) ; d e v f s _ a d c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 碳捕集利用工程环境影响评估方案
- 2025年抽屉原理真题演练及答案
- 园林古建筑设计与规划方案
- 离婚协议中解除婚约协议及个人债务承担范本
- 学前特殊体质幼儿入托协议安全责任免除及健康管理
- 双方协议离婚房产分割及子女监护权合同
- 文化创意产业园区项目招投标合同管理与产业升级
- 历年安全员考及答案1及答案
- 热电联产绿色建材项目建设工程方案
- 电力营销知识题库及答案
- 2025股权融资合同书
- 2025员工试用期合同协议书模板
- 2025年税收和注册税务师知识竞赛题目及答案
- 2025年工会经审财务知识竞赛培训试题考试题库(含答案)
- Starter Unit2 Keep TidySectionB(1a-1d)公开课一等奖创新教学设计人教版(2024)七年级英语上册
- 2025湖南衡阳工会招聘11名工会社会工作者备考考试题库附答案解析
- 焊接质量检测记录规范模板
- 2025年辽宁省交通建设投资集团招聘(104人)备考练习试题及答案解析
- DBJ51T214-2022四川省蒸压加气混凝土隔墙板应用技术标准
- 哲学与人生 第二课 树立科学的世界观2.1
- 传感器技术-武汉大学
评论
0/150
提交评论