0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于STM32F103RB微处理器和W5100芯片实现嵌入式Web服务器的设计

牵手一起梦 来源:电子产品世界 作者:王铁流,高嵩,袁 2021-05-05 16:54 次阅读

作者:王铁流,高嵩,袁海英,李宗方,秦璐璐

目前,网络化控制己成为远程控制的主要研究方向,利用网络实现对局域乃至全球范围内设备的监控是工业控制系统的发展趋势。嵌入式 Internet远程监控技术作为网络化控制的代表,它解决了工业控制领域中异构网络互联问题,提高了传统装备的智能化水平,促进了传统产业结构的调整。嵌入式Web服务器尤其适用于嵌入式Internet应用,它通过Ethernet或Modem的连接可以轻松连接到任何网络,真正实现对设备的远程管理和控制。

实现方案

嵌入式Web服务器必须具备的基本功能包括:可控制与其连接的设备并获取设备的状态和数据;现场信息可以网页形式发布;可及时响应远程用户的控制命令。此外,嵌入式设备应具有功能简单、功耗低和便携等特点。为此,设计的系统如图1所示。

o4YBAGB9RduAHDF_AABRqsZdEhw057.png

本系统采用了ST公司的Cortex-M3内核的STM32微处理器STM32F103RB。该芯片属于STM32系列的增强型,提供多达 128KB的片内Flah、20KB的RAM和丰富的外设接口。Cortex-M3内核在设计上专门考虑了满足集功耗低、实时性强的工业级嵌入式产品领域的特点。在性能相同的条件下,STM32产品功耗比同级别产品要低75%,工作环境温度达105℃。因为集成度很高,除一个电源外,LQFP100封装芯片的最小系统只需要外接7个电容即可。

TCP/IP协议栈由W5100来支持,它集TCP/IP协议栈、以太网MAC和PHY为一体,其内部16KB的发送/接收缓冲区可快速进行数据交换,最大通信速率达到25Mbps;内嵌10BaseT/100BaseTX以太网物理层,支持自动应答;提供多种总线接口方式,可以很方便地与各种 MCU连接,简化了硬件电路设计,使嵌入式系统在没有操作系统的支持下,真正实现单芯片接入因特网的理想。

为减少PCB板面积和布线复杂性,考虑到系统的数据传输率要求不高,选择SPI接口作为STM32F103RB和W5100的连接方式。STM32F103RB、W5100和RJ45接口构成一个典型的嵌入式Web服务器。

作为一个应用实例,本设计利用STM32F103RB的片上ADC和GPIO,将服务器与LED压力传感器相连,一旦服务器接收到来自浏览器端的连接请求,服务器将及时响应,将当前的压力参数、LED状态和温度等信息嵌入到Web页面并发布到网上,这样现场的各种信息就呈现在浏览器。此外,用户通过网页上的控制按钮可以远程控制LED状态,操作结果能及时反馈在网页上。

硬件设计

图2为嵌入式Web服务器的简化电路图,主要显示了构成服务器的三个核心器件的连接方式。RJ45接口是带有网络变压器的物理层接口。在W5100中,通过将SEN引脚经10KΩ电阻上拉到高电平以使能其处于SPI从模式。CS为片选,MISO和MOSI为两条数据传输线。W5100的SPI工作时钟由处于主模式的 STM32F103RB提供。为方便STM32F103RB判断W5100的工作状态,必须将W5100的中断引脚INT与STM32F103RB的外部中断线相连接。W5100的第5、6、8和9引脚是PHY信号线,用于与RJ45接口相连接。除电源相关引脚外,W5100的其它引脚可以选择置空。

pIYBAGB9ReWABLMMAACuwEdUN2Q091.png

软件设计

主程序

主程序流程图如图3所示。

pIYBAGB9RfGAFgyOAABeLQPztYU739.png

当程序开始启动时,程序首先初始化STM32和W5100,配置STM32工作在SPI主模式,而W5100工作在从模式,启动STM32的A/D和片上的温度传感器,配置W5100工作于TCP服务器模式,在TCP服务器模式下,端口的状态转换如图4所示。在使用内部温度传感器时要注意:温度传感器在从调电模式唤醒后到它能以正常水平输出采样电压前有一段建立时间;ADC唤醒后同样需要一段建立时间,为使延迟最小,ADON位(用于启动A/D转换)和TSVREFE位(用于将温度传感器从调电模式中唤醒)应该同时置位。另外,对温度传感器的采样时间要大于2.2μs。

pIYBAGB9RfyAUBgxAACfOQYvoYw635.png

接下来是一个无限循环体,程序开始不断检查外部中断状态标志(WInterFlag)和Socket接收数据状态标志(SockRecvFlag)是否改变,同时开始处理A/D转换的数据,以保证服务器在产生网页时能得到当前的各种数据。

一旦W5100的Socket端口有中断事件产生时,W5100将通过其中断引脚INT触发STM32的外部中断,使STM32进入外部中断处理函数改变WInterFlag,程序接着进入处理W5100中断事件函数,在此函数中,STM32通过访问W5100的中断寄存器(IR)和端口0中断寄存器(S0_IR)判断出W5100的端口0产生何种中断事件,若Socket接收到数据,则改变SockRecvFlag。

程序检测到SockRecvFlag发生改变,立即进入处理接收数据函数。处理接收数据函数是整个程序的核心,它主要负责收发数据、解析HTTP协议和响应用户的不同请求。图5为该过程的程序流程图。

数据处理程序

HTTP协议是一种请求/响应协议。在基于HTTP的客户/服务器数据交换时,当HTTP请求产生时,就开始一次HTTP通信。过程如下:浏览器提取出URL中的主机后,向DNS发出请求,解析主机名的IP地址;DNS解析地址并将结果返回给浏览器;浏览器向该地址请求建立TCP连接;浏览器发出请求报文;服务器向浏览器发送响应报文,并将指定数据发送给浏览器;断开连接。

根据HTTP协议规定,如果客户端没有发出请求,则服务器不会自动发送页面。因此通过在网页程序中加入标记,使浏览器在无用户干预下周期性地刷新页面,从而保证用户及时地获得远程现场的信息。

HTTP消息包括一个起始行、零个或多个消息头域、一个标示头域结束的实体行和一个可能存在的消息体。本程序主要解析消息的起始行,而忽略其它内容,这种处理思路也符合嵌入式系统硬件对软件实现的复杂度要求。请求方法决定了对请求URI所指定的资源进行操作的方式,GET方法读取URL指定的资源,一般用来向服务器传输少量且透明的数据,数据总量被限制在255个字符以内,而POST方法可传输大量数据,与HTML的表单特性相配合以实现远程动态交互控制。

当连接开始时,客户端发送GET方法请求给服务器,以访问服务器网页,为限定特定用户访问,增加数据安全性,在网页中加入基本认证机制。当客户端请求受基本认证机制保护的网页时,服务器即要求用户认证,服务器端对用户的登陆信息按Base64码解码,只有认证成功,浏览器才能获得正确的网页数据。正确的控制网页如图6所示,若用户信息有误,服务器返回以状态码401为起始行的响应消息。

o4YBAGB9RgOAekRcAAC_O-FCZGQ406.png

由于服务器端检测的数据处在不停的变化之中,为使网页的数据也能及时地更新,网页程序初始化时,要显示的数据都使用字符串标记暂时表示,在每次发送响应消息到端口前,再将网页中定义字符串标记用当前设备的实际值替换。

对LED的控制,网页程序采用HTML语言的表单,HTTP协议请求方法采用POST。POST作为请求方法时,首先和Web服务器建立连接,成功后浏览器将HTML表单中的值发送给Web服务器。这种方式没有字符长度的限制,表单数据是作为附加的文档发送而不是作为URL的一部分发送。服务器程序通过判断客户的不同控制命令即时做出LED灯的开关响应。

在每次连接成功后,服务器端程序会返回以状态码200开头的响应消息,消息的起始行为:HTTP/1.1 200 OK。当用户请求一个服务器端不存在的文件时,服务器返回以状态码404开头的响应消息。

pIYBAGB9RguAZHcqAAC82gbSQBQ852.png

结语

这种利用硬件实现TCP/IP协议的网络芯片W5100及具有Cotex-M3内核的STM32处理器构成嵌入式Web服务器的方案性价比高。通过网络,用户在浏览器端可及时收到远程现场传感器采集的数据,远程现场的开关状态指示灯可实时地响应用户的开关信号操作请求。测试表明该系统传输大块数据文件的速率可达到100KBPS。为提高网络资源的安全性,可采用AES(Advanced Encryption Standard,先进加密标准)等编码机制来加密必须保护的私有数据。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    446

    文章

    47740

    浏览量

    409030
  • 服务器
    +关注

    关注

    12

    文章

    8104

    浏览量

    82485
  • 微处理器
    +关注

    关注

    11

    文章

    2128

    浏览量

    81396
收藏 人收藏

    评论

    相关推荐

    W5100网络芯片开发

    本人从事W5100网络芯片开发,目前能够实现多台产品对一个服务器进行数据传输,能够依靠W5100芯片
    发表于 11-19 14:37

    STM32F103RB

    哪位大神能给出用STM32F103RB芯片处理的1024道的程序?要求是使用inject模式交替触发。
    发表于 06-19 17:35

    采用嵌入式处理器PXA270与ARM-Linux相结合的Web服务器构建

    HOST、1个USB SLAVE、2个SSP接口等。因处理器的高性能、低成本、高效率等特点,广泛应用于PDA、智能电器、仪器仪表、监测控制等领域。3.2 软件设计嵌入式Web服务器
    发表于 04-11 07:00

    怎么使用w5100配置dspic33?

    Hai,我可以知道,我们如何使用DSPIC33 FJ128GP804配置W5100以太网模块。我想用WiSoCo长轮询来从W5100通信到服务器。有人能帮我解决吗?(我是PIC,SPI,W51
    发表于 03-06 10:46

    W5100 单片网络接口芯片

    W5100 是一款多功能的单片网络接口芯片,内部集成有 10/100Mbps 以太网控制,主要应用于高集成、高稳定、高性能和低成本的嵌入式系统中。使用
    发表于 06-20 09:51

    怎样去设计嵌入式WEB服务器

    怎样去设计嵌入式WEB服务器?怎样去设计嵌入式WEB服务器的软件?
    发表于 04-27 07:10

    怎么实现基于嵌入式WEB的视频服务器的设计?

    嵌入式WEB的网络视频监控系统的主要原理是什么?怎么实现基于嵌入式WEB的视频服务器的设计?
    发表于 06-07 06:21

    如何配置嵌入式服务器

    嵌入式Web服务器每个Spring Boot Web应用程序都包含一个嵌入式Web
    发表于 10-27 08:35

    常见的嵌入式web服务器有哪些

    常见的嵌入式web服务器有:Lighttpd, Shttpd, Thttpd, Boa, Mini_httpd, Appweb, Goahead, luaopenwrt用的就是lua。当然还有python
    发表于 10-27 08:24

    嵌入式Web服务器为什么不使用jetty

    嵌入式Web服务器不使用jetty,太麻烦了。配置也不熟悉。代码嵌入式Tomcat示例参考资料嵌入式Tomcat示例
    发表于 10-28 09:05

    基于ARM和Linux的嵌入式Web服务器的构建及应用

    摘要:本文主要研究了基于ARM和Linux的嵌入式Web服务器的构建及应用.随着互联网的飞速发展,越来越多的信息化产品需要接入互联网并通过Web页面进行远程访问和控制,
    发表于 11-05 06:07

    如何实现嵌入式Web服务器的设计?

    和交互性成为嵌入式系统网络化过程的必然选择.带有Web接入能力的嵌入式设备将会得到飞速的发展,应用在信息家电,通信设备,仪器仪表,远程管理等各个领域中.嵌入式
    发表于 11-09 06:44

    如何实现嵌入式WEB服务器系统的控制设计

    简单设计。本设计利用ARM 自带的WEB服务器技术,来实现嵌入式WEB服务器系统的控制设计。该
    发表于 11-09 08:47

    嵌入式Web服务器的设计与实现

    摘要:嵌入式Web服务器嵌入式系统应用的一个重要组成部分.以其简单,廉价,功能完善和通用性强等特点,在远程监控,智能家电和资源共享等多种场合得到广泛应用.本文以
    发表于 11-09 08:41

    嵌入式WEB服务器常见的有哪些

    嵌入式WEB服务器常见的有lighttpdshttpdthttpdboamathopdminihttpdappwebgoahead
    发表于 12-14 08:43