基于arm和qt的多路信号检测系统设计毕业设计论文(编辑修改稿)内容摘要:

门开始计数,直到积分器恢复 到零电平时,计数停止。 则计数器所计出的数字即正比于输入电压 Vi 在 T0 时间内 的平均值,于是完成了一次 A/D 转换。 由于双积分型 A/D 转换是测量输入电压 Vi 在 T0 时间内的平均值,所以对常态干扰 (串摸干扰 )有很强的抑制作用,尤其对正负波形对称的干扰信号,抑制效果更好。 双积分型的 A/D 转换器电路简单,抗干扰能力强,精度高,这是突出的优点。 但转换速度比较慢,常用的 A/D 转换芯片的转换时间为毫秒级。 例如 12 位的积分型A/D 芯片 ADCETl2BC,其转换时间为 lms。 因此适用于模拟信号变化缓慢,采样速率 要求较低,而对精度要求较高,或现场干扰较严重的场合。 例如在数字电压表中常被采用。 第二章 基于 ARM 和 QT 的多路信号监测系统硬件设计 9 ② 逐次逼近型的 A/D 转换器 逐次逼近型 (也称逐位比较式 )的 A/D 转换器, 主要由逐次逼近寄存器 SAR、 D/A 转换器、比较器以及时序和控制逻辑等部分组成。 它的实质是逐次把设定的 SAR 寄存器中的数字量经 D/A 转换后得到电压 Vc 与待转换模拟电压 V。 进行比较。 比较时,先从 SAR 的最高位开始,逐次确定各位的数码应是 “1” 还是 “0” ,其工作过程如下:转换前,先将 SAR 寄存器各位清零。 转换开 始时,控制逻辑电路先设定 SAR 寄存器的最高位为“1” ,其余位为 “0” ,此试探值经 D/A 转换成电压 Vc,然后将 Vc 与模拟输入电压 Vx 比较。 如果 Vx≥Vc ,说明 SAR 最高位的 “1” 应予保留;如果 VxVc,说明 SAR 该位应予清零。 然后再对 SAR 寄存器的次高位置“1” ,依上述方法进行 D/A 转换和比较。 如此重复上述过程,直至确定SAR 寄存器的最低位为止。 过程结束后,状态线改变状态,表明已完成一次转换。 最后,逐次逼近寄存器 SAR 中的内容就是与输入模拟量 V 相对应的二进制数字量。 显然 A/D转换器的位 数 N 决定于 SAR 的位数和 D/A 的位数。 图 (b)表示四位 A/D 转换器的逐次逼近过程。 转换结果能否准确逼近模拟信号,主要取决于 SAR 和 D/A 的位数。 位数越多,越能准确逼近模拟量,但转换所需的时间也越长。 逐次逼近式的 A/D 转换器的主要特点是:转换速度较快,在 1— 100/μs 以内,分辨率可以达 18 位,特别适用于工业控制系统。 转换时间固定,不随输入信号的变化而变化。 抗干扰能力相对积分型的差。 例如,对 模拟输入信号采样过程中,若在采样时刻有一个干扰脉冲迭加在模拟信号上,则采样时,包括干扰信号 在内,都被采样和转换为数字量,这就会造成较大的误差,所以有必要采取适当的滤波措施。 本文所用为逐次逼近型的 A/D 转换器。 A/D转换器在扩展板的连接 A/D 转换器在扩展板的接法如图 28 所示,前三路通过电位器接到 电源上。 第二章 基于 ARM 和 QT 的多路信号监测系统硬件设计 10 图 26 ADC 电阻分压 第三章 嵌入式 linux 移植及驱动开发 11 第三章 嵌入式 linux移植及驱动开发 linux主要特征 ① 符合 POSIX 标准 POSIX 标准定义了一个最小的 Unix 操作系统接口,任何操作系统只有符合这一标准,才有可能运 行 Unix 程 序。 考虑到 Unix 具有丰富的应用程序,当今绝大多数操作系统都把满足 POSIX 标准作为实现 目标, Linux 也不例外,它完全支持 POSIX 标准。 另外,为了使 Unix System V 和 BSD 上 的程序能直接在 Linux 上运行, Linux 还增加了部分 System V 和 BSD 的系统接口,使 Linux 成为一个完善的 Unix 程序开发系统。 ② 支持多用户访问和多任务编程 Linux 是一个多用户操作系统,它允许多个用户同时访问系统而不会造成用户之间的相互干扰。 另外, Linux 还支持真正的多用户编程,一个用户可以创建多个进程,并使各个进程协同工作来完成用户的需求 . ③ 采用页式存储管理 页式存储管理使 Linux 能更有效地利用物理存储空间,页面的 换入换出为用户提供了更大的存储空间。 ④ 支持动态链接 用户程序的执行往往离不开标准库的支持,一般的系统往往采用静态链接方式 即在装配阶段就已将 用户程序和标准库链接好,这样,当多个进程运行时,可能会出现库代码在内存中有多个副本而浪费存储 空间的情况。 Linux 支持动态链接方式,当 运行时才进行库链接,如果所需要的库已被其它进程装入内存, 则不必再装入,否则才从硬盘中将库调入。 这样 能保证内存中的库程序代码是唯一的。 ⑤ 支持多种文件系统 Linux 能支持多种文件系统。 目前支持的文件系统有: EXT EXT、XIAFS、 ISOFS、 HPFS、 MSDOS、 UMSDOS、 PROC、 NFS、 SYSV、 MINIX、 SMB、UFS、 NCP、 VFAT、 AFFS。 Linux 最常用的文件系统是 EXT2,它的文件名长度可 达 255字符,并且还有许多特有的功能,使它比常规的 Unix 文件系 第三章 嵌入式 linux 移植及驱动开发 12 统更加安全。 ⑥ 支持 TCP/IP、 SLIP 和 PPP 在 Linux 中,用户可以使用所有的网 络服务,如网络文件系统、远程登录等。 SLIP 和 PPP 能支持串行线上 的 TCP/IP 协议的使用,这意味着用户可用一个高速 Modem 通过电话线连入 Inter 网中。 [10] 驱动程序开发 嵌入式 linux驱动程序开发方法 Linux 中的驱动设计是嵌入式 Linux 开发中十分重要的部分,它要求开发者不仅要熟悉 Linux 的内核机制、驱动程序与用户级应用程序的接口关系、考虑系统中对设备的并发操作等等,而且还要非常熟悉所开发硬件的工作原理。 这对驱动开发者提出了比较高的要求,这个实验主要是给大家进入驱动设计提供一个简单入门的一个实例,并不需要提供太多与硬 件相关的内容,这部分应该是通过仔细阅读芯片厂家提供的资料来解决。 驱动程序的作用是应用程序与硬件之间的一个中间软件层,驱动程序应该为应用程序展现硬件的所有功能,不应该强加其他的约束,对于硬件使用的权限和限制应该由应用程序层控制。 但是有时驱动程序的设计是跟所开发的项目相关的,这时就可能在驱动层加入一些与应用相关的设计考虑,主要是因为在驱动层的效率比应用层高,同时为了项目的需要可能只强化或优化硬件的某个功能,而弱化或关闭其他一些功能;到底需要展现硬件的哪些功能全都由开发者根据需要而定。 驱动程序有时会被多个进程同时 使用,这时我们要考虑如何处理并发的问题,就需要调用一些内核的函数使用互斥量和锁等机制。 驱动程序主要需要考虑下面三个方面:提供尽量多的选项给用户,提高驱动程序的速度和效率,尽量使驱动程序简单,使之易于维护。 [2] ADC在 ARM中的驱动开发 一、开发环境 主 机: redhat/ 开发板: 北京博创兴业科技有限公司开发的 UPNetARM2410S 实验仪器 编译器: 第三章 嵌入式 linux 移植及驱动开发 13 二、硬件原理分析 图 31 所示 S3C2410 内部 ADC 结构 图 31 S3C2410 内部 ADC 结构 我们从上面的结构图和数据手册可以知道,该 ADC 模块总共有 8 个通道可以进行模拟信号的输入,分别是 AIN0、 AIN AIN AIN YM、 YP、XM、 XP。 那么 ADC是怎么实现模拟信号到数字信号的转换呢。 首先模拟信号从任一通道输入,然后设定寄存器中预分频器的值来确定 AD 转换器 频率,最后 ADC 将模拟信号转换为数字信号保存到 ADC 数据寄存器 0 中(ADCDAT0),然后 ADCDAT0 中的数据可以通过中断或查询的方式来访问。 对于 ADC 的各寄存器的操作和注意事项请参阅数据手册。 S3C2410 的 ADC 及触摸屏控制寄存器以下有 5 种: ( 1) ADC 控制寄存器 : ADCCON。 该寄存器 各 参数描述见表 31。 表 31 ADC 控制寄存器 参数 描述 ENABLE_START 置 1:启动 ADC 转换 置 0:无操作 RESR_START 置 1:允许读操作启动 ADC 转换 置 0:禁止读操作启动ADC 转换 第三章 嵌入式 linux 移植及驱动开发 14 STDBM 置 1:将 ADC 置为闲置状态(模式) 置 0:将 ADC 置为正常操作状态 SEL_MUX 选择需要进行转换的 ADC 信道 PRSCVL ADC 转换时钟预分频参数 PRSCEN ADC 转换时钟使能 ECFLG ADC 转换完成标志位(只读) , 为 1: ADC 转换结束 为 0:ADC 转换进行中 ( 2) ADC触摸屏控制寄存器: ADCTSC。 该寄存器主要是通过触摸屏的各个控制引脚来决定触摸屏转换状态,使其进行坐标轴转换,或者进入中断状态,等待触摸屏终端。 各参数描述见表 32。 表 33 ADC 触摸屏控制寄存器 参数 描述 XY_PST 对 X/Y轴手动测量模式进行选择 AUTO_PST X/Y 轴的自动转换模式使能位 PULL_UP XP 端的上拉电阻使能位 XP_SEN 设置 nXPON 输出 状态 XM_SEN 设置 XMON 输出状态 YP_SEN 设置 nYPON 输出状态 YM_SEN 设置 YMON 输出状态 保留 这一位必须被设置为 0 ( 3) ADC延时寄存器: ADCDLY。 该寄存器是只读的,其中控制位都是标志位和结果位。 各参数描述见表 33。 表 33 ADC 延时寄存器 参数 描述 DEDLY 在普通转换模式,独立 X/Y 坐标转换模式 ,自动坐标转 第三章 嵌入式 linux 移植及驱动开发 15 换模式下, X/Y 坐标转换的延时时间。 在等待中断模式下,当触摸屏发生触摸中断时,该寄存器在数 ms 间隔内产生 INT_TC 中断。 ( 4) ADC 数据 寄存器 0: ADCDATA0。 该寄存器是只读的,其中控制位都是标志位和结果位。 该寄存器各参数描述见表 34。 表 34 ADC 数据寄存器 0 参数 描述 XPDATA X 轴转换资料寄存器 XY_PST 选择 X/Y 轴自动转换模式 AUTO_PST X/Y 轴自动转换使能位 UPDOWN 选择中断等待模式的类型 为 0:按下产生中断 为 1:释放产生中断 保留 保留位 ( 5) ADC 数据寄存器 1: ADCDATA1。 该寄存器是只读的,其中控制位都是标志位和结果位。 该寄存器各参数描述见表 35。 表 35 ADC 数 据寄存器 1 参数 描述 XPDATA X 轴转换资料寄存器 XY_PST 选择 X/Y 轴自动转换模式 AUTO_PST X/Y 轴自动转换使能位 UPDOWN 选择中断等待模式的类型 为 0:按下产生中断 为 1:释放产生中断 保留 保留位 第三章 嵌入式 linux 移植及驱动开发 16 图 32 ADC 接口电路图 上图是 UPNetARM2410S 上的 ADC应用实例,开发板通过一个 10K的电位器 (可变电阻 )来产生电压模拟信号,然后通过第一个通道 (即: AIN0)将 模拟信号输入 ADC。 [1,8] 三、实现 方法 ADC 设备在 Linux 中可以看做是 简单的字符设备 , 也可以当做是一混杂设备 (misc 设备 ),这里我们 作为 misc 设备来实现 ADC 的驱动。 注意:这里我们获取 AD转换后的数据将采用中断的方式,即当 AD转换完成后产生 AD 中断,在中断服务程序中来读取 ADCDAT0 的第 09 位的值 (即 AD 转换后的值 )。 建立驱动程序文件 ,实现驱动的 打开、读、写 和退出 static int s3c2410_adc_open(struct inode *inode, struct file *filp) //adc 打开句柄 { init_MUTEX(amp。 )。 init_wa。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。