基于STM32的嵌入式WEB服务器设计+1.docx
《基于STM32的嵌入式WEB服务器设计+1.docx》由会员分享,可在线阅读,更多相关《基于STM32的嵌入式WEB服务器设计+1.docx(35页珍藏版)》请在冰豆网上搜索。
![基于STM32的嵌入式WEB服务器设计+1.docx](https://file1.bdocx.com/fileroot1/2023-2/26/6827a2ec-7b92-48b8-be4f-08276a14a5bb/6827a2ec-7b92-48b8-be4f-08276a14a5bb1.gif)
基于STM32的嵌入式WEB服务器设计+1
毕业设计说明书
摘要
在科学技术日新月异的今天,嵌入式系统已成为计算机领域的一个重要组成部分。
嵌入式系统具有软件、硬件的可裁剪性,系统精简,具有高时效性,且功耗较低。
由于HTML语言的标准统一性,只要在嵌入式设备中有一个微型服务器,就可以使用任意一种Web浏览器接收和发送信息。
本论文首先讨论了基于ARMCortex-M3的嵌入式Internet技术,介绍了嵌入式网络通信技术的基础知识,然后根据嵌入式设备的特点,对标准TCP/IP协议进行了合理的简化,实现了符合ARMCortex-M3单片机的嵌入式精简TCP/IP协议栈。
在协议栈的基础上,实现了简单的嵌入式Web服务器。
本论文结合嵌入式技术、互联网通讯技术,介绍了嵌入式Web服务器的具体实现过程。
论文采用STM32F103C8T6+ENC28J60的硬件构架,基于超文本传输协议(HTTP)传输控制数据和用户信息,设计了微型嵌入式WEB服务器,通过以太网和-据传输共享以单片机应用系统为中心的小型嵌入式设备的信息,实现了嵌入式系统的Internet接入,Internet上的远程用户就可以通过浏览器访问嵌入式Web服务器,进而实现对嵌入式系统的远程控制和监测。
关键字:
STM32WEB服务器远程控制
Abstract
ThissystemadoptstheSTcompanyCortex-M3kernelSTM32microprocessorSTM32F103.STM32F103isSTMicroelectronicslaunchedanewSTM32connectiontype(Connectivity)isahighperformanceproductsseriesofmicrocontroller,thechipintegratesavarietyofstandardhighperformanceindustrialinterface,anddifferenttypesofSTM32productsinthepinandsoftwarewithperfectcompatibility,canbeeasilyadaptedtomoreapplications.ThenewSTM32standardperipheralsincluding10timer,two121-Msample/sAD(ADC)(rapidalternatingmode2Msample/s),twoof12DA(DAC),twoI2Cports,fiveUSARTportsandthreeSPIportsandhighqualitydigitalaudiointerfaceIIS,andSTM32F103withafullUSB(OTG)interface,twoCAN2.0Binterface,andEthernet10/100MACmodule.Thischipcanmeettheindustrial,medical,buildingautomation,homeaudioandhomeappliancesmarketavarietyofproductsdemand..Systemisthemaincontentofthenetworkcontrolisconnectedwiththeequipmentandaccesstotheequipmentstatusanddatainformationcanbereleased;thewebpage;timelyresponsecontrolcommandfromtheremoteuser.Inaddition,theembeddedequipmentwithsimplefunction,lowpowerconsumptionandportabilityetc.
Keywords:
STM32WebserverRemotecontrol
第一章引言
目前,网络化控制己成为远程控制的主要研究方向,利用网络实现对局域乃至全球范围内设备的监控是工业控制系统的发展趋势。
嵌入式Internet远程监控技术作为网络化控制的代表,它解决了工业控制领域中异构网络互联问题,提高了传统装备的智能化水平,促进了传统产业结构的调整。
嵌入式Web服务器尤其适用于嵌入式Internet应用,它通过Ethernet或Modem的连接可以轻松连接到任何网络,真正实现对设备的远程管理和控制。
1.1课题的研究意义
一般互联网站都采用功能强大的通用Web服务器。
随着网络各个核心部分业务量的提高其访问量和数据流量快速增长处理能力和计算强度也相应增大,使得单一设备根本无法承担。
而且许多企业级应用系统的应用请求具有突发性和紧急性的特点。
当应用访问急剧上升时容易造成网络瓶颈。
解决这一问题的办法是采用多台嵌入式Web服务器,为一个应用服务集群负载均衡机制就是为解决多个网络设备之间实现合理的业务量分配而提出的。
嵌入式网络技术的目标是将小型简单的低成本嵌入式系统连接到网络,充分利用网络资源,实现更广范围的信息共享和更多类型的信息、服务。
随着因特网的迅速发展,Web应用越来越广泛。
由于Web技术的开放性和独立平台特性,大大降低了软件系统和通信系统的设计、维护工作量,节省了人员培训费用,提高了现场测试和控制设备的管理水平。
1.2嵌入式的发展趋势
嵌入式技术的发展以及对未来工业革命将产生的巨大影响已经引起世界各国的高度关注.欧盟认为,嵌入式技术是IT领域中发展最快的内容,并将保持巨大技术发展和商业应用机会。
嵌入式系统的应用领域非常广泛,在产业发展中的重要性仍在持续提升,欧盟统计,在2003年,全球大约有80亿片嵌入式可编程微处理器。
到2010年全球有160亿片嵌入式可编程微处理器,地球上平均每人有三个处理器。
在2013年,这个数字还将持续增长。
1.3嵌入式web服务器
嵌入式系统是指以应用为中心,以计算机技术为基础,软件硬件可裁减,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成。
它具有“嵌入性”、“专用性”与“计算机系统”三个基本要素。
在当今数字信息技术、网络技术迅速发展的时代,嵌入式系统已经无处不在,并将不断涌现出新的嵌入式系统产品。
嵌入式Web服务器是一个Web服务器引入领域的测试和控制设备,在硬件平台和相应软件系统的支持下,它改变了传统的测量和控制使用的TCP/IP设备的通信协议,以网络技术为核心的网络测试和控制的并基于Internet的设备。
Web应用系统与传统系统相比,简化了系统结构,把信息收集和传播信息的集成到现场测量控制设备。
运用标准的接口和通信协议,从Web服务器的嵌入式设备也可以向任何连接到网络的合法用户提供统一的操作和控制界面。
由于Web技术的开放性和平台无关的特性,大大降低了软件维护、软件系统和通信系统设计的工作量,节省了人员培训费用,提高了测试和控制现场设备管理水平。
高端嵌入式设备快速发展,硬件成本显著下降,有的嵌入式系统硬件已经与通用计算机接近。
同时随着Internet的迅速发展,网络化的嵌入式产品已经成为IE产业的最大增长点,将嵌入式设备接入Internet将成为一种必然。
1.4嵌入式Web服务器的研究现状及关键问题
在中国,嵌入式系统开发已经有20多年的历史,从事嵌入式开发的工程师有数十万,但大多数是几个人的小组。
现今,我们面对的式嵌入式的工业化潮流,如果不能正确的认识到这一点,那么我们将错过上游产品开发的机遇。
嵌入式Web服务器主要具有以下优点:
1.统一的客户界面:
客户端只需要一个通用的浏览器,解决了统一用户界面的问题。
2.平台独立性:
浏览器所运行的平台与嵌入式Web服务器所在的平台无关,真正实现了跨平台。
3.高可扩展性:
服务器端可以在任何需要的时候进行功能的增强与扩展,而且管理员通过客户端即可完成这些操作,实现了远程管理和控制。
4.并行性与分布性:
嵌入式Web不仅实现了跨平台,也是一个多处理机系统和分布式系统,可并发的处理多个不同用户的服务请求。
嵌入式web技术就是要实现嵌入式系统连接到网络,要求嵌入式系统在软件上实现有关的Internet通信协议,解决数据的封装、编码及发送接收等问题;在硬件上具有一定的计算和存储能力,提供高效处理IP数据包需要的网络带宽和吞吐量。
由于嵌入式系统自身的特点,按照传统PC的方法将嵌入式系统接入网络存在很大的困难。
其困难在于,Internet上面的各种通信协议对于计算机存储器、运算速度等方面的要求比较高,而嵌入式系统中除部分犯位处理器以外,大量存在的是8位和16位嵌入式MCU,它们存储容量小,运行速度较慢,支持TCP/IP等Internet协议将占用大量系统资源。
另外,传统的TCP/IP协议在实现实时性方面做得不够好,它把大量的精力花在保证数据传送的可靠性以及数据流量的控制上。
而在实时性要求比较高的嵌入式领域中,传统的TCP/IP不能满足其实时要求。
因此,从简洁实用的角度出发,需要把传统TCP/IP在不违背协议标准的前提下加以改进实现,使其实现性得到提高,占用的存储空间尽可能少,以满足嵌入式应用的要求。
第二章STM32系统的硬件平台
2.1概述
嵌入式硬件平台包括中央处理器、外围的控制电路、只读存储器、可读写存储器、外围设备和网络控制单元。
由于嵌入式系统芯片的多样性,各模块芯片都有较大的选择空间。
在选择上述硬件平台模块的具体芯片时,通常需要考虑它们的功能、功耗、封装、体积、成本、可靠性、电磁兼容性等方面,并在尽量满足应用需求的同时尽量减少冗余功能,以节约成本。
本文根据实时监控的需要选择实验平台各模块的芯片。
2.2微处理器的选择
该系统要求直接接入网络,其中要运行嵌入式TCP/IP协议栈并最终实现一个嵌入式Web服务,要求CPU具有一定的数据处理能力及足够大的程序存储空间,而且要求价格低廉,以便于量化的生产。
在此选用32位嵌入式微处理器。
本文选用了一款基于ARMCortex-M3内核芯片—由意法半导体(ST)推出的STM32F103芯片。
STM32F103是意法半导体推出全新STM32互连型(Connectivity)系列微控制器中的一款性能较强产品,此芯片集成了各种高性能工业标准接口,且STM32不同型号产品在引脚和软件上具有完美的兼容性,可以轻松适应更多的应用。
该系列微处理器工作频率为72MHz,内置高达256K字节的Flash存储器和64K字节的SRAM,具有丰富的通用I/O端口。
STM32F103拥有全速USB(OTG)接口,两路CAN2.0B接口,以及以太网10/100MAC模块,非常适合本系统的要求。
作为最新一代的嵌入式ARM处理器,它为实现MCU的需要提供了低成本的平台、缩减的引脚数目、降低的系统功耗,同时提供了卓越的计算性能和先进的中断响应系统。
丰富的片上资源使得STM32F103系列微处理器在多种领域如电机驱动、实时控制、手持设备、PC游戏外设和空调系统等都显示出了强大的发展潜力。
2.3以太网控制器的选择
嵌入式设计人员越来越需要将连接功能加入应用之中。
以太网是局域网(LAN)的主要联网技术,可实现局域网内的嵌入式器件与互联网的连接。
嵌入式系统有了以太网连接功能,单片机便可经网络分发数据,并通过遥控方式进行控制。
以太网因其架构、性能、互操作性、可扩展性及开发简便,已成为嵌入式应用的标准通讯技术。
MicrochipTechnology(美国微芯科技公司)推出全球首枚28引脚独立以太网控制器,可为嵌入式应用提供低引脚数、低成本且高效易用的远程通讯解决方案。
设计人员可采用Microchip的ENC28J60以太网控制器,创建占位小、成本低、精简的嵌入式网络应用。
在此之前,嵌入式设计人员在为远程控制或监控提供应用接入时可选的以太网控制器都是专为个人计算系统设计的,既复杂、又占空间,且比较昂贵。
目前市场上大部分以太网控制器采用的封装均超过80引脚,而符合IEEE802.3协议的ENC28J60只有28引脚,就能既提供相应的功能,又可以大大简化相关设计,并减小占板空间。
此外,ENC28J60以太网控制器采用业界标准的SPI串行接口,只需4条连线即可与主控单片机连接。
这些功能加上由Microchip免费提供的、用于单片机的TCP/IP软件堆栈,使之成为目前市面上最小的嵌入式应用以太网解决方案。
ENC28J60以太网控制器的主要特点包括:
符合IEEE802.3:
内置10Mbps以太网物理层器件(PHY)及媒介接入控制器(MAC),可按业界标准的以太网协议可靠地收发信息包数据;
可编程过滤功能:
特殊的过滤器,包括Microchip的可编程模式匹配过滤器,可自动评价、接受或拒收MagicPacket™、单播(Unicast)、多播(Multicast)或广播(Broadcast)信息包,以减轻主控单片机的处理负荷;
10MbpsSPI接口:
业界标准的串行通讯端口,低至18引脚的8位单片机也具有网络连接功能;
可编程8KB双端口SRAM缓冲器:
以高效的方式进行信息包的存储、检索和修改,以减轻主控单片机的内存负荷。
该缓冲存储器提供了灵活可靠的数据管理机制。
2.4SPI通信协议
SPI总线是Motorola公司推出的三线同步接口,同步串行3线方式进行通信:
一条时钟线SCK,一条数据输入线MOSI,一条数据输出线MISO;用于CPU与各种外围器件进行全双工、同步串行通讯。
SPI主要特点有:
可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等
2.4.1SPI接口的引脚描述
表2-1SPI的引脚描述
引脚名称
类型
描述
SCK
串口时钟
作为主设备的输出,从设备的输入
NSS
从设备选择
从机选择。
SPI从机选择信号是一个低有效信号
MISO
主设备输入/从设输出引脚
该引脚在从模式下发送数据,在主模式下接收数据
MOSI
主设备输出/从设备输入引脚
该引脚在主模式下发送数据,在从模式下接收数据
2.4.2SPI特征
1.3线全双工同步传输。
2.带或不带第三根双向数据线的双线单工同步传输。
3.8或16位传输帧格式选择。
4.主或从操作。
5.支持多主模式。
6.8个主模式波特率预分频系数(最大为fPCLK/2)。
7.从模式频率(最大为fPCLK/2)。
8.主模式和从模式的快速通信。
9.主模式和从模式下均可以由软件或硬件进行NSS管理,主/从操作模式的动态改变。
10.可编程的时钟极性和相位。
11.可编程的数据顺序,MSB在前或LSB在前。
12.可触发中断的专用发送和接收标志。
13.SPI总线忙状态标志。
14.支持可靠通信的硬件CRC,在发送模式下,CRC值可以被作为最后一个字节发送。
2.4.3数据发送与接收过程
在接收时,接收到的数据被存放在一个内部的接收缓冲器中;在发送时,在被发送之前,数据将首先被存放在一个内部的发送缓冲器中。
对SPI_DR寄存器的读操作,将返回接收缓冲器的内容写入SPI_DR寄存器。
处理数据的发送与接收,当数据从发送缓冲器传送到移位寄存器时,设置TXE标志(发送缓冲器空),它表示内部的发送缓冲器可以接收下一个数据;如果在SPI_CR2寄存器中设置了TXEIE位,则此时会产生一个中断;写入SPI_DR寄存器即可清除TXE位。
注:
在写入发送缓冲器之前,软件必须确认TXE标志为‘1’,否则新的数据会覆盖已经在发送缓冲器中的数据。
2.5网络模块硬件接口原理图
图2-1网络模块原理图
上图所引出来的NET_INT,MISO,MOSI,SCK,NET_CS,NET_RST分别对应STM32F103的PB12,PA6,PA7,PA5,PA4,NRST管脚,这样连接起来就可以构成完整的硬件设计。
第三章嵌入式Web服务器TCP/IP协议栈
3.1概述
嵌入式Web服器的协议主要有两个,TCP/IP协议和HTTP协议。
TCP/IP起源于60年代末美国政府资助的一个分组交换网络研究项目,到90年代它已经成为计算机之间最常应用的组网形式。
它是一个真正的开放系统,协议族的定义及其多种实现是免费的。
在嵌入式Web服务器设计中,浏览器成了设备的前端控制板,web服务器可以向任何接入它所在网络的合法用户提供统一的基于浏览器方式的操作和控制界面。
而HTTP引擎是Web服务器的核心,Web服务器同Web浏览器之间的通信是通过HTTP协议进行的,这一通用的、无状态的、面向对象的协议是Web浏览器和Web服务器之间的应用层协议,是建构在TCP/IP协议基础之上的。
用一句话概括,TCP/IP协议是计算机与internet之间互联的基础,而HTTP引擎是web服务器的核心技术。
3.2嵌入式TCP/IP协议栈概述
嵌入式系统本身就是可裁剪的系统,同样,他可以根据自己的需要对TCP/IP协议栈进行删减,设计自己的协议族。
在嵌入式web服务器中,考虑到STM32F103的处理速度,只需要保留TCP/IP协议栈的基本功能,满足系统需要即可,主要能够实现的协议有ARP,IP,ICMP,TCP协议。
TCP/IP协议栈根据功能的不同进行分层,每一层完成特定的功能,并且服务于上、下层。
TCP/IP协议栈主要分为四层:
网络接口层、网络层、传输层、应用层。
网络接口层的主要作用是提供网络层和物理层之间的接口。
网络层的作用是IP寻址、封装数据、错误处理和诊断等。
应用层直接面向用户,运行的主要是HTTP协议。
应用层:
HTTP协议
传输层:
TCP协议
网络层:
IP(ARP、RARP、ICMP)
网络接口层:
Ethernet、SLIP、PPP
表3-1嵌入式TCP/IP协议栈结构图
3.3嵌入式TCP/IP协议栈数据处理流程
TCP/IP协议栈数据处理过程主要分两个部分。
第一部分是对接收到的以太网数据包进行处理,即数据帧的解包过程。
第二部分主要是对将要发送的数据进行打包,使用以太网数据包的格式发送出去,使该网络内所有的计算机都能接受到数据。
在数据处理的这两个主要功能之前,程序应该做好初始化工作。
应用层:
无
传输层:
TCP协议
网络层:
IP、ICMP协议
网络接口层:
ARP应答协议
表3-2TCP/IP协议子集
3.3.1数据的发送过程
发送过程描述为:
首先初始化程序,进入主循环,然后发送ARP数据包,判断TCP服务是否开启,若没有开启返回初始化。
开启TCP服务后,判断TCP是否处于监听状态,若是返回初始化。
继续判断TCP是否超时,超时则返回初始化,然后判断ARP发送请求位,-1则返回初始化,不是则进行TCP发送。
图3-1数据发送图
3.3.2数据的接收过程
数据接收过程描述:
程序的主循环中,首先初始化,然后判断接受的数据包是否为以太网数据帧,如果是检测以太网数据帧首部,判断是否为ARP数据帧,如果是ARP数据帧则进行ARP数据处理子程序,如果不是ARP数据帧,处理IP数据首部,判断是否为ICMP数据帧,如果是则进行ICMP处理,反之判断是否为TCP数据包,如果是则进行TCP数据处理,反之判断为错误帧,选择丢弃。
图3-2嵌入式TCP/IP协议栈处理数据流程图
3.4嵌入式Web服务器中TCP/IP栈的实现
3.4.1ARP协议实现
ARP协议指的是“AddressResolutionProtocol”(地址解析协议)的缩写。
在以太网中,两台主机之间通信必须知道对方的MAC地址。
目标MAC地址通过地址解析协议获得。
地址解析是指主机发送数据前将目标IP地址转换成MAC地址的过程。
ARP协议的主要作用就是通过目标设备的IP地址获得目标设备的MAC地址,是通信顺利进行。
ARP程序第一步检测以太网帧的类型字段,根据以太网类型字段来判断其协议类型。
在以太网标准中,一个携带ARP消息的以太网其类型字段必须包含十六进制值0806。
第二部,检测消息中的操作字段并根据这个消息字段来确认是一个请求消息还是一个应答消息。
当它是一个请求消息时,ARP程序比较目标IP地址与自己的IP地址,如果一样,则要回发一个应答消息。
程序流程如下图:
图3-3ARP协议解析图
3.4.2ARP发送模块
ARP发送模块主要任务便是ARP消息的发送,WEB服务器发送消息时,消息嵌入到以太网帧中广播出去并且匹配合适IP地址,由这台计算机做出应答流程图如图3.3所示
图3-4ARP发送数据包过程
ARP协议接受模块主要负责接收ARP数据,ARP的接收采用软中断方式,程序
ARP发送过程
ENC28J60Init(mymac); //ARP初始化函数
init_ip_arp_udp_tcp(mac,ip,wwwport);//初始化以台网IP层
if(eth_type_is_arp_and_my_ip(buf,plen))
{
make_arp_answer_from_request(buf);//arp数据发送
continue;
}
其中ENC28J60Init函数原型
voidENC28J60Init(unsignedchar*macaddr)
{
ENC28J60_CSH();
enc28j60WriteOp(ENC28J60_SOFT_RESET,0,ENC28J60_SOFT_RESET);
//dobank0stuff
NextPacketPtr=RXSTART_INIT;
//Rxstart
enc28j60Write(ERXSTL,RXSTART_INIT&0xFF);
enc28j60Write(ERXSTH,RXSTART_INIT>>8);
//setreceivepointeraddress
enc28j60Write(ERXRDPTL,RXSTART_INIT&0xFF);
enc28j60Write(ERXRDPTH,RXSTART_INIT>>8);
//RXend
enc28j60Write(ERXNDL,RXSTOP_INIT&0xFF);
enc28j60Write(ERXNDH,RXSTOP_INIT>>8);
//TXstart1500
enc28j60Write(ETXSTL,TXSTART_INIT&0xFF);
enc28j60Write(ETXSTH,TXSTART_INIT>>8);
//TXend
enc28j60Write(ETXNDL,TXSTOP_INIT&0xFF);
enc28j60Write(ETXNDH,TXSTOP_INIT>>8);
//dobank1stuff,packetfilter
enc28j60Write(ERXFCON,ERXFCON_UCEN|ERXFCON_CRCEN|ERXFCON_PMEN);
en