APP下载

STM32F207和DM9161A的以太网实现方案

2012-08-27王涛范寒柏王磊陈邵权

单片机与嵌入式系统应用 2012年12期
关键词:物理层以太网代码

王涛,范寒柏,王磊,陈邵权

(华北电力大学 电气与电子工程学院,保定071003)

引 言

随着经济的迅猛发展,用电需求量及电力负荷急剧增大,谐波作为目前电网中影响最为重要的一项指标,对电力系统的影响越来越严重。通过网络传输采集和分析谐波数据,以实现对谐波的有效监测,便于更有效地控制谐波对电子系统的危害。

本文给出了基于STM32F207及DM9161A 的以太网具体实现方案,为电力系统设备提供便捷高效的网络实现方法。

1 硬件的实现

基于STM32F207的以太网接口实质是内部的MAC单元控制PHY 的过程,两者通过MII/RMII接口传送数据。

MAC(Media Access Control)即媒体访问控制子层协议。该协议位于OSI七层协议中数据链路层的下半部分,主要负责控制与连接物理层的物理介质。

PHY(Physical Layer)是物理接口收发器,它实现物理层的数据编码与解码,直接提供可使用的数据流到MAC层。

MII(Media Independent Interface,媒体独立接口)是指在不对MAC硬件重新设计或替换的情况下,任何类型的PHY 设备都可以正常工作;RMII(Reduced Media Independant Interface,简化媒体独立接口),是标准的以太网PHY 接口之一。

MII数据接口总共需要16个信号,由于其信号线较多,在实际中应用较繁琐。而RMII只需要7根信号线,大大减少了实际的物理连线,有效地降低了硬件的复杂度及成本。因此,此次实现采用RMII物理层接口。

意法半导体公司的STM32F207 系列处理器自带IEEE802.3的MAC,只需增加PHY 物理层芯片就可以连接到TCP/IP网络,此次实现是基于STM32F207ZGT6处理器[1]。

STM32F207以太网接口的特性如下:

◆支持10 Mb/s和100 Mb/s速率;

◆专用的DMA 控制器能够高速地传输数据;

◆支持VLAN 模式;

◆半双工/双工模式;

◆支持MAC控制层;

◆内置32位CRC校验。

STM32F207的以太网连接方式有MII和RMII两种接口,以下以 RMII 接口方式概述 DM9161A 与STM32F207处理器的硬件连接。

STM32F207提供标准的RMII硬件接口,只需要按照数据手册的标识进行对应连接即可,此次实现的连接方式如表1所列。

表1 STM32F207硬件连接表

DM9161A 的实现电路如图1所示。DM9161A 的RMII_REF_CLK 信号由STM32F207的内部MCO 提供,在简化了硬件设计的同时也可以减少硬件成本[2]。HR911105A 是电路的网络接口。

网络控制部分的电路板如图2所示。

图1 DM9161A硬件实现电路

图2 电力系统网络控制部分电路板

2 软件的实现

此部分的主要工作是在硬件平台的基础上实现TCP/IP协议栈,由于TCP/IP协议栈较复杂,功能实现比较困难,一般选择成熟的TCP/IP 协议栈进行移植,此次选择开源并且较成熟的LwIP以太网协议栈[3]。

LwIP(Light Weight IP)是瑞士计算机科学院开发的一套用于嵌入式系统的开放源代码TCP/IP协议栈,可移植性强,对资源要求较低,在实现TCP/IP 协议主要功能的基础上减少对RAM 的占用。一般它只需要几百KB的RAM 和40KB 左右的ROM 就可以运行,这使得LwIP协议栈适合在低端的嵌入式系统中使用。

移植工作在ST 公司提供的STM32F207以太网接口驱动的基础上进行,针对DM9161A 芯片更改部分底层驱动代码,包括时钟配置、端口配置及PHY 地址配置等,移植工作一般需要几个小时即可完成。

LwIP提供了在TCP/IP 协议栈中比较常用的TCP及UDP两种功能。TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(transport layer)通信协议;UDP是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。TCP一般用于对数据可靠性要求较高,但是数据传输速度较低的情况。而UDP的传输速度较快,但是可靠性较低,需要应用层保证数据到达的有效性,而在此应用中需要传输的数据量较小,但是对可靠性要求较高,因此选择TCP通信模式。

LwIP提供了两套API:底层的基于回调(callback)的raw API和高层的顺序模型的API(类似BSD Socket)。

顺序模型的API为普通的顺序程序提供使用协议栈的API,和BSD 风格的API很相似,也是基于阻塞的open-read-write-close模式。鉴于TCP/IP 协议栈本身就基于时间,所以TCP/IP代码和应用程序的代码必须在不同的线程中,因此此种模式需要提供操作系统的支持。

而raw API可以让应用程序和TCP/IP 协议栈代码结合得更紧密。程序的执行也是基于事件的,使用回调函数的机制。这种方式TCP/IP 代码和应用代码运行在同一个线程中,因此这种模式可以在没有操作系统支持的情况下使用。

实际上,顺序模型的API也是基于raw API实现的。此次实现使用的是raw API,降低对硬件及软件资源的需求,而raw API是基于事件驱动的,在数据的响应速度上也存在一定的优势。

raw API的操作方法与顺序模型基本类似,只是程序的运行模式不一样,需要采用回调式的编程思想。基本动作包括建立连接、发送数据、接收数据、关闭连接4类,每一类根据不同的需求提供了不同的接口函数。

结 语

经过测试,在STM32F207 处理器及DM9161A 硬件平台上移植LwIP 协议栈可以实现TCP、UDP 等功能并稳定地运行,为后续基于此平台开发电力系统的通信网络提供良好的基础。

[1]STMicroelectronics.STM32F2XX advanced ARM-based 32-bit MCUs[EB/OL].(2011-12-15)[2012-06-25].http://www.st.com.

[2]DAVICOM Semiconductor Inc.DM9161A 10/100 Mbps Fast Ethernet Physical Layer Single Chip Transceiver[EB/OL].(2009-10-16)[2012-06-25].http://www.davicom.com.tw.

[3]Adam Dukels.Design and Implementation of the LwIP TCP/IP[EB/OL].[2012-06-25].http://wenku.baidu.com/view/e8b6dabbfd0a79563c1e7270.html.

猜你喜欢

物理层以太网代码
基于K-ML-MPWFRFT的物理层安全传输技术
基于1500以太网养猪场的智能饲喂控制系统的设计与实现
公路联网电子不停车收费系统路侧单元物理层自动测试软件研发
创世代码
创世代码
创世代码
创世代码
谈实时以太网EtherCAT技术在变电站自动化中的应用
多天线物理层安全传输系统性能分析
一种90W高功率以太网供电系统的设计