欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    基于QT设计的串口通信系统实验报告.docx

    • 资源ID:11216510       资源大小:320.97KB        全文页数:30页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于QT设计的串口通信系统实验报告.docx

    1、基于QT设计的串口通信系统实验报告串口通信系统姓 名: 马 亮 学 院: 电气与信息工程学院 专业班级: 物联网工程2015-01班 学 号: 2015444139 指导老师: 易 军 成 绩: 科技学院二零一八年六月大作业规则及要求规则1:同学们做一个题目,可以自拟题目,但必须经过任课老师同意,中途不得更改题目。规则2: 任课老师将列出每个题目的具体功能及分值,完成后获得对应分数,发现代码抄袭或者现场答辩无法解释,记0分。规则3: 鼓励增加新功能,并给予适当加分。规则4: 大作业报告除遵守模板格式外,应按照需求分析、系统设计、详细设计、系统测试四个部分组织,其中需求分析应将本项目的功能需求、

    2、性能指标、界面、安全等因素考虑在;系统设计应多画流程图说明设计意图;详细设计应包括关键代码或接口定义,数据表定义等;系统测试应包括功能实现情况(截图)、各性能指标完成情况(表格)。规则5: 所有题目应以TQ2440为平台进行开发应用,否则答辩成绩扣30分。摘要嵌入式linux是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。嵌入式linux既继承了Internet上无限的开放源代码资源,又具有嵌入式操作系统的特性。随着Internet的发展和后PC时代的到来,嵌入式系统以其可靠性强、体积小、专用性、成本低等特性得到日益广泛的应用。目前嵌入式系统技术已经

    3、成了最热门的技术之一。嵌入式Linux是嵌入式操作系统的一个新成员,其最大的特点是源代码公开并且遵循GPL协议,近几年来已成为研究热点。目前正在开发的嵌入式系统中,有近50%的项目选择Linux作为嵌入式操作系统。新一代嵌入式计算系统的功能集成和应用模式使之迅速向网络化嵌入计算的方向发展,标准和统一的TCP/IP通信协议是独立于任何厂家的硬件的,因此嵌入式环境下的适时网络通信成为嵌入计算技术研究的重点和热点。本文通过给予TQ2440的嵌入式串口通信的实现,按照嵌入式系统的软、硬件结构组成,较为详细地介绍了串口通信的硬件电路和软件实现方法。关键词:嵌入式 Linux操作系统 串口通信 TQ244

    4、0前言串口通信是简单嵌入式系统的一个应用,串口通信是指外设和计算机间,通过数据信号线、地线、控制线等,按位进行传输数据的一种通信方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可定制,适用于不同应用场合,对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器,外围硬件设备,嵌入式操作系统,用户应用程序四个部分组成。用于实现对其他设备的控制,监视或管理等功能。嵌入式系统已经广泛应用与科学研究、工业制造、军事技术等领域,人们常用的手机,智能家电,GPS等均是嵌入式系统的典型代

    5、表。 1 嵌入式串口通信概述 所谓串口通信,是指外设和计算机间使用一根数据信号线(另外需要地线),数据在一根数据信号线上一位一位地进行传输,每一位数据都占据一个固定的时间长度。串口传输是二进制代码序列在一条信道上以位为单位,按时间顺序且按位传输的通信方式。串行传输时,发送端按位发送,接收端按位接受,同时还要对所传输的位加以确认,所以收发双方要采用同步措施,否则接收端将不能正确区分出所传输的数据。串口通信不但能实现计算机与嵌入式开发板之间的数据传输,而且还能实现计算机对嵌入式开发板的控制。若采用普通单片机,对外部设备的访问就需要利用复杂的汇编语言或者使用C51自己编写设备的初始化以及读写访问程序

    6、,这样的过程不仅复杂,而且不太利于大规模的开发与设计。ARM与普通单片机相比,具有开发简单、灵活,而且性能稳定、功能易于扩展等一系列的优势,因而在各个领域的嵌入式系统中得到广泛的应用。将Linux移植到ARM嵌入式处理器后,可以利用操作系统中提供的系统调用把串口及其他外设当成普通文件进行操作,读写方便,在进行相对应的开发时可以提高系统编程效率,而且还可以简化调试的复杂程度。1.1嵌入式串口通信的原理串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数从CPU经过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。串口是系统资源的一部分,应用程序要使用串口

    7、进行通信,必须在使用之前向操作系统提出申请打开串口,通信完成后必须释放资源,即关闭串口。1.2嵌入式串口通信的开发工具此次开发采用的硬件平台是以TQ2440为平台,ARM2410S嵌入式开发板作为被查询服务端,PC机为客户端和C语言来实现本次系统的开发。客户端在Linux下开发,系统基于客户/服务器结构来实现客户端和服务端之间通过串口通信。1.2.1 TQ2440硬件平台简介TQ2440是由天嵌计算机科技打造的一款开发板,如下图1.1所示。其以稳定的性能,过硬的质量,丰富的扩展接口,优质的售后服务和技术支持,赢得众多企业的青睐和支持。开创众多第一,引领嵌入式潮流。图1.1移植最新的Linux

    8、2.6.30 系统到TQ2440 开发板,并配有相关移植教程。将Nandflash 升级为256MB(核心板Nandflash支持升级到1GB,SDRAM 可扩展到128MB)。推广开源的厂家,除了提供平台性软件,还免费提供厂家移植教程,并可在网上下载,非TQ2440 的用户一样受益。不断更新软件,提供Wince 5.0/6.0原生BSP 包,wince 开发教程,QT 开发教程等厂家一手的移植教程(并在不断更新)。TQ2440硬件特性如下表所示。TQ2440开发板底板硬件特性 说明串口板载五线异步串行口(UART0),可外接串口扩展板引出另两个串口(UART1和UART2);WINCE和Li

    9、nux均有三串口驱动。网络接口板载100M DM9000网卡,带联接和传输指示灯;USB接口USB HOST接口;USB Device接口。存储接口一个SD卡接口,支持32 G SD卡。音频接口采用芯片UDA1341,立体声音频输出,可录音。LCD接口集成了4线电阻式触摸屏接口;支持800600、640480、240320、320240等不同分辨率的TFT LCD,(目前实测最大的屏10.4寸屏,800600的分辨率),可接VGA转接板Camera130W像素摄像头(标配驱动),可支持AV信号视频输入或更高像素的摄像头时钟源部实时时钟(带有后备锂电池)调试JtagJTAG接口,支持ADS1.2

    10、,keil等软件的单步调试功能复位电路采用专业复位芯片811进行复位,稳定可靠电源接口高电流带载的5V电源供电,带电源开关指示灯AD功能可调电阻接到ADC引脚上用来验证模数转换IIC功能提供AT24C02的EEPROM验证IIC功能蜂鸣器测试PWM功能的蜂鸣器用户按键4个用户按键,使用外部中断用户LED灯4个用户LED灯,使用GPIO口控制底板尺寸105mm128mm1.2.2 ARM简介ARM(AdvancedRISCMachines),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。ARM是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低

    11、的RISC处理器、相关技术及软件。技术具有性能高、成本低和能耗省的特点。适用于多种领域,比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等。ARM将其技术授权给世界上许多著名的半导体、软件和OEM厂商,每个厂商得到的都是一套独一无二的ARM相关技术及服务。利用这种合伙关系,ARM很快成为许多全球性RISC标准的缔造者。1991 年 ARM 公司成立于英国剑桥,主要出售芯片设计技术的授权。采用 ARM技术知识产权( IP )核微处理器,即我们通常所说的 ARM 微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于 ARM 技术的微处理器应用约占据了 32

    12、 位 RISC 微处理器 75 %以上的市场份额, ARM 技术正在逐步渗入到我们生活的各个领域。ARM 公司是专门从事基于 RISC 技术芯片设计开发的公司,作为知识产权供应商,本身不直接从事芯片生产,靠转让设计许可由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM公司购买其设计的 ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的 ARM 微处理器芯片。目前,全世界有几十家大的半导体公司都使用 ARM 公司的授权,因此既使得 ARM 技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,使产品更容易进入市场被消费者所接受,更具有竞争力。ARM微

    13、处理器一般具有如下特点:(1)体积小、低功耗、低成本、高性能;(2)支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8/16位器件;(3)大量使用寄存器,指令执行速度更快;(4)大多数数据操作都在寄存器中完成;(5)寻址方式灵活简单,执行效率高;(6)指令长度固定。1.2.3 Linux系统简介Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,它的基本思想有两点:第一,

    14、一切都是文件;第二,每个软件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统核而言,都被视为拥有各自特性或类型的文件。至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近,所以说它是一个性能稳定的多用户网络操作系统。Linux操作系统诞生于1991 年10 月5 日。Linux存在着许多不同的Linux版本,但它们都使用了Linux核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。Linux一般有四个主要部分:核、Shell、

    15、文件结构和实用工具。核是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序。它从用户那里接受命令并把命令送给核去执行。(2)Linux ShellShell是系统的用户界面,提供了用户与核进行交互操作的一种接口。它接收用户输入的命令并把它送入核去执行。实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。(3)Linux文件结构文件结构是文件存放在磁盘等存储设备上的组织方法。主要体现在对文件和目录的组织上。目录提供了管理文件的一个方便而有效的途径。我们能够从一个目录切

    16、换到另一个目录,而且可以设置目录和文件的权限,设置文件的共享程度。使用Linux,用户可以设置目录和文件的权限,以便允许或拒绝其他人对其进行访问。(4)Linux 实用工具标准的Linux系统都有一套叫做实用工具的程序,它们是专门的程序,例如编辑器、执行标准的计算操作等。用户也可以产生自己的工具。严格来讲,Linux这个词本身只表示Linux核,但实际上人们已经习惯了用Linux来形容整个基于Linux核,并且使用GNU 工程各种工具和数据库的操作系统。Linux的主要特性有以下几点:(1)完全免费Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是

    17、其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux吸收了无数程序员的精华,不断壮大。 (2)完全兼容POSIX1.0标准这使得可以在Linux下通过相应的模拟器运行常见的DOS、Windows的程序。这为用户从Windows转到Linux奠定了基础。许多用户在考虑使用Linux时,就想到以前在Windows下常见的程序是否能正常运行,这一点就消除了他们的疑虑。 (3)多用户、多任务Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在电脑

    18、最主要的一个特点,Linux可以使多个程序同时并独立地运行。(4)良好的界面Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。在X-Window环境中就和在Windows中相似,可以说是一个Linux版的Windows。 (5)支持多种平台Linux可以运行在多种硬件平台上,如具有x86、680x0、SPARC、Alpha等处理器的平台。此外Linux还是一种嵌入式操作系统,可以运行在掌上电脑、机顶盒或游戏机上。2001年1月份发布的Linux 2.4版核已经能

    19、够完全支持Intel 64位芯片架构。同时Linux也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。1.3 嵌入式串口通信的基本任务通信接口的基本任务是:(1)实现数据格式化:因为来自CPU的是普通的并行数据,所以,接口电路应具有实现不同串行通信方式下的数据格式化的任务。在异步通信方式下,接口自动生成起止式的帧数据格式。在面向字符的同步方式下,接口要在待传送的数据块前加上同步字符。(2)进行串并转换:串行传送,数据是一位一位串行传送的,而计算机处理数据是并行数据。所以当数据由计算机送至数据发送器时,首先把串行数据转换为并行数才能送入计算机处理。因此串并转换是串行接口电路的重要任务。

    20、(3)控制数据传输速率:串行通信接口电路应具有对数据传输速率波特率进行选择和控制的能力。(4)进行错误检测:在发送时接口电路对传送的字符数据自动生成奇偶校验位或其他校验码。在接收时,接口电路检查字符的奇偶校验或其他校验码,确定是否发生传送错误。(5)进行TTL与EIA电平转换:CPU和终端均采用TTL电平及正逻辑,它们与EIA采用的电平及负逻辑不兼容,需在接口电路中进行转换。(6)提供EIA-RS-232C接口标准所要求的信号线:远距离通信采用MODEM时,需要9根信号线;近距离零MODEM方式,只需要3根信号线。这些信号线由接口电路提供,以便与MODEM或终端进行联络与控制。1.4 嵌入式串

    21、口通信协议及实现串行端口的本质功能是作为CPU和串行设备间的编码转换器,一般微机都配有通信适配器,使计算机能够与其他具有RS-232C串口的计算机或设备进行通信。本系统主要目的是实现宿主机与目标机之间的近距离串行通信,采用的宿主机是PC机,而目标机是RAM架构的开发板。本系统中目标机的开发板是ARM2410S,串口线采用常用的RS-232C型接口模式,能实现计算机与开发板间的数据传输与控制。嵌入式串口通信采用EIA RS-232C标准。2 需求分析2.1 功能需求本系统基于客户/服务器结构,ARM2410S嵌入式开发板作为被查询服务端,PC机为客户端。客户端在Linux下开发,客户端和服务端之

    22、间通过串口进行通信,可查询相应的容。2.2 性能指标(1) 串口通信协议:PC与开发板通信报文基本格式如下:其中:头(header):4个字节的0xff。长度(len):2个字节的信息长度,从信息类型开始,到信息容结束,采用网络字节顺序长度校验和(lcs):1个字节的长度校验和。len0 + len1 + lcs = 0。信息类型(type):1个字节,0x02。信息容(data):n字节的信息容。信息校验和(dcs):1个字节的信息容校验和。type + data0 + data1 + + data(n-1) + dcs = 0。信息类型分配如下表所示:0x00查询0x01诊断(保留)0x0

    23、2下载参数(保留)PC发送给开发板的基本格式如下:开发板反馈给PC的基本格式如下:系统必须支持的查询命令如下表所示: 说明命令字响应字说明开发板ID设置0x000x01开发板唯一编号开发板MAC地址设置0x020x03本机MAC地址本机IP、掩码设置、网关IP设置0x040x05本机IP、掩码、网关设置开发板密码设置0x060x07登录密码网络连接方式设置0x080x09只允许下载局域网0x4c(L)、 或者GRPS 0x47(G)两种方式蜂鸣器开关设置0x0a0x0b打开 0x4e(N)或者关闭0x46(F)两种方式LCD对比度设置0x0c0x0d合法值在0x000x3f之间(供参考)开发板

    24、CPU配置0x0e0x0f芯片型号(2)QT查询界面:界面包括分类显示区域(含保留类型),每种查询表项可选择或者输入,其返回结果能正确显示到文本框。(3)串口驱动程序实现。3 系统设计3.1 系统功能设计系统功能如下图3.1所示。图3.1 系统功能图3.2 通信流程设计利用串口进行通信的流程图如下3.2所示。图3.2串口通信流程图4 详细设计4.1 设置串口属性1、保持原先串口设置为了安全起见和以后调试程序方便,可以先保存原先串口的配置,在这里 可以使用函数 tcgetattr(fd, &old_cfg)。该函数得到 fd 指向的终端的配置参数,并将它 们保存于 termios 结构变量 ol

    25、d_cfg 中。该函数还可以测试配置是否正确、该串口是否 可用等。若调用成功,函数返回值为 0,若调用失败,函数返回值为-1,其使用如下 所示: if(tcgetattr(fd, &old_cfg) != 0) perror(tcgetattr); return -1;2、激活选项 CLOCAL 和 CREAD 分别用于本地连接和接受使能,因此,首先要通过位掩码的方式激活这两个选项。 newtio.c_cflag |= CLOCAL | CREAD; 调用 cfmakeraw()函数可以将终端设置为原始模式,在后面的实例中,采用原始模式进行串口数据通信。 cfmakeraw(&new_cfg)

    26、; 3设置波特率设置波特率有专门的函数,用户不能直接通过位掩码来操作。设置波特率的主要函数有:cfsetispeed()和 cfsetospeed()。这两个函数的使用很简单,如下所示:cfsetispeed(&new_cfg, B115200); cfsetospeed(&new_cfg, B115200); 一般地,用户需将终端的输入和输出波特率设置成一样的。这几个函数在成功时返回 0,失败时返回-1。4设置字符大小 特率不同,设置字符大小并没有现成可用的函数,需要用位掩码。一般首先去除数据位中的位掩码,再重新按要求设置。如下所示: new_cfg.c_cflag &= CSIZE; /*

    27、 用数据位掩码清空数据位设置 */ new_cfg.c_cflag |= CS8;5设置奇偶校验位 校验位需要用到 termios 中的两个成员:c_cflag 和 c_iflag。首先要激活 c_cflag 中的校验位使能标志 PARENB 和是否要进行偶校验,同时还要激活 c_iflag 中 的对于输入数据的奇偶校验使能(INPCK)。无校验位,代码如下: new_cfg.c_cflag &= PARENB; 校验时,代码如下所示:new_cfg.c_cflag |= (PARODD | PARENB); new_cfg.c_iflag |= INPCK; 而使能偶校验时,代码如下所示:n

    28、ew_cfg.c_cflag |= PARENB;new_cfg.c_cflag &= PARODD; /* 清除偶校验标志,则配置为奇校验*/ new_cfg.c_iflag |= INPCK;6设置停止位设置停止位是通过激活 c_cflag 中的 CSTOPB 而实现的。若停止位为一个,则清除CSTOPB,若停止位为两个,则激活 CSTOPB。以下分别是停止位为一个和两个比特时的代码: new_cfg.c_cflag &= CSTOPB; /* 将停止位设置为一个比特 */ new_cfg.c_cflag |= CSTOPB; /* 将停止位设置为两个比特 */7设置最少字符和等待时间在一

    29、般的情况下,可以设置设置为阻塞等待,直read到数据才返回 termios_new.c_ccVTIME = 0; termios_new.c_ccVMIN = 4;8清除串口缓冲由于串口在重新设置之后,需要对当前的串口设备进行适当的处理,这时就可调用在中声明的 tcdrain()、tcflow()、tcflush()等函数来处理目前串口缓冲中的数据,它们的格式如下所示。 int tcdrain(int fd); /* 使程序阻塞,直到输出缓冲区的数据全部发送完毕*/ int tcflow(int fd, int action) ; /* 用于暂停或重新开始输出 */ int tcflush(i

    30、nt fd, int queue_selector); /* 用于清空输入/输出缓冲区*/本实例中使用 tcflush()函数,对于在缓冲区中的尚未传输的数据,或者收到的,但是尚未读取的数据,其处理方法取决于 queue_selector 的值,它可能的取值有以下几种。 TCIFLUSH:对接收到而未被读取的数据进行清空处理。 TCOFLUSH:对尚未传送成功的输出数据进行清空处理。 TCIOFLUSH:包括前两种功能,即对尚未处理的输入输出数据进行清空处理。 如在本例中所采用的是第一种方法: tcflush(fd, TCIFLUSH);9、激活配置在完成全部串口配置之后,要激活刚才的配置并使

    31、配置生效。这里用到的函数是tcsetattr(),它的函数原型是:tcsetattr(int fd, int optional_actions, const struct termios*termios_p);其中参数 termios_p 是 termios 类型的新配置变量。参数 optional_actions 可能的取值有以下 3 种:TCSANOW:配置的修改立即生效。TCSADRAIN:配置的修改在所有写入 fd 的输出都传输完毕之后生效。TCSAFLUSH:所有已接受但未读入的输入都将在修改生效之前被丢弃。该函数若调用成功则返回 0,若失败则返回-1,代码如下所示:if (tcsetattr(fd, TCSANOW, &new_cfg) != 0) perror(tcsetattr); return -1;4.


    注意事项

    本文(基于QT设计的串口通信系统实验报告.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开