基于ARM和QT的多路信号检测系统设计.docx
《基于ARM和QT的多路信号检测系统设计.docx》由会员分享,可在线阅读,更多相关《基于ARM和QT的多路信号检测系统设计.docx(46页珍藏版)》请在冰豆网上搜索。
![基于ARM和QT的多路信号检测系统设计.docx](https://file1.bdocx.com/fileroot1/2022-11/25/2429c946-254f-4cdf-b2be-0f336d20ea07/2429c946-254f-4cdf-b2be-0f336d20ea071.gif)
基于ARM和QT的多路信号检测系统设计
基于ARM和QT的多路信号检测系统设计
此文档为毕业设计,word格式下载后可随意编辑修改
2017年9月修订
摘要
随着嵌入式越来越受到重视,嵌入式系统近年来的发展有目共睹,嵌入式系统的应用越来越广泛。
无论是传统的工业监测、机械控制,还是新兴的移动通讯、数字娱乐,嵌入式系统正逐渐走进人们的生活生产的方方面面。
在工业检测方面,传统的监控系统主要以单片机为硬件载体进行设计,功能相对单一,可视化及拓展性有限。
随着Linux系统的不断升级换代,现在出现了以ARM芯片为载体,以Linux系统为软件平台设计出的新一代监控系统。
除了能实现原有单片机的功能外,其可视化更强,具备网络通信功能,是一台具备功能拓展更丰富的微型计算机。
本文将以北京博创兴业科技有限公司提供的UP-NetARM2410-S实验仪器为硬件载体,对监测系统的设计进行研究和应用。
系统平台使用的是Linux2.4.18的内核,GUI首次以Qt为底层图形模块,用C++和Qt图形用户界面类库开发图形数据一体化监控平台。
本文先从硬件平台设计入手,根据要求对硬件设备进行了解,设计了功能模块,在软件部分移植了Linux操作系统平台,构建了开发环境,就数模转换、触摸屏驱动程序进行编程,最后详述在了Qt下,如何使用C++语言设计监控系统图形界面。
最后展现了系统运行效果,并提出了改进意见。
运行效果表明,设计的监控系统是有效和实时的。
关键词:
嵌入式系统Linux驱动Qt
Abstract
Withtheincreasingimportanceofembeddedtechnology,thedevelopmentofembeddedsystemsforalltoseeinrecentyears,embeddedsystemapplicationsincreasinglybroad.Whetherintraditionalindustrialmonitoring,mechanicalcontrol,ortheemergingmobilecommunications,digitalentertainment,embeddedsystemsaregraduallymovedintoallaspectsofproductionandlivesofthepeople.Intheindustrialtesting,thetraditionalembeddedcontrolsystemsprimarilyforthesingle-chipmicrocomputerhardwarevectordesignfunctionrelativelysingle,visualization,andlimitedscalability.WiththeLinuxsystemconstantlyupgradingandupdating,andnowappearedtoARMchipcarrierandLinuxsystemssoftwareplatformdesignedforanewgenerationofmonitoringsystem.Inadditiontoachievingtheoriginalmicrocontrollerfunctions,visualizationsstronger,equippedwiththenetworkcommunicationfunctionisafunctionofdevelopingamoreabundantmicro-computer.
Thispaper,basedonUP-NetARM2410-SexperimentinstrumentprovidedbytheBeijing Universal Pioneering Technology Co.,LTD.,designsamonitoringsystemtoconductresearchandapplication.SystemplatformisLinux2.4.18kernel,GUIforthefirsttimeinthebottomQtgraphicsmodule,usingC++andQtgraphicaluserinterfacelibrarymonitorthedevelopmentofgraphicaldataintegrationplatform.
Thisarticlefirststartwiththehardwareplatformdesign,requiredtounderstandthehardwaredevicesdesignedmodules,portedinthesoftwarepartoftheLinuxoperatingsystemplatform,buildthedevelopmentenvironment,howtobuildadevelopmentenvironment,andwereontheA/Dconversion,touchscreendriverprogramming,thefinaldetailsinQt,howtouseC++languagedesignedmonitoringsystemgraphicalinterface.Asanapplicationofresearchpapers,thepapermainlyonthesoftwaredesign,whilethediagnosisandmonitoringtechnologyprovidesasimilarsoftwaredesignanddevelopmentofthereferencemodel.
Thestudyprovedtobeeffectiveandreal-time.
Keywords:
Embeddedsystem,Linux,Driver,Qt
第一章前言
1.1课题研究背景和意义
在现在日益信息化的社会中,计算机和网络已经全面渗透到日常生活的每一个角落。
对于我们每个人,需要的已经不再仅仅是那种放在桌上处理文档,进行工作管理和生产控制的计算机"机器";各种各样的新型嵌入式系统设备在应用数量上已经远远超过通用计算机。
而在工业和服务领域中,使用嵌入式技术的数字机床,智能工具,工业机器人,服务机器人也将逐渐改变传统的工业和服务方式。
目前嵌入式系统技术已经成为了最热门的技术之一,吸引了大批的优秀人才投入其中。
嵌入式系统可以称为后PC时代和后网络时代的新秀。
由于嵌入式系统采用的是微处理器,实现相对单一的功能,采用独立的操作系统,所以往往不需要大量的外围器件。
因而在体积上,功耗上有其自身的优势。
嵌入式在应用中拥有广阔的前景!
1.2嵌入式技术发展现状与未来
嵌入式系统是将计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物,是一门综合技术学科。
由于空间和各种资源相对不足,嵌入式系统的硬件和软件都必须高效率地设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能,这样才能在具体应用中对处理器的选择更具有竞争力。
作为软硬件高度结合的产物。
为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存贮于磁盘等载体中。
片上系统,板上系统的实现,使得以pda等为代表的这类产品拥有更加熟悉的操作界面和操作方式,比着传统的商务通等功能更加完善,实用。
因为嵌入式系统往往和具体应用有机地结合在一起,它的升级换代也是和具体产品同步进行,因此嵌入式系统产品一旦进入市场,具有较长的生命周期。
从软件方面讲,软件功能趋向专一化。
掌上设备的各种通讯,管理软件需求量极大,开发环境齐备,可以完全在PC机上进行,通过软件模拟调试,等到模拟通过再下载入机器,而且因为可以使用大量的PC机的API函数,SDK,所以开发过程是在已有的成熟技术基础上进行,相对简单。
硬件方面,不仅有各大公司的微处理器芯片,还有用于学习和研发的各种配套开发包。
目前低层系统和硬件平台经过若干年的研究,已经相对比较成熟,实现各种功能的芯片应有尽有。
而且巨大的市场需求给我们提供了学习研发的资金和技术力量。
从软件方面讲,也有相当部分的成熟软件系统。
国外商品化的嵌入式实时操作系统,已进入我国市场的有WindRiver、Microsoft、QNX和Nuclear等产品。
我国自主开发的嵌入式系统软件产品如科银(CoreTek)公司的嵌入式软件开发平台DeltaSystem,它不仅包括DeltaCore嵌入式实时操作系统,而且还包括LamdaTools交叉开发工具套件、测试工具、应用组件等;此外,中科院也推出了Hopen嵌入式操作系统(虽然还不够完善)。
同时由于是研究热点,所以我们可以在网上找到各种各样的免费资源,从各大厂商的开发文档,到各种驱动,程序源代码,甚至很多厂商还提供微处理器的样片。
这对于我们从事这方面的研发,无疑是个资源宝库。
对于软件设计来说,不管是上手还是进一步开发,都相对来说比较容易。
这就使得很多生手能够比较快的进入研究状态,利于发挥大家的积极创造性。
[6]
嵌入式系统是这个后PC时代的擎天之柱。
我们有理由相信,未来的电子技术就是嵌入式系统技术的天下。
1.3课题研究内容
嵌入式系统逐渐成为IT业界技术研究和产品开发的热点。
其重要性随着手持设备的普及而越来越突出。
本文通过对嵌入式linux和qt的分析与研究,在Qt和ADC自定义驱动的基础上,开发了基于S3C2410和ADC实现对多路模拟量信号的实时监测系统,利用QT和液晶实现图形化显示数据。
一体化的图形界面非常方便用户观测,充分地体现了嵌入式系统的优势。
此外Qt作为一个GUI解决方案,可用于对GUI大小要求苛刻的系统中。
第二章基于ARM和QT的多路信号监测系统硬件设计
2.1系统组成
信号监测系统设计包括信号采集模块、数据处理功能电路模块、以及液晶显示模块,如图2-1所示。
这些模块使得该设备拥有强大的功能,集信号采集、数据处理、参数显示为一体,用户可方便的对多路信号进行实时监测。
图2-1系统概要框图
2.2S3C2410介绍
S3C2410处理器是Samsung公司基于ARM公司的ARM920T处理器内核,采用0.18um制造工艺的32位微控制器。
该处理器拥有:
独立的16KB指令Cache和16KB数据Cache,MMU,支持TFT的LCD控制器,NAND闪存控制器,3路UART,4路DMA,4路带PWM的Timer,I/O口,RTC,8路10位ADC,TouchScreen接口,IIC-BUS接口,IIS-BUS接口,2个USB主机,1个USB设备,SD主机和MMC接口,2路SPI。
S3C2410处理器最高可运行在203MHz。
[1,7,11]
图2-2S3C2410资源结构图
CPU:
S3C2410X芯片是基于ARM920T内核,主频200M,提供如下功能:
1.8V内核电压/电源管理有Normal、Slow、Idle、Stop和Power-off模式
3.3V内存电压、3.3V的处理器IO电压,处理器拥有16KBI-Cache,16KBD-Cache,和MMU
外部SDRAM控制器
集成LCD控制器可以支持4KcolorSTNand64KcolorTFT,1个通道的专用DMA用于显存刷新
有外部请求引脚的4通道DMA,3通道的UART,支持IrDA1.016-byteFIFO,1个通道的SPI
1个多主IIC总线控制器,一个IIS总线控制器
SDHost支持1.1的多媒体协议
两个USB1.1控制器,可以配置成为host或device
4通道PWM和一通道的内部定时器/8通道10bitADC和触摸屏控制器
看门狗定时器/117个外部通用IO、24个外部中断源
其中本文主要显示应用ADC和LCD资源!
UP-NetARM2410-S实验仪器硬件配置如下表:
表2-1UP-NetARM2410-S实验仪器硬件配置
配置名称
型号
说明
CPU
ARM920T结构芯片三星S3C2410X
工作平率203MHz
FLASH
SAMSUNGK9F1208
64MNAND
SDRAM
HY57V561620AT-H
32M*2=64M
EtherNet网卡
AX88796
两片,10/100M自适应
LCD
LQ080V3DG01
8寸16bitTFT
触摸屏
SX-080-W4R-FB
FM7843驱动
LED
ZLG7290
四个共阴极LED
USB接口
4个HOST/1个DEVICE
由AT43301构成USBHUB
UART/IrDA
2个RS232,1个RS485,1个IrDA
从处理器的UART2引出
AD
由S3C2410芯片出
3个电位器控制输入
AUDIO
IIS总线,UDA1341芯片
44.1KHz音频
拓展卡插槽
168PinEXPORT
总线直接拓展
GPS_GORS拓展板
SIMCOM的SIM100-E模块
支持双道语音通信
IDE/CF卡插座
笔记本硬盘,CF卡
PCMCIA和SD卡插座
PCMCIA型号为DWL-650
PS2
PC键盘和鼠标
由ATMEGA8单片机控制
IC卡座
AT24CXX系列
由ATMEGA8单片机控制
DC/STEP电机
DC由PWM控制,STEP由74HC573控制
CANBUS
由MCP2510和TJA1050构成
DoubleDA
MAX504
两个10位DAC端口
调试接口
JTAG
14针、20针
UP-NetARM2410-S试验箱图如下:
图2-3UP-NetARM2410-S试验箱
图2-4UP-NetARM2410-S
2.3设计方案
图2-5系统结构图
如图2-5所示,电流电压信号经过电阻分压简单滤波后送入S3C2410ADC模块,S3C2410接受电阻触摸屏输入和鼠标输入,并送显示。
2.4ADC硬件设计
2.4.1ADC转换器
A/D转换器是模拟信号源和CPU之间联系的接口,它的任务是将连续变化的模拟信号转换为数字信号,以便计算机和数字系统进行处理、存储、控制和显示。
在工业控制和数据采集及许多其他领域中,A/D转换是不可缺少的。
A/D转换器有以下类型:
逐位比较型、积分型、计数型、并行比较型、电压-频率型,主要应根据使用场合的具体要求,按照转换速度、精度、价格、功能以及接口条件等因素来决定选择何种类型。
[1]常用的有以下两种:
双积分型的A/D转换器
双积分式也称二重积分式,其实质是测量和比较两个积分的时间,一个是对模拟输入电压积分的时间T0,此时间往往是固定的;另一个是以充电后的电压为初值,对参考电源Vref反向积分,积分电容被放电至零所需的时间T1。
模拟输入电压Vi与参考电压VRef之比,等于上述两个时间之比。
由于VRef、T0固定,而放电时间T1可以测出,因而可计算出模拟输入电压的大小(VRef与Vi符号相反)。
由于T0、VRef为已知的固定常数,因此反向积分时间T1与输入模拟电压Vi在T0时间内的平均值成正比。
输入电压Vi愈高,VA愈大,T1就愈长。
在T1开始时刻,控制逻辑同时打开计数器的控制门开始计数,直到积分器恢复到零电平时,计数停止。
则计数器所计出的数字即正比于输入电压Vi在T0时间内的平均值,于是完成了一次A/D转换。
由于双积分型A/D转换是测量输入电压Vi在T0时间内的平均值,所以对常态干扰(串摸干扰)有很强的抑制作用,尤其对正负波形对称的干扰信号,抑制效果更好。
双积分型的A/D转换器电路简单,抗干扰能力强,精度高,这是突出的优点。
但转换速度比较慢,常用的A/D转换芯片的转换时间为毫秒级。
例如12位的积分型A/D芯片ADCETl2BC,其转换时间为lms。
因此适用于模拟信号变化缓慢,采样速率要求较低,而对精度要求较高,或现场干扰较严重的场合。
例如在数字电压表中常被采用。
逐次逼近型的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”应予保留;如果Vx然后再对SAR寄存器的次高位置“1”,依上述方法进行D/A转换和比较。
如此重复上述过程,直至确定SAR寄存器的最低位为止。
过程结束后,状态线改变状态,表明已完成一次转换。
最后,逐次逼近寄存器SAR中的内容就是与输入模拟量V相对应的二进制数字量。
显然A/D转换器的位数N决定于SAR的位数和D/A的位数。
图2.4.1(b)表示四位A/D转换器的逐次逼近过程。
转换结果能否准确逼近模拟信号,主要取决于SAR和D/A的位数。
位数越多,越能准确逼近模拟量,但转换所需的时间也越长。
逐次逼近式的A/D转换器的主要特点是:
转换速度较快,在1—100/μs以内,分辨率可以达18位,特别适用于工业控制系统。
转换时间固定,不随输入信号的变化而变化。
抗干扰能力相对积分型的差。
例如,对模拟输入信号采样过程中,若在采样时刻有一个干扰脉冲迭加在模拟信号上,则采样时,包括干扰信号在内,都被采样和转换为数字量,这就会造成较大的误差,所以有必要采取适当的滤波措施。
本文所用为逐次逼近型的A/D转换器。
2.4.2A/D转换器在扩展板的连接
A/D转换器在扩展板的接法如图2-8所示,前三路通过电位器接到3.3v电源上。
图2-6ADC电阻分压
第三章嵌入式linux移植及驱动开发
3.1linux主要特征
符合POSIX1003.1标准
POSIX1003.1标准定义了一个最小的Unix操作系统接口,任何操作系统只有符合这一标准,才有可能运行Unix程序。
考虑到Unix具有丰富的应用程序,当今绝大多数操作系统都把满足POSIX1003.1标准作为实现目标,Linux也不例外,它完全支持POSIX1003.1标准。
另外,为了使UnixSystemV和BSD上的程序能直接在Linux上运行,Linux还增加了部分SystemV和BSD的系统接口,使Linux成为一个完善的Unix程序开发系统。
支持多用户访问和多任务编程
Linux是一个多用户操作系统,它允许多个用户同时访问系统而不会造成用户之间的相互干扰。
另外,Linux还支持真正的多用户编程,一个用户可以创建多个进程,并使各个进程协同工作来完成用户的需求.
采用页式存储管理
页式存储管理使Linux能更有效地利用物理存储空间,页面的换入换出为用户提供了更大的存储空间。
支持动态链接
用户程序的执行往往离不开标准库的支持,一般的系统往往采用静态链接方式--即在装配阶段就已将用户程序和标准库链接好,这样,当多个进程运行时,可能会出现库代码在内存中有多个副本而浪费存储空间的情况。
Linux支持动态链接方式,当运行时才进行库链接,如果所需要的库已被其它进程装入内存,则不必再装入,否则才从硬盘中将库调入。
这样能保证内存中的库程序代码是唯一的。
支持多种文件系统
Linux能支持多种文件系统。
目前支持的文件系统有:
EXT2、EXT、XIAFS、ISOFS、HPFS、MSDOS、UMSDOS、PROC、NFS、SYSV、MINIX、SMB、UFS、NCP、VFAT、AFFS。
Linux最常用的文件系统是EXT2,它的文件名长度可达255字符,并且还有许多特有的功能,使它比常规的Unix文件系统更加安全。
支持TCP/IP、SLIP和PPP
在Linux中,用户可以使用所有的网络服务,如网络文件系统、远程登录等。
SLIP和PPP能支持串行线上的TCP/IP协议的使用,这意味着用户可用一个高速Modem通过电话线连入Internet网中。
[10]
3.2驱动程序开发
3.2.1嵌入式linux驱动程序开发方法
Linux中的驱动设计是嵌入式Linux开发中十分重要的部分,它要求开发者不仅要熟悉Linux的内核机制、驱动程序与用户级应用程序的接口关系、考虑系统中对设备的并发操作等等,而且还要非常熟悉所开发硬件的工作原理。
这对驱动开发者提出了比较高的要求,这个实验主要是给大家进入驱动设计提供一个简单入门的一个实例,并不需要提供太多与硬件相关的内容,这部分应该是通过仔细阅读芯片厂家提供的资料来解决。
驱动程序的作用是应用程序与硬件之间的一个中间软件层,驱动程序应该为应用程序展现硬件的所有功能,不应该强加其他的约束,对于硬件使用的权限和限制应该由应用程序层控制。
但是有时驱动程序的设计是跟所开发的项目相关的,这时就可能在驱动层加入一些与应用相关的设计考虑,主要是因为在驱动层的效率比应用层高,同时为了项目的需要可能只强化或优化硬件的某个功能,而弱化或关闭其他一些功能;到底需要展现硬件的哪些功能全都由开发者根据需要而定。
驱动程序有时会被多个进程同时使用,这时我们要考虑如何处理并发的问题,就需要调用一些内核的函数使用互斥量和锁等机制。
驱动程序主要需要考虑下面三个方面:
提供尽量多的选项给用户,提高驱动程序的速度和效率,尽量使驱动程序简单,使之易于维护。
[2]
3.2.2ADC在ARM中的驱动开发
一、开发环境
主 机:
redhat/linux2.4.2
开发板:
北京博创兴业科技有限公司开发的UP-NetARM2410-S实验仪器
编译器:
arm-linux-gcc-4.3.2
二、硬件原理分析
图3-1所示S3C2410内部ADC结构
图3-1S3C2410内部ADC结构
我们从上面的结构图和数据手册可以知道,该ADC模块总共有8个通道可以进行模拟信号的输入,分别是AIN0、AIN1、AIN2、AIN3、YM、YP、XM、XP。
那么ADC是怎么实现模拟信号到数字信号的转换呢?
首先模拟信号从任一通道输入,然后设定寄存器中预分频器的值来确定AD转换器频率,最后ADC将模拟信号转换为数字信号保存到ADC数据寄存器0中(ADCDAT0),然后ADCDAT0中的数据可以通过中断或查询的方式来访问。
对于ADC的各寄存器的操作和注意事项请参阅数据手册。
S3C2410的ADC及触摸屏控制寄存器以下有5种:
(1)ADC控制寄存器:
ADCCON。
该寄存器各参数描述见