STM32以太网控制系统
2014-06-07王海民王宏志
王海民, 王宏志
(长春工业大学计算机科学与工程学院,吉林长春 130012)
STM32以太网控制系统
王海民, 王宏志
(长春工业大学计算机科学与工程学院,吉林长春 130012)
基于STM32微控制器和以太网ENC28J60搭建了网络控制系统,详细阐述了系统的硬件和软件设计,实现Web服务器远程控制。
STM32;ENC28J60;以太网;Web
0 引 言
随着信息技术的发展,以PC为代表的计算机网络技术发展到一个更高阶段,以嵌入式智能设备为核心的后PC时代已经来临[1]。在面向慢速网络应用系统和网络设备中,对数据传输的速度要求不高,通常只需要完成现场传感数据采集与传输、远程设备控制等功能,可选择内部不带以太网的MAC控制器的微处理器,使用外加一个专用的以太网模块来实现,这些模块常见的有ENC28J60,CP2200,W5100等,成本低、接口简单、使用方便。
1 芯片介绍
1.1 STM32F103xx芯片
STM32F103xx增强型系列使用高性能的ARM Cortex-M3 32位的RISC内核,Cortex-M3处理器内核采用ARMv7-M架构,工作频率为72MHz,内置高速存储器(高达128K字节的闪存和20K字节的SRAM),丰富的增强I/O端口和联接到两条APB总线的外设。所有型号的器件都包含2个12位的ADC,3个通用16位定时器和1个PWM定时器,还包含标准和先进的通信接口:多达2个I2C和SPI,3个USART,1个USB和1个CAN[2]。STM32F103xx增强型系列工作于-40~+105℃的温度范围,供电电压2.0~3.6V,一系列的省电模式保证低功耗应用的要求。这些丰富的外设配置,使得STM32F103xx增强型微控制器适合用于医疗和手持设备、PC外设和GPS平台、汽车电子、数据通信、工业控制、消费类产品等多种应用场合[3-4]。
1.2 ENC28J60芯片
ENC28J60以太网控制器适合于创建占用空间小、成本低、精简的嵌入式网络应用。目前市场上大部分以太网控制器采用的封装均超过80引脚,接线复杂,占用电路板空间大[5]。而符合IEEE802.3协议的ENC28J60只有28引脚,既能提供以太网相应的功能,又大大简化相关设计,并减小占板空间。此外ENC28J60以太网控制器采用业界标准的SPI串行接口,只需4条连线即可与主控单片机连接,与主控制器的通信是通过两个中断引脚和SPI实现,两个专用的引脚用于连接LED,进行网络活动状态指示。它还提供了一个内部DMA模块,以实现快速数据吞吐和硬件支持的IP校验和计算。这些功能加上免费的TCP/IP软件协议栈,使之成为目前市面上最小的嵌入式应用以太网解决方案[6]。
2 系统硬件组成
系统硬件结构框图如图1所示。
图1 系统硬件结构图
该系统包括以下几点。
1)电源模块,为系统提供稳定的电源;
2)晶振模块,为系统提供时钟;
3)复位模块,复位MCU;
4)JTAG接口模块,下载程序;
5)启动模式选择模块,选择不同的启动模式;
6)ENC28J60模块,实现以太网功能;
7)RJ45接口模块,以太网接口。
网络变压器HR911105A外围电路接法如图2所示。以太网ENC28J60与STM32F103x的接法
图2 网络变压器HR911105A外围电路接法
如图3所示。
3 系统软件实现
3.1 开发环境RVMDK和仿真器J-Link简介
RealView MDK开发套件源自德国Keil公司,被全球超过10万的嵌入式开发工程师验证和使用,是ARM公司目前最新推出的针对各种嵌入式处理器的软件开发工具。RealView MDK集成了业内最领先的技术,融合了中国多数软件开发工程师所需的特点和功能。包括μVision3集成开发环境与RealView编译器,支持ARM7,ARM9和最新的Cortex-M3核处理器,自动配置启动代码,集成Flash烧写模块,强大的Simulation设备模拟,性能分析等功能,与ARM之前的工具包ADS等相比,RealView编译器的最新版本可将性能改善超过20%[7]。RealView MDK出众的价格优势和功能优势将成为ARM软件开发工具的标准。
J-Link是SEGGER公司为支持仿真ARM内核芯片推出的JTAG仿真器。配合IAR EWARM,WinARM,ADS,Keil,RealView等集成开发环境,即可支持所有ARM7/ARM9/ARM11和Cortex-M0/M1/M3核内核芯片的仿真,仿真通过RDI接口和各集成开发环境进行无缝连接,具有操作方便、连接方便、简单易学的特点,是ARM处理器最实用的开发工具[8-9]。
图3 以太网ENC28J60与STM32F103x的接法
3.2 主程序
#include"stm32f10x.h"
#include"led.h"
#include"spi_enc28j60.h"
#include"web_server.h"
int main(void)
{ SystemInit(); /*配置系统时钟为72M*/
LED_GPIO_Config(); /*配置LED*/
SPI_Enc28j60_Init();/*ENC28J60SPI接口初始化,调用库函数*/
Web_Server();/*ENC28J60WEB服务程序,在浏览器上创建一个web服务器,通过web里面的命令来控制开发板*/
return 0;
}
在配置ENC28J60SPI接口初始化时,有两个重要的配置是CPOL(时钟极性)和CPHA(时钟相位),ENC28J60SPI的时序图如图4所示。
图4 ENC28J60的SPI时序图
知其应配置为SPI_InitStructure.SPI_CPOL=SPI_CPOL_Low;
SPI_InitStructure.SPI_CPHA=SPI_CPHA_1Edge;
Web_Server主要是生成HTML格式的数据。构建一个交互式的网页,通过HTML提供“<ahref=”形式的代码,可以在网页中添加需要的连接,同时HTML还允许实现其它复杂的窗口效果。很关键的问题是,描述HTML窗口结构的代码相当复杂,难以解读。一个非常简单的解决方法是实现一个虚拟的文件夹和文件。而密码实际上就是需要访问的文件夹。需要输入:http://IP_or_HOST/Password,通过这个超级链接,实现一个虚拟的文件,而这个文件也就代表了用户请求所需要的指令。
程序的大体流程如图5所示。
图5 软件简要框图
4 实验现象与结论
IP地址和端口配置:一般把ENC28J60的IP地址配置成与测试电脑同一个IP段,例如PC机的IP是192.168.1.102,下面为了方便测试把ENC28J60的IP地址配置成192.168.1.42。Web Server默认的端口号是80,这样可以采用这个默认值。在web_server.c文件里完成如下配置:
static unsigned char myip[4]={192,168,1,42};
/*tcp/www监听端口号,范围为:1-254*/static unsigned int mywwwport=80;
密码设置:在Web Server里设置一个密码。如果不需要密码,也可以把设置密码这部分代码注释掉。密码设置在password数据组里,不超过9个字符:
PC机上用浏览器测试:运行上述程序之后,如果ENC28J60正常工作,RJ-45上的LED将亮。LED由ENC28J60通过软件配置控制,因此,如果LED亮,则说明SPI可正常通信,也说明ENC28J60已经处于工作状态,不过只是LED亮还不能说明ENC28J60完全正常工作,还需要进行ping测试,ping命令利用ICMP协议包来侦测另一个主机是否可达。原理是用类型码为0的ICMP发请求,收到请求的主机则用类型码为8的ICMP回应。可以用ping命令来计算间隔时间,并计算有多少个包被发送。用户可以判断网络大致的情况。可以看到,ping给出来了传送的时间和TTL的数据。
ping测试结果如图6所示。
图6 ping测试结果
Web测试:用ping命令测试完全成功之后,说明ENC28J60已经完全正常工作,在进行TCP通信部分和Web Server是否正常工作。在PC机的浏览器地址栏输入STM32板的Web Server网页地址http://192.168.1.42/201105,其中201105为密码,正常情况下可以看到Web测试界面,如图7所示。
鼠标单击“点亮LED”,可以控制STM32板上的LED亮。
测试结果表明,该系统运行稳定,实现了以太网的接口功能;没有操作系统的支持实现单芯片与Internet的连接,可以为嵌入式网络的开发提供硬件平台[10]。
图7 Web测试界面
[1]张冬泉,谭南林.Windows CE实用开发技术[M].北京:电子工业出版社,2006.
[2]意法半导体(中国)投资有限公司.STM32F10xxx参考手册[EB/OL].[2011-05-05].http://www.st.com/mcu/.
[3]Joseph Yiu.ARM Cortex-M3权威指南[M].宋岩,译.北京:北京航空航天大学出版社,2009.
[4]王志军.工业控制专用嵌入式以太网模块的开发[J].长春工业大学学报:自然科学版,2005,26(2):117-119.
[5]廖义奎.Cortex-M3之STM32嵌入式系统设计[M].北京:中国电力出版社,2013.
[6]刘琼,朱志伟,周志光.基于ENC28J60的嵌入式网络接口的设计[J].微计算机信息,2008,24:306-308.
[7]刘军.例说STM32[M].北京:北京航空航天大学出版社,2011.
[8]于春雪.STM32F1 03的高速以太网接口设计[J].新器件新技术,2011(9):44.
[9]莫全力,李国义,茁壮壮,等.基于ARM平台的嵌入式系统:以太网接口的设计与实现[J].辽宁工业大学学报,2009,29(2):87-89.
[10]尤文,王宏志,柳青蕴.具有非线性切换函数的变结构控制器设计[J].长春工业大学学报:自然科学版,1993,24(4):60-69.
STM32based ethenet control system
WANG Hai-min, WANG Hong-zhi
(School of Computer Science &Engineering,Changchun University of Technology,Changchun 130012,China)
Based on STM32microcontroller and Ethernet ENC28J60,a network control system is established.Both the hardware and software are introduced,by which web remote control is realized.Key words:STM32;ENC28J60;ethernet;Web.
TP 316
A
1674-1374(2014)04-0060-06
2013-10-14
教育部“春晖计划”项目(403-004077003)
王海民(1987-),男,汉族,河南周口人,长春工业大学硕士研究生,主要从事数字信号处理和嵌入式技术方向研究,E-mail:whaimin12@sina.com.