基于STM32處理器的硬件電路連接圖和軟件程序設(shè)計
本文介紹了一款單片網(wǎng)絡(luò)接口芯片W5100,該芯片內(nèi)部集成了TCP/IP硬件協(xié)議棧,支持多種網(wǎng)絡(luò)協(xié)議。給出了基于STM32處理器的硬件電路連接圖和軟件程序設(shè)計。目前,該系統(tǒng)已成功應(yīng)用在多個建筑能耗監(jiān)測項目中,運行結(jié)果表明該系統(tǒng)通信穩(wěn)定可靠,能夠滿足項目對遠(yuǎn)程數(shù)據(jù)傳輸?shù)男枨蟆?br/>
數(shù)據(jù)采集與傳輸系統(tǒng)一直是工業(yè)控制、環(huán)境參數(shù)監(jiān)測、建筑能耗信息監(jiān)測等多個領(lǐng)域共同關(guān)注的問題,尤其是針對遠(yuǎn)程數(shù)據(jù)傳輸問題。受傳輸距離的限制,傳統(tǒng)的現(xiàn)場總線通信方式只適合于近距離的數(shù)據(jù)傳輸;而基于GPRS技術(shù)的數(shù)據(jù)傳輸系統(tǒng)雖然可以不受距離的限制,但其按照流量進行收費,對于大量數(shù)據(jù)連續(xù)傳輸而言資費不低,在實際的項目中應(yīng)用也不是很廣泛。目前,基于以太網(wǎng)的數(shù)據(jù)傳輸系統(tǒng)以其成本低廉、通信速率高和支持遠(yuǎn)距離通信等諸多優(yōu)點,在監(jiān)測領(lǐng)域得到了越來越多的應(yīng)用。
常見的網(wǎng)絡(luò)驅(qū)動芯片有RTL8019、CS8900、ENC28J60、DM9000、W5100等,其中ENC28J60支持串行SPI接口通信方式,接口電路設(shè)計相對簡單。RTL8019、CS8900和DM9000都是并行總線式驅(qū)動方式,需要連接較多的數(shù)據(jù)線、地址線以及讀寫控制引腳等。W5100既支持串行SPI接口,同時也支持并行總線方式。這幾款芯片中除了W5100內(nèi)置TCP/IP協(xié)議棧之外,其余都需要用戶自己開發(fā)以太網(wǎng)驅(qū)動程序,需要占據(jù)大量的存儲空間以及寶貴的RAM內(nèi)存單元;而且,軟件的實現(xiàn)方式與硬件集成相比,穩(wěn)定性和可靠性也稍差。
1 W5100芯片介紹
W5100是韓國Wiznet公司生產(chǎn)的一款多功能的單片網(wǎng)絡(luò)接口芯片,內(nèi)部集成有10/100M以太網(wǎng)控制器,且經(jīng)過多年實際項目應(yīng)用驗證的硬件TCP/IP協(xié)議棧,提供全雙工以太網(wǎng)解決方案。與該公司之前的產(chǎn)品W3100相比,W5100內(nèi)部集成了物理層RTL8201CP核,它是一款集TCP /IP協(xié)議棧、以太網(wǎng)MAC和PHY為一體的網(wǎng)絡(luò)接口芯片,具有更高的集成度和更穩(wěn)定的工作性能,便于硬件實現(xiàn)。W5100芯片同時支持直接并行總線、間接并行總線和SPI串行總線共3種接口方式與主控芯片進行通信,可以滿足不同場合的需求。這些性能使得用戶不需要考慮以太網(wǎng)TCP/IP協(xié)議棧的移植等復(fù)雜的軟件驅(qū)動程序,可以像訪問外部存儲器一樣操作W5100,實現(xiàn)網(wǎng)絡(luò)通信功能。W5100的性能特點如下:
①內(nèi)嵌10/100BaseT以太網(wǎng)物理層;
②理論最大傳輸率可達25 Mb/s;
③支持自動MDI/MDIX,自動校正信號極性;
④支持ADSL連接(支持PPPOE協(xié)議中的PAD/CHAP認(rèn)證模式);
⑤支持4個獨立端口同時運行;
⑥內(nèi)置16 KB存儲器用于數(shù)據(jù)發(fā)送/接收緩存。
1.1 內(nèi)部結(jié)構(gòu)及引腳功能
如圖1所示,W5100將網(wǎng)絡(luò)協(xié)議的處理分成一個由特定處理器執(zhí)行的控制部分和一個硬件線路部分,實現(xiàn)硬件化的TCP、UDP、ICMP、IPv 4、ARP、IGMP以及PPPoE協(xié)議,含有連接以太網(wǎng)協(xié)議中的數(shù)據(jù)控制及MAC協(xié)議;按照功能可以將W5100的引腳分為與處理器接口的通信引腳、以太網(wǎng)物理層功能引腳、時鐘引腳、LED工作狀態(tài)指示引腳、電源引腳等幾類。直接總線接口方式需要用到ADDR[0~14]共15個引腳;而間接總線接口方式只需要用到地址線0和地址線1,其余的地址線ADDR[2~14]通過電阻接地即可;使用SPI接口方式時需要注意,必須將SEN引腳接高電平,才能使SPI功能有效,后面在硬件電路部分介紹。
1.2 寄存器功能介紹
W5100的寄存器可以分為通用寄存器和端口寄存器兩類。其中,通用寄存器包括對W5100的網(wǎng)絡(luò)配置、中斷、超時參數(shù)以及緩沖區(qū)大小等設(shè)置;端口寄存器是針對W5100的4個獨立的端口設(shè)置,包括端口模式寄存器、端口命令寄存器、端口中斷寄存器和端口狀態(tài)寄存器等在內(nèi)的共17個寄存器。
通用寄存器的詳細(xì)信息如表1所列。針對中斷寄存器IR共有7個中斷源,當(dāng)任何一個未被屏蔽的中斷置為高電平時,W5100的中斷輸出引腳INT將會一直保持低電平,MCU通過讀取IR寄存器定位中斷源,并進行中斷程序處理,之后清零IR中相應(yīng)的位,INT引腳才恢復(fù)為高電平。
W5100內(nèi)部共有16 KB發(fā)送/接收緩沖區(qū),發(fā)送和接收各占8 KB,默認(rèn)每個端口的發(fā)送和接收均為2 KB,即RMSR=TMSR=0x55,在實際使用過程中,用戶可以根據(jù)實際情況調(diào)整發(fā)送/接收緩沖區(qū)大小。如圖2所示,通過修改每個端口對應(yīng)的S1和S0寄存器可以修改相應(yīng)的端口緩沖區(qū)大小。
端口寄存器是分別針對4個獨立Socket的寄存器,以Sn_xx的形式表示,其中n取值為0、1、2、3。端口模式寄存器Sn_MR定義了該端口工作在TCP模式或者是UDP模式,不同模式下端口寄存器的表現(xiàn)形式不一,本文對此不作過多的闡述。
2 系統(tǒng)方案設(shè)計
本文核心處理器采用的是STM32F103VET6,它是一款基于Cortex—M3內(nèi)核的ARM處理器芯片,內(nèi)部集成了512K Flash程序存儲空間和64K的SRAM數(shù)據(jù)存儲空間。STM32F103VET6最高工作頻率72 MHz,含有資源外設(shè)接口,包括2個12位數(shù)/模轉(zhuǎn)換器、7個定時器、CAN總線接口、SPI通信接口、3路USART串行通信接口等資源。圖3展示了基于STM32F103VET6的W5100通信系統(tǒng)結(jié)構(gòu)圖,包括電源電路、時鐘電路、復(fù)位電路、
JTAG調(diào)試電路和W5100以太網(wǎng)通信電路。
2.1 硬件電路設(shè)計
本系統(tǒng)中STM32F103VET6處理器采用SPI串行接口方式與W5100進行通信,硬件電路連接如圖4所示。13F-60FGYDPNW2濾波器帶有網(wǎng)絡(luò)變壓器的RJ45接口元件。W5100的通信、控制引腳分別與STM32F103-VET6相連接,其中INT引腳連接PC4(外部中斷4),該引腳低電平有效。當(dāng)W5100產(chǎn)生連接、斷開、發(fā)送數(shù)據(jù)完成、接收到數(shù)據(jù)或者通信超時等情況時,該引腳將會產(chǎn)生一個從高電平到低電平的跳變,觸發(fā)一次中斷。W5100的RST_BG引腳需要通過一個12.3 kΩ的電阻接地,由于沒有標(biāo)稱12.3 kΩ的電阻,因此采用12 kΩ電阻+300 Ω精密電阻的方式連接。
W5100工作頻率較高,為了保證通信的穩(wěn)定性、可靠性,在設(shè)計PCB電路板的時候有幾點需要注意:
①RJ45接口元件與W5100之間的距離要足夠的??;
②終端匹配模塊要盡量地靠近網(wǎng)絡(luò)變壓器;
③晶振布局要遠(yuǎn)離網(wǎng)絡(luò)變壓器和TX、RX導(dǎo)線,避免對高速信號造成干擾;
④去耦電容距W5100的位置越近越好,導(dǎo)線相對越寬越好。
2.2 軟件程序設(shè)計
W5100的程序設(shè)計包括初始化和Socket驅(qū)動兩個部分,初始化過程主要對芯片內(nèi)部的各寄存器編程來實現(xiàn)芯片的復(fù)位、收發(fā)緩沖器設(shè)置等底層工作,初始化過程涉及的寄存器包括:
①RMSR(接收緩沖區(qū)寄存器)和TMSR(發(fā)送緩沖區(qū)寄存器)設(shè)置為0xAA(默認(rèn)為0x55),本系統(tǒng)中只用到了Socket0和Socket1兩個端口,岡此將緩沖區(qū)設(shè)置為4 KB,增大發(fā)送和接收空間。
②RTR(重發(fā)時間寄存器)按照默認(rèn)值設(shè)置,即200 ms(0x07D0)。通信過程中,當(dāng)發(fā)出連接、斷開等命令后,在200 ms內(nèi)沒有收到對方的響應(yīng)時,將會觸發(fā)重發(fā)機制。
③RCR(重發(fā)計數(shù)寄存器)設(shè)置為8次。
④IMR(中斷屏蔽寄存器),通過向相應(yīng)的中斷屏蔽位寫入1使能相應(yīng)的中斷源,指出了IMR的每一位對應(yīng)的中斷源,本系統(tǒng)中需要開啟7、6、1、0即可。即設(shè)置IMR寄存器為0xC3,中斷產(chǎn)生后,STM32F103VET6可以通過訪問IR寄存器獲得中斷來源,從而進行相應(yīng)的中斷程序處理。中斷屏蔽寄存器如下。
除了上面幾個寄存器之外,還需要設(shè)置MAC地址、IP地址、網(wǎng)關(guān)地址等,根據(jù)實際應(yīng)用向?qū)?yīng)的控制位寫入相應(yīng)的地址即可,這里不再贅述。
W5100可以工作在TCP和UDP兩種通信模式下,在不同的通信模式下又分為客戶端和服務(wù)器兩種工作狀態(tài),TCP是面向連接的以太網(wǎng)通信,相比UDP可以提供更可靠的通信服務(wù)。本文通過W5100建立TCP的客戶端工作模式,將采集到的數(shù)據(jù)通過以太網(wǎng)發(fā)送至數(shù)據(jù)中心的服務(wù)器。如圖5所示,客戶端首先向服務(wù)器發(fā)起請求連接,成功建立連接之后,當(dāng)周期性數(shù)據(jù)采集任務(wù)結(jié)束后,將向服務(wù)器發(fā)送數(shù)據(jù)包;如果遇到網(wǎng)絡(luò)阻塞,會產(chǎn)生通信超時或者沒有響應(yīng)等情況,將會終止一次通信連接,關(guān)閉Socket,然后重新發(fā)起新的連接請求,循環(huán)反復(fù)。
3 系統(tǒng)應(yīng)用
目前,通過本文開發(fā)的基于W5100的遠(yuǎn)程數(shù)據(jù)采集與傳輸系統(tǒng)已經(jīng)成功應(yīng)用在遼寧省建筑能耗監(jiān)測平臺、太原理工大學(xué)節(jié)約型校園監(jiān)管平臺、大連市公共機構(gòu)能耗監(jiān)管平臺等多個能耗監(jiān)測項目當(dāng)中。其中,遼寧省項目覆蓋范圍最廣,涉及到省內(nèi)14個地級市共50棟建筑的能耗采集與傳輸工作。調(diào)試期間,因能耗采集周期和上傳周期均一致,并且各客戶端的時間信息通過服務(wù)器進行同步,導(dǎo)致所有的客戶端均在同一個時刻向數(shù)據(jù)中心發(fā)起連接或者發(fā)送能耗信息數(shù)據(jù),如圖6所示(上傳周期為5 min),第1分鐘的C1~Cn表示各地的數(shù)據(jù)采集器在同一時刻向服務(wù)器發(fā)起連接請求,第5 min的C1~Cn表示各數(shù)據(jù)采集器在同一時刻向服務(wù)器發(fā)送能耗數(shù)據(jù)信息,從而造成服務(wù)器偶爾因連接負(fù)載過多造成采集軟件死機等情況發(fā)生。