王濤,范寒柏,王磊,陳邵權
(華北電力大學 電氣與電子工程學院,保定071003)
隨著經濟的迅猛發展,用電需求量及電力負荷急劇增大,諧波作為目前電網中影響最為重要的一項指標,對電力系統的影響越來越嚴重。通過網絡傳輸采集和分析諧波數據,以實現對諧波的有效監測,便于更有效地控制諧波對電子系統的危害。
本文給出了基于STM32F207及DM9161A 的以太網具體實現方案,為電力系統設備提供便捷高效的網絡實現方法。
基于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 電力系統網絡控制部分電路板
此部分的主要工作是在硬件平臺的基礎上實現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.