1、基于QT设计的串口通信系统实验报告(完整资料)(可以直接使用,可编辑 优秀版资料,欢迎下载)串口通信系统姓名:马亮学院:电气与信息工程学院专业班级:物联网工程201501班学号:20154419指导老师:易军成绩:重庆科技学院二零一八年六月大作业规则及要求规则1:同学们做一个题目,可以自拟题目,但必须经过任课老师同意,中途不得更改题目。规则:任课老师将列出每个题目的具体功能及分值,完成后获得对应分数,发现代码抄袭或者现场答辩无法解释,记0分。规则3:鼓励增加新功能,并给予适当加分。规则4:大作业报告除遵守模板格式外,应按照需求分析、系统设计、详细设计、系统测试四个部分组织,其中需求分析应将本项
2、目的功能需求、性能指标、界面、安全等因素考虑在内;系统设计应多画流程图说明设计意图;详细设计应包括关键代码或接口定义,数据表定义等;系统测试应包括功能实现情况(截图)、各性能指标完成情况(表格)。规则:所有题目应以TQ240为平台进行开发应用,否则答辩成绩扣0分.摘要嵌入式linux是将日益流行的Lnu操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统.嵌入式linux既继承了ntrnet上无限的开放源代码资源,又具有嵌入式操作系统的特性。随着ntert的发展和后PC时代的到来,嵌入式系统以其可靠性强、体积小、专用性、成本低等特性得到日益广泛的应用。目前嵌入式系统技术已经成了最
3、热门的技术之一.嵌入式Linux是嵌入式操作系统的一个新成员,其最大的特点是源代码公开并且遵循GPL协议,近几年来已成为研究热点.目前正在开发的嵌入式系统中,有近50的项目选择nux作为嵌入式操作系统。新一代嵌入式计算系统的功能集成和应用模式使之迅速向网络化嵌入计算的方向发展,标准和统一的TCIP通信协议是独立于任何厂家的硬件的,因此嵌入式环境下的适时网络通信成为嵌入计算技术研究的重点和热点。本文通过给予TQ2440的嵌入式串口通信的实现,按照嵌入式系统的软、硬件结构组成,较为详细地介绍了串口通信的硬件电路和软件实现方法。关键词:嵌入式 Linu操作系统 串口通信 TQ440前言串口通信是简单
4、嵌入式系统的一个应用,串口通信是指外设和计算机间,通过数据信号线、地线、控制线等,按位进行传输数据的一种通信方式.这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可定制,适用于不同应用场合,对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器,外围硬件设备,嵌入式操作系统,用户应用程序四个部分组成。用于实现对其他设备的控制,监视或管理等功能。嵌入式系统已经广泛应用与科学研究、工业制造、军事技术等领域,人们常用的手机,智能家电,P等均是嵌入式系统的典型代表。目录摘要I前言I目录
5、1 嵌入式串口通信概述111嵌入式串口通信的原理。嵌入式串口通信的开发工具11。2.1 TQ2440硬件平台简介1.2。2ARM简介312.3Linu系统简介1.3嵌入式串口通信的基本任务1。4嵌入式串口通信协议及实现72 需求分析921 功能需求92。性能指标9 系统设计123. 系统功能设计123。2 通信流程设计12详细设计144。1设置串口属性14。2 客户端Q设计17421 报文格式4.22部分操作函数1 系统调试及测试2.1 功能实现情况.2各性能指标完成情况25表5-1 串口通信功能完成情况表25总结67 致谢278 参考文献2 嵌入式串口通信概述所谓串口通信,是指外设和计算机间
6、使用一根数据信号线(另外需要地线),数据在一根数据信号线上一位一位地进行传输,每一位数据都占据一个固定的时间长度.串口传输是二进制代码序列在一条信道上以位为单位,按时间顺序且按位传输的通信方式.串行传输时,发送端按位发送,接收端按位接受,同时还要对所传输的位加以确认,所以收发双方要采用同步措施,否则接收端将不能正确区分出所传输的数据。串口通信不但能实现计算机与嵌入式开发板之间的数据传输,而且还能实现计算机对嵌入式开发板的控制.若采用普通单片机,对外部设备的访问就需要利用复杂的汇编语言或者使用5自己编写设备的初始化以及读写访问程序,这样的过程不仅复杂,而且不太利于大规模的开发与设计。ARM与普通
7、单片机相比,具有开发简单、灵活,而且性能稳定、功能易于扩展等一系列的优势,因而在各个领域的嵌入式系统中得到广泛的应用。将ix移植到ARM嵌入式处理器后,可以利用操作系统中提供的系统调用把串口及其他外设当成普通文件进行操作,读写方便,在进行相对应的开发时可以提高系统编程效率,而且还可以简化调试的复杂程度.1。嵌入式串口通信的原理串行端口的本质功能是作为CU和串行设备间的编码转换器。当数从U经过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。串口是系统资源的一部分,应用程序要使用串口进行通信,必须在使用之前向操作系统提出申请打开串口,通信完成后必须释放资源,即关
8、闭串口.12嵌入式串口通信的开发工具此次开发采用的硬件平台是以TQ2440为平台,R2410嵌入式开发板作为被查询服务端,PC机为客户端和C语言来实现本次系统的开发。客户端在Linux下开发,系统基于客户服务器结构来实现客户端和服务端之间通过串口通信。12. T240硬件平台简介TQ2440是由广州天嵌计算机科技有限公司打造的一款开发板,如下图11所示。其以稳定的性能,过硬的质量,丰富的扩展接口,优质的售后服务和技术支持,赢得众多企业的青睐和支持。开创众多第一,引领嵌入式潮流.图1移植最新的Lnux 6.0系统到T2440 开发板,并配有相关移植教程。将Nadflash 升级为56MB(核心板
9、andflsh支持升级到GB,SDRM 可扩展到12MB)。推广开源的厂家,除了提供平台性软件,还免费提供厂家移植教程,并可在网上下载,非TQ2440 的用户一样受益。不断更新软件,提供Wice 5.0/6。0原生P 包,wice 开发教程,Q 开发教程等厂家一手的移植教程(并在不断更新)。TQ240硬件特性如下表所示.TQ244开发板底板硬件特性 说明串口板载五线异步串行口(UAT0),可外接串口扩展板引出另两个串口(UAT1和UART);INC和Linu均有三串口驱动。网络接口板载100 M900网卡,带联接和传输指示灯;SB接口B HST接口;SB evic接口。存储接口一个SD卡接口,
10、支持3 G SD卡。音频接口采用芯片D341,立体声音频输出,可录音。LD接口集成了4线电阻式触摸屏接口;支持86、4040、2420、3020等不同分辨率的TFT LCD,(目前实测最大的屏10。4寸屏,00600的分辨率),可接GA转接板amea0W像素摄像头(标配驱动),可支持AV信号视频输入或更高像素的摄像头时钟源内部实时时钟(带有后备锂电池)调试JtagJTAG接口,支持DS1.,ki等软件的单步调试功能复位电路采用专业复位芯片进行复位,稳定可靠电源接口高电流带载的5V电源供电,带电源开关指示灯D功能可调电阻接到AC引脚上用来验证模数转换C功能提供AT4C0的EPROM验证IC功能蜂
11、鸣器测试W功能的蜂鸣器用户按键4个用户按键,使用外部中断用户LE灯个用户LE灯,使用GPIO口控制底板尺寸105m28mm1.2.2 ARM简介ARM(AvacedISCMahies),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字.ARM是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RC处理器、相关技术及软件.技术具有性能高、成本低和能耗省的特点.适用于多种领域,比如嵌入控制、消费/教育类多媒体、D和移动式应用等.ARM将其技术授权给世界上许多著名的半导体、软件和OE厂商,每个厂商得到的都是一套独一无二的AR相关技术及服务。利用这种合
12、伙关系,RM很快成为许多全球性RSC标准的缔造者。191年ARM 公司成立于英国剑桥,主要出售芯片设计技术的授权.采用 M技术知识产权( IP )核微处理器,即我们通常所说的 ARM 微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于 R 技术的微处理器应用约占据了 32 位RC 微处理器 75 %以上的市场份额, ARM技术正在逐步渗入到我们生活的各个领域.ARM 公司是专门从事基于 RS 技术芯片设计开发的公司,作为知识产权供应商,本身不直接从事芯片生产,靠转让设计许可由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM公司购买其设计的 ARM
13、微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的 RM 微处理器芯片。目前,全世界有几十家大的半导体公司都使用ARM 公司的授权,因此既使得 AM 技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,使产品更容易进入市场被消费者所接受,更具有竞争力.RM微处理器一般具有如下特点:(1) 体积小、低功耗、低成本、高性能;(2) 支持Thumb(1位)/M(2位)双指令集,能很好的兼容/1位器件;()大量使用寄存器,指令执行速度更快;()大多数数据操作都在寄存器中完成;()寻址方式灵活简单,执行效率高;(6)指令长度固定。2.3 Linx系统简介Lnux是一套免
14、费使用和自由传播的类Unix操作系统,是一个基于POI和N的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNI工具软件、应用程序和网络协议。它支持32位和6位硬件.Lu继承了Uix以网络为核心的设计思想,它的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说Linu是基于Unx的,很大程度上也是因为这两者的基本思想十分相近,所以说它是一个性能稳定的多用户网络操作系统.Linux操作系统诞生于99 年10月
15、日。Ln存在着许多不同的nux版本,但它们都使用了Linx内核。Liu可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。Lux一般有四个主要部分:内核、Shel、文件结构和实用工具。内核是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序。它从用户那里接受命令并把命令送给内核去执行.(2)Linux hellSll是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行.实际上Shll是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Sl有自己的编程语言用于对命令的
16、编辑,它允许用户编写由shell命令组成的程序.(3) inux文件结构文件结构是文件存放在磁盘等存储设备上的组织方法.主要体现在对文件和目录的组织上。目录提供了管理文件的一个方便而有效的途径.我们能够从一个目录切换到另一个目录,而且可以设置目录和文件的权限,设置文件的共享程度。使用iux,用户可以设置目录和文件的权限,以便允许或拒绝其他人对其进行访问。(4) Liux 实用工具标准的Linu系统都有一套叫做实用工具的程序,它们是专门的程序,例如编辑器、执行标准的计算操作等。用户也可以产生自己的工具.严格来讲,nux这个词本身只表示Linux内核,但实际上人们已经习惯了用Liux来形容整个基于
17、iu内核,并且使用GU工程各种工具和数据库的操作系统.Liux的主要特性有以下几点:()完全免费Linx是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了iux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Lnux吸收了无数程序员的精华,不断壮大。 (2)完全兼容POSIX1.0标准这使得可以在Linx下通过相应的模拟器运行常见的S、Window的程序。这为用户从indows转到Linux奠定了基础。许多用户在考虑使用Linux时,就想到以前在iws下常见的程序是否能正
18、常运行,这一点就消除了他们的疑虑. (3)多用户、多任务Lnux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行.(4)良好的界面Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似indow图形界面的X-Wnow系统,用户可以使用鼠标对其进行操作。在-Ww环境中就和在Wndws中相似,可以说是一个iux版的Winows。 ()支持多种平台Linu可以运行在多种硬件平台上,如具有86、60x0、PA、Aph等处理器的平台。此外nu
19、x还是一种嵌入式操作系统,可以运行在掌上电脑、机顶盒或游戏机上。200年1月份发布的Linu 24版内核已经能够完全支持Inte 64位芯片架构.同时Linux也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。1.3 嵌入式串口通信的基本任务通信接口的基本任务是:(1)实现数据格式化:因为来自PU的是普通的并行数据,所以,接口电路应具有实现不同串行通信方式下的数据格式化的任务.在异步通信方式下,接口自动生成起止式的帧数据格式.在面向字符的同步方式下,接口要在待传送的数据块前加上同步字符.(2)进行串并转换:串行传送,数据是一位一位串行传送的,而计算机处理数据是并行数据。所以当数据由计
20、算机送至数据发送器时,首先把串行数据转换为并行数才能送入计算机处理。因此串并转换是串行接口电路的重要任务.()控制数据传输速率:串行通信接口电路应具有对数据传输速率-波特率进行选择和控制的能力。(4)进行错误检测:在发送时接口电路对传送的字符数据自动生成奇偶校验位或其他校验码。在接收时,接口电路检查字符的奇偶校验或其他校验码,确定是否发生传送错误。()进行TTL与EIA电平转换:CPU和终端均采用T电平及正逻辑,它们与IA采用的电平及负逻辑不兼容,需在接口电路中进行转换。(6)提供EIARS-23C接口标准所要求的信号线:远距离通信采用ODE时,需要根信号线;近距离零MODM方式,只需要3根信
21、号线。这些信号线由接口电路提供,以便与MODEM或终端进行联络与控制.1。4嵌入式串口通信协议及实现串行端口的本质功能是作为CP和串行设备间的编码转换器,一般微机内都配有通信适配器,使计算机能够与其他具有S-232C串口的计算机或设备进行通信。本系统主要目的是实现宿主机与目标机之间的近距离串行通信,采用的宿主机是P机,而目标机是RAM架构的开发板.本系统中目标机的开发板是ARM210S,串口线采用常用的S2型接口模式,能实现计算机与开发板间的数据传输与控制。嵌入式串口通信采用EIA RS-3C标准。2 需求分析2. 功能需求本系统基于客户/服务器结构,ARM41S嵌入式开发板作为被查询服务端,
22、PC机为客户端。客户端在Linux下开发,客户端和服务端之间通过串口进行通信,可查询相应的内容。 性能指标(1) 串口通信协议:C与开发板通信报文基本格式如下:其中:头(heaer):4个字节的xf.长度(le):2个字节的信息长度,从信息类型开始,到信息内容结束,采用网络字节顺序长度校验和(cs):个字节的长度校验和。ln0 + len1 +cs = 0。信息类型(tpe):1个字节,0x2.信息内容(dat):n字节的信息内容。信息校验和(dcs):1个字节的信息内容校验和。ype + at0 + dta1 + dta(1) +c 。信息类型分配如下表所示:0x0-查询0x1诊断(保留)0
23、02-下载参数(保留)C发送给开发板的基本格式如下:开发板反馈给PC的基本格式如下:系统必须支持的查询命令如下表所示: 说明命令字响应字说明开发板ID设置x00x0开发板唯一编号开发板MAC地址设置0203本机C地址本机IP、掩码设置、网关IP设置04x05本机、掩码、网关设置开发板密码设置x060x7登录密码网络连接方式设置008009只允许下载局域网x4c(L)、 或者GRPS 0x(G)两种方式蜂鸣器开关设置0x00x0b打开0x(N)或者关闭x46(F)两种方式LD对比度设置0x0xd合法值在0000x3f之间(供参考)开发板CPU配置0xe0xf芯片型号(2)T查询界面:界面包括分类
24、显示区域(含保留类型),每种查询表项可选择或者输入,其返回结果能正确显示到文本框。(3)串口驱动程序实现。 系统设计3。1 系统功能设计系统功能如下图3.1所示。图31 系统功能图3.2 通信流程设计利用串口进行通信的流程图如下32所示。图3串口通信流程图 详细设计4 设置串口属性1、保持原先串口设置为了安全起见和以后调试程序方便,可以先保存原先串口的配置,在这里可以使用函数 tcgetattr(fd, &d_cfg).该函数得到 f指向的终端的配置参数,并将它 们保存于 trmios 结构变量 old_cfg 中.该函数还可以测试配置是否正确、该串口是否 可用等。若调用成功,函数返回值为 0
25、,若调用失败,函数返回值为-1,其使用如下 所示:if(tceattr(fd, &ol_c) != 0)perror(”tgetattr);rtur -;、激活选项CCA 和CE分别用于本地连接和接受使能,因此,首先要通过位掩码的方式激活这两个选项。ewtio.cclag = COCAL | READ;调用 cfmeraw()函数可以将终端设置为原始模式,在后面的实例中,采用原始模式进行串口数据通信。fma(&newcf); .设置波特率设置波特率有专门的函数,用户不能直接通过位掩码来操作。设置波特率的主要函数有:fetispeed()和fsetspe()。这两个函数的使用很简单,如下所示:c
26、fsetispeed(new_cf,1520);cfsetspeed(ewfg,1520);一般地,用户需将终端的输入和输出波特率设置成一样的。这几个函数在成功时返回 0,失败时返回。设置字符大小特率不同,设置字符大小并没有现成可用的函数,需要用位掩码.一般首先去除数据位中的位掩码,再重新按要求设置。如下所示:new_cfgc_lag =CSIZE; / 用数据位掩码清空数据位设置 /ew_cfg。c_cflag |= C8;5设置奇偶校验位校验位需要用到 tero中的两个成员:c_cfag 和 c_iflag.首先要激活 ccfag 中的校验位使能标志ARN和是否要进行偶校验,同时还要激活c
27、_iflag 中 的对于输入数据的奇偶校验使能(NPCK).无校验位,代码如下:ew_cf。ccag &= PRNB;校验时,代码如下所示:w_fg。c_lag = (PAOD AREB);ne_g。c_flag INCK; 而使能偶校验时,代码如下所示:new_cg。c_cflg = PAEN;newcfg.c_cflaODD;/ 清除偶校验标志,则配置为奇校验/ecfgc_ifag |= IPCK;。设置停止位设置停止位是通过激活 cflag 中的CSTOPB 而实现的。若停止位为一个,则清除STP,若停止位为两个,则激活 SB。以下分别是停止位为一个和两个比特时的代码:ne_g。c_fa
28、g = CSTOP; /* 将停止位设置为一个比特 */new_cfg。ccflg = CSOPB;/* 将停止位设置为两个比特7设置最少字符和等待时间在一般的情况下,可以设置设置为阻塞等待,直red到数据才返回temios_newc_cVTME = 0;teris_ew。_VI 4;8.清除串口缓冲由于串口在重新设置之后,需要对当前的串口设备进行适当的处理,这时就可调用在Cu_he,SAL(ick()),ts,SLO(he()));connct(uiLcd_ek,IGNAL(clicked(),thi,SLOT(Cec();(2)将发送选项加入到btnGroup中并绑定。 utonGroup
29、.adBtton(ui-Id_chek,); utnGrou。ddButton(uiMaceck,1); buttonGrpaddButn(uiIp_chek,2); ttonGroup.adButt(uias_chc,); utonGroup。aButto(i-Nt_chck,); ttnGro。addButon(uiBuzzecheck,5); ttGoupddButton(ui-cd_chk,6);btonGroupadButtn(ui-Cu_chec,);(3)在Chk槽函数中,根据选择的发送选项设置,定义要发送的msg中的cmd命令字.vid MWindo::Check() ms.n
30、fodaa.Data。lear(); switc(buttoGoup。cekdd()) cae0: msg.nfoatCmd00x1; qDeug() QStrn::frmLocl8Bit(”0); beak; case 1: ms.Infodata.Cmmd0=0x02; ebug() Qtring::fromLoc8it(1); break; ce2: msInfoaa.Cmd0=00; qDug() QString:rLocal8t(2); rak; ca 3: ms.nd.d=0x6; qebu() QString:fromLocal8Bt(”3); rea; ase : msg。nf
31、da.Cm0=0x8; Debug() QStrin::froLoa8Bit(4”); bek; cas 5: m.Infodta.md=00a; qebug() QStrig::fmLcal8Bit(5); break; case 6: g.noaa。Cmd0=00c; qDebug() Qtrng:rmLcalit(6”); rek; cae 7: g。Infodaa。m=0x0e; qDbug() Qtrig::omLolit(7); brk; (4)发送按钮按下后,填充mes字符串,通过串口发送voidMinWinow:nphBtosend_clicked() msg。Her.esiz
32、e(4); ms。Ln.reize(); msg.L。resize(1); msg.Ifoyesize(1); msg.Iodata。Cd.resze(1); msDcs.reize(1); msg.adr=xf; mg.Heae=0xff; msg.Her20ff; msgHeadr3=0xff; sg。en=0aa; msLen1=0xb; g.cs0=。Len0msg。Le1; msg。Infotype0=0x0; m。Ds00xf; msg。data.Datap(ulineEdt_sn-text()。oLain1()); msappend(m。eader); mssappen(msg。
33、Len); mes。appd(sg。Lcs); mess.appn(ms。Infoty); mess.pend(mg。nfdata。Cmmd); mss。append(mg。Infoat。Da); messap(ms.Ds); e.apnd(r); mSerialr-writ(mes); /向串口写入数据 ms.Infoda.aa.lear(); messcla();(5)开发板端对接受的数据进行解析,并且回传数据.while()8 idx;Uart_Prif(nPlease elec fncion : );UatGetSin(buff);cmmd=uf8;if(stlen(buf)=1)wi
34、th(cmm)cas 0x:Uart_rintf(nID:”);at_rint(,d);rek;case002:Ur_Pri(”na:);Uart_Pnf(MacAdde”);reak;ca00a:e(000, 100);break;ce 0x6:Uart_Printf(PasWord:);Uart_Pritf(s,passw);rea;deult:brea;elseswitch(cmd)cas 0x01:rt_ritf(neID:”);stpy(d,buff+9,srln(bff);dtle(d)-1=0;art_Printf(s,i);reak;ase 002:art_inf(nMa:);
35、at_Printf(aAddress);rk;cas 006:Uart_Print(nNewPasWod:);sn(pasw,buf+9,strln(uff);idstrlen(passd)1=0;Uat_Pr(sn”,passw);ak;se0x0a:Bee(000,00);beak;defalt:brk;5 系统调试及测试51 功能实现情况(1)在Qt中对界面的设计如下图5。1所示,在该界面上可选择发送的查询选项,也可输入发送数据并发送到开发板上,在显示框上可以看到开发板反馈的信息。图5.1 初始化界面()查询开发板ID,在发送选项中选择“开发板ID”,点击“发送到开发板上,界面显示开发板ID为“ID:q0br0001,如下图。所示.图52(3)查询开发板ID,在发送选项中选择“开发板ID”,输入发送数据“et”,点击“发送”到开发板上,界面显示开发板D为“NwD:tst”,如下图。3所示。图53(4)查询开发板密码,在发送选项中选择“开发板密码”,点击“发送”到开发板上,界面显示开发板密码为“asor:123456”,如下图5.4所示。