于春雪
(哈尔滨理工大学 无线通信系统实验室,哈尔滨 150080)
随着信息技术的快速发展,网络技术的应用越来越广泛。以太网接口是以太网中各节点的通信基础,处于TCP/IP协议栈的数据链路层,是信息传递和管理的重要环节[1]。对于单片机来说,由于内部资源有限,既要完成主控任务,又要实现TCP/IP协议栈,难度较大,经综合考虑采用意法半导体公司生产的STM32F103作为控制核心[2]。韩国WIZnet公司生产的W5300芯片内部集成了以太网协议,可以简化软件设计,减少调试时间,从而缩短开发周期;同时,能够简化系统布局,有利于系统升级。
STM32F103是基于ARM Cortex-M3核的32位处理器芯片。其最高工作频率为72 MHz;内置高速存储器(512 KB Flash、64 KB RAM);丰富的增强I/O 端口和外设资源,包括5路 USART、2个12通道DMA控制器、3路 SPI以及 12位的 ADC、DAC、FSMC、SDIO、USB、CAN、I2C等;具有标准和先进的通信接口;提供可编程电压检测器(PVD),保证整个系统的稳定工作,提高抗干扰能力;温度传感器直接与内部ADC相连,能够对器件周围环境的温度进行监测;工作温度为-40~85℃[3],能够满足设计的要求。
W5300是一款高性能以太网芯片,采用 0.18 μ m CMOS工艺,内部集成10/100M以太网控制器,MAC和TCP/IP协议栈。它支持固件 TCP/IP协议 TCP、UDP、ICMP、IPv4、ARP 、IGMP 、PPPoE、Ethernet;8 个独立端口同时工作;高速网络数据传输,速度可达到50 Mbps;支持混合网络TCP/IP协议栈(软件/硬件 TCP/IP协议栈);支持存储器到存储器的DMA功能(只有16位数据总线宽度才支持,从模式);内嵌10BaseT/100BaseTX的以太网物理层;自动握手功能(全双工,半双工);自动 MDI/MDIX(信号线极性交叉);LED网络指示;第三方物理(PHY)接口;支持8/16位数据总线;支持2种主机接口模式(直接访问模式和间接访问模式)等[4-5]。
系统硬件结构框图如图1所示。该系统包括以下几个模块:
①电源模块,为系统工作提供稳定的电源;
②晶振模块,为系统提供时钟;
③复位模块,复位MCU;
④RS232接口模块,输出调试信息及部分网络信息的设置;
⑤I2C存储模块,用于大量信息的存储;
⑥JTAG接口模块,下载程序;
⑦W5300模块,实现以太网功能;
⑧RJ45接口模块,以太网接口。
图1 系统硬件结构框图
STM32F103与W5300的接口电路如图2所示。W5300的数据线DATA0~DATA15与 STM32F103的D0~D15相连;W5300的地址线 ADDR0~ADDR15与STM32F103的A0~A15相连;STM32F103的片选信号/CS与W5300的FSMC_NE4相连,使W5300映射到主机的地址范围为0x6C000000~0x6C0003FF;STM32F103的读使能信号/RD与W5300的 FSMC_NOE相连;STM32F103的写使能信号/WR与W5300的FSMC_NWE相连;因为STM32F103需要供电电压3.0 V以上才能够正常工作,所以要求复位时间较长,采用软件对其进行硬件复位,以保证正确复位。系统采用内部PHY模式,相应的TEST_MODE[3:0]引脚均拉低;采用16位数据总线传输,相应的BIT16EN引脚要接高电平;采用直接访问模式。
图2 W5300与STM32F103的接口电路
IAR EWARM(IAR Embedded Workbench for ARM)是一个针对ARM处理器的集成开发环境,它包含项目管理器、编辑器、C/C++编译器和 ARM 汇编器、连接器XLINK和支持 RTOS的调试工具C-SPY。在 EWARM环境下,可以使用C/C++和汇编语言方便地开发嵌入式应用程序。较其他的ARM开发环境而言,IAR EWARM具有入门容易、使用方便和代码紧凑等特点[6-7]。
J-Link是SEGGER公司为支持仿真ARM内核芯片推出的JTAG仿真器。配合 IAR EWARM、ADS、Keil、WinARM、RealView等集成开发环境,即可支持所有ARM7/ARM9内核芯片的仿真,仿真通过RDI接口和各集成开发环境进行无缝连接。它具有操作方便、连接方便、简单易学的特点,是ARM处理器最实用的开发工具。
W5300的 Socket就可以配置为TCP、UDP、IPRAW、MACRAW模式进行数据的发送或接收。基于一般工程的应用模式,下面只讨论TCP和UDP的通信流程。由于W5300固化了TCP/IP协议栈,只需创建Socket接口即可实现网络通信,大大简化了软件设计流程。其主程序如下:
以UDP为例介绍Socket接口的设计。UDP是一种不可靠的、无连接的数据传输方式。它不需要建立连接就可以进行数据传输[2]。UDP通信流程如图3所示[8]。
图3 UDP通信流程
UDP服务器的测试方法是:打开 SocketTool,创建UDP客户端模式,设置好对方IP、对方端口、本地端口后,在数据发送窗口中输入字符串“Please send data”,点击发送数据后,在数据接收与提示窗口中将显示接收到的字符串“Hello Harbin!” 。
UDP客户端的测试方法是:打开 SocketTool,创建UDP服务器模式,设置好本地端口后,在数据接收与提示窗口中将显示以一定的时间间隔接收到的字符串“Hello Harbin!”。
测试结果表明,该系统运行稳定,实现了以太网的接口功能;没有操作系统的支持实现单芯片与Internet的连接,可以为嵌入式网络的开发提供硬件平台[9]。
编者注:本文为期刊缩略版,全文见本刊网站www.mesnet.com.cn。
[1]王桂云,侯思祖.基于ARM7的以太网接口的设计与实现[J].微计算机信息,2009,25(2):124-204.
[2]桑淑丽.基于以太网的远程监控改造[J].电脑知识与技术,2011,7(4):924-925.
[3]意法半导体(中国)投资有限公司.STM32F10xxx参考手册[OL].[2011-05].http://www.st.com/mcu/.
[4]北京博控自动化技术有限公司.W5300用户数据手册[OL].(2009-09)[2011-05].http://www.bocon.com.cn.
[5]谭开洪.基于W5300的嵌入式以太网接口设计[J].中国西部科技,2010,9(9):31-49.
[6]万利电子有限公司.IAR EWA RM快速入门[OL].[2011-05].http://www.manley.com.cn.
[7]徐爱钧.IAR EWARM嵌入式系统编程与实践[M].北京:北京航空航天大学出版社,2006.
[8]王铁流,秦璐璐,李宗方,等.基于STM32嵌入式系统的智能控制网络终端设计[J].电子元器件应用,2009(6):13-17.
[9]莫全力,李国义,苗壮壮,等.基于ARM平台的嵌入式系统以太网接口的设计与实现[J].辽宁工业大学学报,2009,29(2):87-89.