王濤,范寒柏,王磊,陳邵權(quán)
(華北電力大學(xué) 電氣與電子工程學(xué)院,保定071003)
隨著經(jīng)濟(jì)的迅猛發(fā)展,用電需求量及電力負(fù)荷急劇增大,諧波作為目前電網(wǎng)中影響最為重要的一項(xiàng)指標(biāo),對(duì)電力系統(tǒng)的影響越來越嚴(yán)重。通過網(wǎng)絡(luò)傳輸采集和分析諧波數(shù)據(jù),以實(shí)現(xiàn)對(duì)諧波的有效監(jiān)測(cè),便于更有效地控制諧波對(duì)電子系統(tǒng)的危害。
本文給出了基于STM32F207及DM9161A 的以太網(wǎng)具體實(shí)現(xiàn)方案,為電力系統(tǒng)設(shè)備提供便捷高效的網(wǎng)絡(luò)實(shí)現(xiàn)方法。
基于STM32F207的以太網(wǎng)接口實(shí)質(zhì)是內(nèi)部的MAC單元控制PHY 的過程,兩者通過MII/RMII接口傳送數(shù)據(jù)。
MAC(Media Access Control)即媒體訪問控制子層協(xié)議。該協(xié)議位于OSI七層協(xié)議中數(shù)據(jù)鏈路層的下半部分,主要負(fù)責(zé)控制與連接物理層的物理介質(zhì)。
PHY(Physical Layer)是物理接口收發(fā)器,它實(shí)現(xiàn)物理層的數(shù)據(jù)編碼與解碼,直接提供可使用的數(shù)據(jù)流到MAC層。
MII(Media Independent Interface,媒體獨(dú)立接口)是指在不對(duì)MAC硬件重新設(shè)計(jì)或替換的情況下,任何類型的PHY 設(shè)備都可以正常工作;RMII(Reduced Media Independant Interface,簡(jiǎn)化媒體獨(dú)立接口),是標(biāo)準(zhǔn)的以太網(wǎng)PHY 接口之一。
MII數(shù)據(jù)接口總共需要16個(gè)信號(hào),由于其信號(hào)線較多,在實(shí)際中應(yīng)用較繁瑣。而RMII只需要7根信號(hào)線,大大減少了實(shí)際的物理連線,有效地降低了硬件的復(fù)雜度及成本。因此,此次實(shí)現(xiàn)采用RMII物理層接口。
意法半導(dǎo)體公司的STM32F207 系列處理器自帶IEEE802.3的MAC,只需增加PHY 物理層芯片就可以連接到TCP/IP網(wǎng)絡(luò),此次實(shí)現(xiàn)是基于STM32F207ZGT6處理器[1]。
STM32F207以太網(wǎng)接口的特性如下:
◆支持10 Mb/s和100 Mb/s速率;
◆專用的DMA 控制器能夠高速地傳輸數(shù)據(jù);
◆支持VLAN 模式;
◆半雙工/雙工模式;
◆支持MAC控制層;
◆內(nèi)置32位CRC校驗(yàn)。
STM32F207的以太網(wǎng)連接方式有MII和RMII兩種接口,以下以 RMII 接口方式概述 DM9161A 與STM32F207處理器的硬件連接。
STM32F207提供標(biāo)準(zhǔn)的RMII硬件接口,只需要按照數(shù)據(jù)手冊(cè)的標(biāo)識(shí)進(jìn)行對(duì)應(yīng)連接即可,此次實(shí)現(xiàn)的連接方式如表1所列。
表1 STM32F207硬件連接表
DM9161A 的實(shí)現(xiàn)電路如圖1所示。DM9161A 的RMII_REF_CLK 信號(hào)由STM32F207的內(nèi)部MCO 提供,在簡(jiǎn)化了硬件設(shè)計(jì)的同時(shí)也可以減少硬件成本[2]。HR911105A 是電路的網(wǎng)絡(luò)接口。
網(wǎng)絡(luò)控制部分的電路板如圖2所示。
圖1 DM9161A硬件實(shí)現(xiàn)電路
圖2 電力系統(tǒng)網(wǎng)絡(luò)控制部分電路板
此部分的主要工作是在硬件平臺(tái)的基礎(chǔ)上實(shí)現(xiàn)TCP/IP協(xié)議棧,由于TCP/IP協(xié)議棧較復(fù)雜,功能實(shí)現(xiàn)比較困難,一般選擇成熟的TCP/IP 協(xié)議棧進(jìn)行移植,此次選擇開源并且較成熟的LwIP以太網(wǎng)協(xié)議棧[3]。
LwIP(Light Weight IP)是瑞士計(jì)算機(jī)科學(xué)院開發(fā)的一套用于嵌入式系統(tǒng)的開放源代碼TCP/IP協(xié)議棧,可移植性強(qiáng),對(duì)資源要求較低,在實(shí)現(xiàn)TCP/IP 協(xié)議主要功能的基礎(chǔ)上減少對(duì)RAM 的占用。一般它只需要幾百KB的RAM 和40KB 左右的ROM 就可以運(yùn)行,這使得LwIP協(xié)議棧適合在低端的嵌入式系統(tǒng)中使用。
移植工作在ST 公司提供的STM32F207以太網(wǎng)接口驅(qū)動(dòng)的基礎(chǔ)上進(jìn)行,針對(duì)DM9161A 芯片更改部分底層驅(qū)動(dòng)代碼,包括時(shí)鐘配置、端口配置及PHY 地址配置等,移植工作一般需要幾個(gè)小時(shí)即可完成。
LwIP提供了在TCP/IP 協(xié)議棧中比較常用的TCP及UDP兩種功能。TCP是一種面向連接(連接導(dǎo)向)的、可靠的、基于字節(jié)流的運(yùn)輸層(transport layer)通信協(xié)議;UDP是OSI參考模型中一種無連接的傳輸層協(xié)議,提供面向事務(wù)的簡(jiǎn)單不可靠信息傳送服務(wù)。TCP一般用于對(duì)數(shù)據(jù)可靠性要求較高,但是數(shù)據(jù)傳輸速度較低的情況。而UDP的傳輸速度較快,但是可靠性較低,需要應(yīng)用層保證數(shù)據(jù)到達(dá)的有效性,而在此應(yīng)用中需要傳輸?shù)臄?shù)據(jù)量較小,但是對(duì)可靠性要求較高,因此選擇TCP通信模式。
LwIP提供了兩套API:底層的基于回調(diào)(callback)的raw API和高層的順序模型的API(類似BSD Socket)。
順序模型的API為普通的順序程序提供使用協(xié)議棧的API,和BSD 風(fēng)格的API很相似,也是基于阻塞的open-read-write-close模式。鑒于TCP/IP 協(xié)議棧本身就基于時(shí)間,所以TCP/IP代碼和應(yīng)用程序的代碼必須在不同的線程中,因此此種模式需要提供操作系統(tǒng)的支持。
而raw API可以讓應(yīng)用程序和TCP/IP 協(xié)議棧代碼結(jié)合得更緊密。程序的執(zhí)行也是基于事件的,使用回調(diào)函數(shù)的機(jī)制。這種方式TCP/IP 代碼和應(yīng)用代碼運(yùn)行在同一個(gè)線程中,因此這種模式可以在沒有操作系統(tǒng)支持的情況下使用。
實(shí)際上,順序模型的API也是基于raw API實(shí)現(xiàn)的。此次實(shí)現(xiàn)使用的是raw API,降低對(duì)硬件及軟件資源的需求,而raw API是基于事件驅(qū)動(dòng)的,在數(shù)據(jù)的響應(yīng)速度上也存在一定的優(yōu)勢(shì)。
raw API的操作方法與順序模型基本類似,只是程序的運(yùn)行模式不一樣,需要采用回調(diào)式的編程思想。基本動(dòng)作包括建立連接、發(fā)送數(shù)據(jù)、接收數(shù)據(jù)、關(guān)閉連接4類,每一類根據(jù)不同的需求提供了不同的接口函數(shù)。
經(jīng)過測(cè)試,在STM32F207 處理器及DM9161A 硬件平臺(tái)上移植LwIP 協(xié)議棧可以實(shí)現(xiàn)TCP、UDP 等功能并穩(wěn)定地運(yùn)行,為后續(xù)基于此平臺(tái)開發(fā)電力系統(tǒng)的通信網(wǎng)絡(luò)提供良好的基礎(chǔ)。
[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.