Board logo

标题: 基于Cortex-M3内核处理器的嵌入式Web服务器(1) [打印本页]

作者: 我是MT    时间: 2015-10-22 10:13     标题: 基于Cortex-M3内核处理器的嵌入式Web服务器(1)

引言
目前,网络化控制己成为远程控制的主要研究方向,利用网络实现对局域乃至全球范围内设备的监控是工业控制系统的发展趋势[1]。嵌入式 Internet远程监控技术作为网络化控制的代表,它解决了工业控制领域中异构网络互联问题,提高了传统装备的智能化水平,促进了传统产业结构的调整。嵌入式Web服务器尤其适用于嵌入式Internet应用,它通过Ethernet或Modem的连接可以轻松连接到任何网络,真正实现对设备的远程管理和控制。
实现方案
嵌入式Web服务器必须具备的基本功能包括:可控制与其连接的设备并获取设备的状态和数据;现场信息可以网页形式发布;可及时响应远程用户的控制命令。此外,嵌入式设备应具有功能简单、功耗低和便携等特点。为此,笔者设计的系统如图1所示。

图1 系统框图
本系统采用了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 的其它引脚可以选择置空。

图2为嵌入式Web服务器的简化电路图
软件设计
主程序
主程序流程图如图3所示。

图3 主程序流程图
当程序开始启动时,程序首先初始化STM32和W5100,配置STM32工作在SPI主模式,而W5100工作在从模式,启动STM32的A/D和片上的温度传感器,配置W5100工作于TCP服务器模式,在TCP服务器模式下,端口的状态转换如图4所示。

图4 W5100处于TCP服务器模式的端口状态转换图
在使用内部温度传感器时要注意:温度传感器在从调电模式唤醒后到它能以正常水平输出采样电压前有一段建立时间;ADC唤醒后同样需要一段建立时间,为使延迟最小,ADON位(用于启动A/D转换)和TSVREFE位(用于将温度传感器从调电模式中唤醒)应该同时置位。另外,对温度传感器的采样时间要大于2.2μs。
接下来是一个无限循环体,程序开始不断检查外部中断状态标志(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为该过程的程序流程图。

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




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0