完整版基于STM32的WIFI无线网络应用设计毕业论文设计说明书Word文档下载推荐.docx

上传人:b****5 文档编号:19203957 上传时间:2023-01-04 格式:DOCX 页数:14 大小:488.12KB
下载 相关 举报
完整版基于STM32的WIFI无线网络应用设计毕业论文设计说明书Word文档下载推荐.docx_第1页
第1页 / 共14页
完整版基于STM32的WIFI无线网络应用设计毕业论文设计说明书Word文档下载推荐.docx_第2页
第2页 / 共14页
完整版基于STM32的WIFI无线网络应用设计毕业论文设计说明书Word文档下载推荐.docx_第3页
第3页 / 共14页
完整版基于STM32的WIFI无线网络应用设计毕业论文设计说明书Word文档下载推荐.docx_第4页
第4页 / 共14页
完整版基于STM32的WIFI无线网络应用设计毕业论文设计说明书Word文档下载推荐.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

完整版基于STM32的WIFI无线网络应用设计毕业论文设计说明书Word文档下载推荐.docx

《完整版基于STM32的WIFI无线网络应用设计毕业论文设计说明书Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《完整版基于STM32的WIFI无线网络应用设计毕业论文设计说明书Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。

完整版基于STM32的WIFI无线网络应用设计毕业论文设计说明书Word文档下载推荐.docx

学位论文原创性声明

本人郑重声明:

所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。

除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。

对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。

本人完全意识到本声明的法律后果由本人承担。

日期:

年月日

学位论文版权使用授权书

本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。

本人授权    大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

涉密论文按学校规定处理。

日期:

导师签名:

日期:

摘要

随着无线局域网技术的快速发展,无线终端已经融入了我们的生活,无论是智能手机还是笔记本,WiFi功能几乎是必不可少的。

目前WiFi技术主要的应用还在手持终端,但随着用户需求的越来越广泛,WiFi技术也需要应用到不同的方面如工业控制,移动办公等,这就需要不同形式的终端。

本文开发并实现基于一种嵌入式开发平台的STM32的WiFi模块,使一些嵌入式设备也能够使用无线资源。

论文首先讨论了基ARMCortex-M3的嵌入式开发技术,介绍了WiFi网络的发展现状及前景,利用STM32F103VCT6串口连接WiFi模块,介绍了UCGUI在STM32平台上的移植,最后,在此基础上进行基于uCGUI的多窗口应用界面的设计,实现了WiFi热点接入界面的开发。

关键词:

STM32,WiFi,UCGUI,LCD

ABSTRACT

TodaywiththerapiddevelopmentofwirelessLANtechnology,wirelessterminalsgraduallyintegratedintoourlives.WiFifunctionisalmostessentialwhetheritisasmartphoneoralaptop.CurrentlythemainapplicationofWiFitechnologystillembeddeddevelopmentplatformbasedontheSTM32WiFimodule,andenablesomeembeddeddevicestousethewirelessresources.Firstly,wediscusstheembeddeddevelopmenttechnologybasedonARMCortex-M3,introducedaWiFinetworkdevelopmentsituationandprospects,usingtheserialportusingtheSTM32F103VCT6WiFimodule,introducedintheSTM32platformUCGUItransplant,finally,onthisbasis,baseduCGUIapplicationofmulti-windowinterfacedesign,toachieveaWiFi(void);

设置波特率,中断类型等,在本项目中设置波特率为115200bps,接收和发送都产生中断以保证其既能发送数据又能接受数据。

WiFi开发模块为开发者提供了一个数据结构NetParaBuffer来统一每个参数的格式,其具体结构如下:

typedefstructNetParaBuffer

{

unsignedcharM_id;

参数名称

unsignedcharcLength;

参数长度

unsignedcharcInfo[64];

具体的参数内容

}

在配置到WiFi的相关参数后,调用WiFi_Para_set_auto()使WiFi处在自动模式并联网,这就可以通过AP连上网了。

之后的数据直接调用SendDataToWiFi就可以通过USART1将数据发送到WiFi模块,根据之前设置的服务器IP地址通过AP发送出去。

具体程序流程图如下:

图5-2串口初始化流程图

5.2.2TFT-LCD底层驱动设计

5.2.2.1与读取写入相关的寄存器

由ILI9325数据手册可知,索引寄存器(IndexRegister)存储指令或显示数据即将被写入的寄存器的地址,寄存器选择信号(RS)、读写信号和数据总线用来读写ILI9325内部的指令或数据。

因此,要访问9325内部的寄存器或显示RAM,首先要通过IR索引寄存器设置目标寄存器的地址。

除了IR寄存器,与读写访问有关的寄存器如图5-2所示:

图5-3与读写有关的寄存器

表5-1说明了每个寄存器的具体用途:

表5-1与读写有关的寄存器说明

R20h,R21h(GRAM水平垂直地址设置寄存器)

此寄存器用来设置地址计数器(AC)的初始值。

随着数据被写入内部GRAM,地址计数器按照之前所述的AM、ID位的设置自动更新。

当从内部GRAM读取数据时,AC不自动更新。

R22h(GRAM写数据寄存器)

这个寄存器是GRAM访问接口。

当通过这个寄存器更新显示数据时,地址计数器(AC)自动增加或减少。

R22h(GRAM读数据寄存器)

此寄存器用来从GRAM中读出显示数据。

5.2.2.2读取写入数据的过程

ILI9325内部具有一个16位的索引寄存器(IR),一个18位的写数据寄存器(WDR)和一个18位读数据寄存器(RDR)。

WDR寄存器用来临时存储即将被写入控制寄存器或者内部GRAM的数据,RDR寄存器用来临时存储从GRAM读出的数据。

来自MPU的将被写入内部GRAM的数据首先被写入WDR,然后再被自动写入GRAM。

MPU通过RDR寄存器读取内部GRAM的数据。

因此,在读取9325内部GRAM的数据时,第一次读出的是无效数据,从第二次开始读取有效数据。

当读取GRAM的地址改变时,第一次读取的仍为无效数据。

读取数据的流程如图4-3所示:

图5-4ILI9325读内部显示数据流程图

首先,根据在初始化时设置的GRAM地址刷新方式(由ID、AM位的组合值确定)以及窗口地址区域的起止坐标(由HSA、HEA和VSA、VEA联合确定)设置填入地址计数器AC的初始地址值M。

由于第一次读出的显示数据是RDR读数据锁存器中的无效数据,因此需要进行第二次数据读取,以得到真正有效的显示数据。

由于在读取GRAM显示数据时地址计数器AC的值不会自动更新,因此在希望读取另一地址处的显示数据时需要重新设置AC的初值并重复以上过程。

5.2.3具体程序实现

由前面的时序图得之,读写ILI9325内部的寄存器或显示RAM的过程是先在索引寄存器写入地址,然后写入命令数据或颜色值,读写内部寄存器或GRAM的具体流程如图5-5所示:

图5-5

5.3网络数据传输报文设计

所选WiFi模块在自动模式下始终工作在透明数据传输状态,因此用户只需把它看做一条虚拟的串口线。

为了能够保证数据能够在网络上顺利传输以及平台的兼容性,需将发送至串口的报文制定统一的数据结。

一个好的数据结构是模块稳定的保证,是系统提供模块类型的体现,除了可以保证模块的可扩性,还可以为系统的扩展提供保障。

本项目中,WiFi模块所在的系统架构为CS架构,这就要求数据报文除了需要模块能够正确的处理,同时要求服务器能够解析。

对于服务器端,主要由项目中其他人解决,这里根据数据数据格式的用途及服务器和客户端的特点,可以将数据包分为两类,一类与信令相关的结构,一类与数据相关的结构。

对于与信令相关的数据包主要包括注册请求报文,注册应答报文,呼叫请求报文,呼叫通报报文,被叫端呼叫应答报文,服务器呼叫应答报文,报文格式如图5-6至图5-11。

图5-6注册请求报文

图5-7注册应答报文

图5-8呼叫请求报文

图5-9呼叫通报报文

图5-10被叫端呼叫应答报文

图5-11服务器呼叫应答报文

对上图中各数据报文中字段含义如下:

总长度:

8bit,表示报文的总长度。

类型:

8bit,表示报文的类型,在这个字节的不同值代表不同的数据报文类型,其中0x10:

注册报文请求,0x12:

注册报文失败,0x20:

呼叫请求,0x22被叫通报,0x21:

呼叫成功,0x23呼叫失败。

标长:

8bit,标号的长度,标号类似于该用户的用户名。

能力:

8bit,能力主要用于该用户使用资源的权利,服务器可以根据用户的能力判断用户是否对资源有实用的权限。

本项目中默认用户都有发送报文和接受报文的能力,并用0x00表示。

Random:

16bit,Random是客户端产生的一个16位的随机数,服务器返回的应答报文应是Random+1。

Random在一些协议中,主要作用是保证信息的新鲜性,防止重放攻击。

CRC:

8bit,CRC的全拼是CyclicRedundancyCheck,又称之为循环冗余校验。

在本项目中,使用一个简单的CRC,将数据包前面的所有数据以八位为一个分组进行异或,将最后的结果存入最后的八位中。

源标长:

8bit,主叫端用户名的用户名。

目的标长:

8bit,接受方标号的长度。

目的标号:

8bit,目的端用户名的用户名。

上述五种数据报文中,注册请求和应答请求主要在用户登录系统时注册使用,呼叫请求,呼叫通报,客户端呼叫应答和服务器呼叫应答主要在呼叫请求的过程中。

具体过程为主叫方将呼叫请求发送至服务器,服务器收到请求后解析数据包产生呼叫通告报文发给被叫方,等待被叫方的呼叫应答报文,然后将结果传递给主叫方,同时,如果被叫方长时间没有反应,则服务器会产生呼叫失败报文给主叫方。

对于数据类型的报文,其主要目的是承载通信双方的数据以及相对于数据的应答。

主要包括数据报文、应答报文和数据结束报文。

报文格式如图所示:

图5-11数据报文

图5-13应答报文

图5-14结束报文

从图中可以看出数据类报文结构和信令类相比,有了包号,数据长度和数据字段,其中数据长度和数据主要表示传输的数据,而对于包号,主要作用是中断可以根据包号重组收到的数据包,保持数据包的完整性。

5.4uCGUI的移植

5.4.1uCGUI的目录结构

uCGUI推荐的目录结构如图4-7所示,在工程文件夹中保持uCGUI程序文件(包括头文件)的独立性和完整性可以使uCGUI的升级更加简单(仅需简单的替换GUI子文件夹)。

图5-15uCGUI目录结构

各个子文件夹的内容说明如下表所示:

表5-2uCGUI文件结构及说明

内容

Config

配置文件

GUI\AntiAlias

抗锯齿支持*

GUI\ConvertMono

用于灰度级显示的颜色转换程序*

GUI\ConvertColor

用于彩色显示的颜色转换程序*

GUI\Core

uCGUI核心文件

GUI\Font

字体文件

GUI\LCDDriver

LCD驱动程序

GUI\MemDev

存储设备支持*

GUI\Widget

控件库*

GUI\WM

窗口管理器*

注释:

标注“*”的为可选模块

5.4.2在目标系统上应用uCGUI的配置过程

uCGUI的移植过程如图5-15所示:

图5-16uCGUI移植过程

1.底层驱动程序,使其可以正常显示。

2.在工程项目中加入uCGUI程序包。

3.修改有关的配置头文件(在将uCGUI程序包加入到工程项目文件中后,首先要做的就是要对uCGUI进行相关的配置,以使其与自己所采用的具体硬件环境相适应。

具体步骤如下:

编写TFT-LCLCDConf.();

LCD控制器

初始化函数

#endif

5.4.4GUIConf.((U32)(OSTCBCur->

OSTCBPrio));

}

voidGUI_X_InitOS(void){DispSem=OSSemCreate

(1);

voidGUI_X_Unlock(void){OSSemPost(DispSem);

voidGUI_X_Lock(void){INT8Uerr;

OSSemPend(DispSem,0,&

err);

5.4.5ILI9235的初始化

ILI9325的初始化需要配置众多的寄存器,用于配置电源模块、工作模式、伽马校正等等,具体每个参数的含义可以查阅ILI9325数据手册,其中最重要的用于配置工作模式的寄存器之前已经介绍过。

一般在购买液晶屏时会附赠屏幕所用液晶控制器的初始化程序,我们可以在稍加修改使其满足自己的特定需要后直接调用这些初始化程序。

本文所用程序中ILI9325液晶控制器的初始化函数原型如下:

voidLCD_9325_Init(void);

ILI9325液晶控制器在开始配置之前首先要进行复位。

由之前的LCD转接板原理图可知ILI9325RST复位引脚连接的是STM32的PC1引脚,且RST引脚是低电平有效,所以为了产生有效的复位信号,需要将PC1引脚电平拉高——拉低——再拉高,具体实现的程序代码如下:

GPIO_SetBits(GPIOC,GPIO_Pin_1);

Delay(0xAFFF);

GPIO_ResetBits(GPIOC,GPIO_Pin_1);

5.4.6LCD底层API的编写

在将uCGUI用于具体的液晶显示器时需要提供TFT-LCD的底层驱动函数。

由于uCGUI本身提供了很多液晶控制器的驱动,很多时候只要在LCDConf.)。

然后,按照uCOS-

系统初始化的要求,创建了一个优先级最高(优先级为2)的起始任务:

App_TaskStart(),接着调用系统函数OSStart()开始多任务管理。

在起始任务中,我们创建了3个用户任务,分别是:

1._Task_0,优先级为5,用来维护_Task_0窗口;

2._Task_1,优先级为4,用来维护_Task_1窗口;

3._GUI_Task,优先级为3,用来维护背景区域。

下面简要介绍一下_Task_0任务的工作流程,_Task_1与_GUI_Task的工作过程与_Task_0类似。

_Task_0的工作流程图如图5-2所示:

首先:

调用函数FRAMEWIN_Create()和WM_CreateWindowAsChild()分别创建了框架父窗口和子窗口,然后调用函数WM_SelectWindow()

和GUI_SetFont()选择了子窗口为其并设置了显示字体。

接下来进入任务主循环:

计算滚动文字移动范围并调用函数WM_InvalidateWindow()使子窗口失效,然后通过调用回调函数cbCallbackT0(WM_MESSAGE*pMsg)来重绘窗口并最终实现滚动文字效果。

_Task_1与_GUI_Task的工作流程与_Task_0类似,只不过_Task_1移动的是窗口,_GUI_Task用来维护显示背景。

图5-18_Task_0任务工作流程图

以上三个任务实现了滚动文字及移动窗口的动态显示效果。

在所有任务创建完毕后,系统进入了正常的多个任务同时运行的状态。

第六章结论

本文在嵌入式系统和WiFi无线网络技术的基础之上,介绍了WIFI-M03模块的参数和操作流程,重点分析了网络数据传输协议的报文设计和以及无线热点接入图形界面的开发等问题,以达到一个精简的目的。

全文分为三大板块:

1.详细介绍了嵌入式系统及WiFi无线网络的基础知识。

2.详细介绍了嵌入式系统的硬件平台,其中包括芯片的选择,32位的STM32F103微处理器主要特点,以及WiFi模块的操作流程。

3.在软件设计部分,首先给出了该系统软件设计的分层框图,详细介绍了LCD驱动程序、串口初始化程序、WiFi参数配置程序的编写,重点分析了网络数据传输协议报文的设计,简述了UCGUI在STM32嵌入式平台的移植,并在此基础上进行了WiFi无线热点接入图形界面的开发。

本设计方案在性能方面超过了传统8位或者16位微处理器,提高了系统的性能,实现了更多的功能;

在价格方面,由于32位ARM微处理器价格的不断下降,相对于那些大型服务器其成本已经非常便宜。

参考文献

[1]沙占友等.单片机外围电路设计.北京:

电子工业出版社,2003

[2]美Berger,A.著吕骏译《嵌入式系统设计》电子工业出版社,2002.9

[3]《嵌入式系统设计教程》,马洪连等,电子工业出版社,2006.6

[4]周立功著.ARM嵌入式系统基础教程[M].北京:

北京航空航天大学出版社,2005.5

[5]杨刚主编,《32位嵌入式系统与SoC设计导论(第2版)》,电子工业出版社,2011.1

[6]李宁.《基于MDK的STM32处理器开发应用》北京航空航天大学出版社.2008年

[7]Duckmyung,Yuseong,Daejeon.Modifiedmultilevelinverteremployingtophotovoltaicpowergeneration.2010:

305-719

[8]KONSTANTINTURITSYN;

PETRSULC;

SCOTTBACKHAUS;

MICHAELCHERTKOV.OptionsforControlofReactivePowerbyDistributedPhotovoltaicGenerators.2011,99(6)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1