當前工業控制系統中流行的控制方式:底層設備采用RS232總線結構,而上層的管理層一般采用以太網結構。該控制方式使信號可以在企業的Intranet上及時發布和共享,還可以在Internet/Intranet的任何位置對現場智能設備進行在線控制、功能組態以及遠程診斷等,實現了控制網絡真正意義上的開放性和互操作性。而RS485總線是一種基于平衡發送和差分接收的串行總線,具有很強的抗共模干擾能力,在適當的波特率下傳輸距離很遠。同時由于其硬件設計簡單、控制方便、易于進行網絡擴展,被廣泛的應用在很多工業現場。
本文所研究的嵌入式以太網適配器,就是要解決嵌入式設備網絡通信的問題,方便嵌入式系統與計算機網絡的通信,實現遠程監控、訪問及數據的傳輸。
一、主要芯片選擇及簡介
1、單片機AT89S52
本設計中AT89S52作為核心處理器。AT89S52是Atmel公司生產的低功耗、高性能CMOS8位單片機,片內含有8k字節的EPROM和256字節的RAM。具有ISP(在系統編程)功能。它具有靈活性高、使用方便、價格低廉等優點。因此,該芯片在嵌入式控制系統中得到了廣泛應用。單片機AT89S52經過以太網傳到PC機實現遠程控制。利用AT89S52的ISP(在系統編程)功能,很方便地把編好的程序寫到單片機中,并且調試、修改和升級很容易。由于AT89S52單片機本身提供了一組全雙工串行傳輸口,由TXD引腳來傳送串行數據,而由RXD引腳來接收數據,可是其工作邏輯電平皆為TTL電平(0V,5V)。AT89S52最小系統如圖1所示。
圖1 AT89S52最小系統
2、網絡控制芯片ENC624J600
ENC624J600網絡控制器是一款帶有行業標準串行接口和并行接口的,專為嵌入式應用系統設計的獨立以太網控制芯片。ENC624J600通過SPI或并行接口與單片機通信,數據傳輸速率為14Mbit/s(對于SPI)至160Mbit/s(對于16位的并行接口),ENC624J600主要功能特性有,自適應的選擇傳輸速率,支持10Mbit/s或100Mbit/s;充分支持半雙工或全雙工交換式以太網;可編程填充和CRC生成;提供24KBA片內RAM緩沖區,用于執行發送和接手操作,主單片機還可以用它來進行常規的存儲操作;支持總線8位或16位CPU訪問,可編程自動拒絕錯誤數據包;可編程為發生沖突時自動重發。
ENC624J600器件符合IEEE 802.3中適用于10 Base-T 和100 Base-TX 以太網的全部規范,包括許多可選條款,例如自動協商。ENC624J600器件采用了一系列數據包過濾機制以對傳入數據包進行限制。它還提供了一個16位寬的內部DMA以實現快速數據吞吐和硬件IP校驗和計算支持。對于需要SSL、TLS 以及其他與加密相關的協議的安全和身份驗證功能的應用,提供了一個安全引擎模塊。 該引擎可執行RSA、Diffie- Hellman、AES、MD5 和SHA-1 算法計算,以縮短代碼大小、加快連接的建立和吞吐,并減少固件開發的工作量。通過SPI或并行接口與單片機通信,數據傳輸速率為14 Mbit/s(對于SPI)至160 Mbit/s (對于16 位解復用并行接口)。提供了專用于LED 連接、活動指示以及發送/接收/DMA 中斷的引腳。提供了一個通用24 KB片內RAM緩沖區,用于執行發送和接收操作。主單片機還可以用它來進行常規存儲操作。通信協議(例如TCP)可使用此存儲器保存可能需要重新發送的數據。在最終產品易于生產性方面,ENC624J600 系列的每個器件都預編程了唯一的非易失性MAC地址。在大多數情況下,這使最終器件省去了串行編程步驟,圖2給出了器件的一般框圖。
圖2 ENC624J600的框圖
3、外部數據存儲器FM1808
FM1808是基于鐵電存儲器原理制造的并行接口256Kbit鐵電存儲器,FM1808的主要特性如下:采用先進的鐵電技術制造;存儲容量為256Kbit;讀寫壽命為100億次;掉電數據可保存10年;寫數據無延時;存取時間為70ns;低功耗,工作電流為25mA,待機電流僅為20uA;采用單5V工作電壓;工作溫度范圍為-40℃~+85℃;具有特別優良的防潮濕、防電擊及抗震性能;與SRAM或并行EEPROM管腳兼容。
二、硬件電路設計
1、AT89S52與以太網控制器連接電路的設計
本系統里,P0口被作為低8位地址/數據復用,當作數據線使用時用來連接NC624J600的8位數據接口。當作為地址線使用時,為了給ENC624J600提供15位地址的低8位,要采用復用技術,對地址和數據進行分離。因此P0口連接到74ls373的D0~D7,把低8位地址暫存,隨后有地址鎖存器的O0~O7給ENC624J600提供15位地址的低8位,而高7位由P2口通過74ls245提供,如圖3所示。
要使與單片機的接口具有高度的靈活性,ENC624J600器件提供了兩種選擇:基于串行外設接口(SPI)標準的串行接口和靈活的8/16位并行從端口接口。在任何給定時間只能使用一個接口。本課題中,AT89S52單片機和ENC624J600的連接選擇PSP接口,如圖3所示。要選擇PSP接口,則在上電時通過INT/ SPISEL引腳上的SPISEL功能由硬件選擇I/O接口。要完成此操作,需在向器件供電且器件退出上電復位狀態后將施加到該引腳的電平約鎖存1至10μs。如果SPISEL被鎖存在邏輯高電平狀態,將使能串行接口。如果SPISEL被鎖存在邏輯低電平狀態,則使能PSP接口。
圖3 AT89S52與以太網控制器連接電路的設計
2、AT89S52和與外部擴展存儲器FM1808的電路設計
AT89S52與FM1808的連接與AT89S52與NC624J600的連接類似,P0口被作為低8位地址/數據復用,當作數據線使用時用來連接FM1808的8位數據。當作為地址線使用時,采用復用技術,對地址和數據進行分離,給FM1808提供15位地址的低8位,而高7位由P2口通過74ls245提供,如圖4所示。
圖4 AT89S52和與外部擴展存儲器FM1808的電路設計
3、電源電路設計
電源模塊是一塊電路板最為基本的組成部分,只有穩定可靠的電源為板上芯片供電才能夠保證各功能模塊的正常工作,因此在電源模塊的設計時首先應該初步計算電路板所有元件的功耗,然后在保證功耗的前提下選擇相應的芯片進行直流電源模塊設計,盡量做到體積小,重量輕;性價比合理;能長期穩定、可靠地工作。
本適配器所需要的電源有3.3V。系統需要3.3V電源供電的芯片以太網控制器等。考慮到系統可能工作于高速通信模式,消耗電流會非常大,所以選用1片UC385芯片,每片UC385輸出電流可達800mA,可以完全滿足系統的需求。具體電路如圖5所示 。
圖5 電源模塊設計
三、軟件部分設計
1、主函數
上電先查詢ARP,若未獲取MAC,則發送ARP請求。若有新的數據,若TCP應答沒有完成,則應答TCP,完成TCP三次握手。然后根據請求類型響應HTTP。
2、TCP應答部分
1) 三次握手階段
所謂三次握手(Three-way Handshake),是指建立一個TCP連接時,需要客戶端和服務器總共發送3個包。三次握手的目的是連接服務器指定端口,建立TCP連接,并同步連接雙方的序列號和確認號并交換 TCP 窗口大小信息。
圖6 三次握手(Three-way Handshake)
第一次握手:客戶端發送一個TCP的SYN標志位置1的包指明客戶打算連接的服務器的端口,以及初始序號X,保存在包頭的序列號(Sequence Number)字段里。
圖7 第一次握手
第二次握手:服務器發回確認包(ACK)應答。即SYN標志位和ACK標志位均為1同時,將確認序號(Acknowledgement Number)設置為客戶的ISN加1以。即X+1。
第三次握手,客戶端再次發送確認包(ACK) SYN標志位為0,ACK標志位為1.并且把服務器發來ACK的序號字段+1,放在確定字段中發送給對方。并且在數據段放寫ISN的+1
圖9 第三次握手
其實在握手和結束時確認號應該是對方序列號加1,傳輸數據時則是對方序列號加上對方攜帶應用層數據的長度。
在傳輸TCP分包的過程中也是需要發送一分包,確認一分包的,而TCP確認包只有54字節,就是只有頭部信息。因此在傳輸TCP分包序列號一直不變,確認號按發送數據的長度遞增即可。
3、 HTTP
1)請求
連接成功建立后,開始向web服務器發送請求,這個請求一般是GET或POST命令(POST用于FORM參數的傳遞)。GET命令的格式為:GET 路徑/文件名 HTTP/1.0文件名指出所訪問的文件,HTTP/1.0指出Web瀏覽器使用的HTTP版本。現在可以發送GET命令:GET /mytest/index.html HTTP/1.0,
2)應答
web服務器收到這個請求,進行處理。從它的文檔空間中搜索子目錄mytest的文件index.html。如果找到該文件,Web服務器把該文件內容傳送給相應的Web瀏覽器。為了告知瀏覽器,Web服務器首先傳送一些HTTP頭信息,然后傳送具體內容(即HTTP體信息),HTTP頭信息和HTTP體信息之間用一個空行分開。常用的HTTP頭信息有:
① HTTP 1.0 200 OK 這是Web服務器應答的第一行,列出服務器正在運行的HTTP版本號和應答代碼。代碼“200 OK”表示請求完成。
② MIME_Version:1.0 它指示MIME類型的版本。
③ content_type:類型 這個頭信息非常重要,它指示HTTP體信息的MIME類型。如:content_type:text/html指示傳送的數據是HTML文檔。
④ content_length:長度值 它指示HTTP體信息的長度(字節)。
3)關閉連接
當應答結束后,Web瀏覽器與Web服務器必須斷開,以保證其它Web瀏覽器能夠與Web服務器建立連接。
4、提交表單GET/POST
GET請求的數據會附在URL之后(就是把數據放置在HTTP協議頭中),以?分割URL和傳輸數據,參數之間以&相連,如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD。如果數據是英文字母/數字,原樣發送,如果是空格,轉換為+,如果是中文/其他字符,則直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX為該符號以16進制表示的ASCII。
POST把提交的數據則放置在是HTTP包的包體中。在FORM(表單)中,Method默認為“GET”。
本文中登錄時提交表單數據采用的是POST方式,而提交控制信息表單時用的是GET。以下是用抓包的方式明顯看出他們的不同之處。
圖10 POST方式
圖11 GET方式
圖12 GET方式是提交的數據直接放在URL中了
5、總體軟件設計
AT89S52單片機首先對ENC624J600進行初始化,首先應查詢ESTAT寄存器的CLKRDY位,確保在配置MAC和PHY寄存器前有足夠的延時;PHY寄存器用來設置通信模式;編程ERXST和ERXND指針對接收緩沖器進行初始化,當編程ERXST指針時,相同的值會自動更新ERXWRPT寄存器,接收硬件將從ERXWRPT中的地址開始寫入已收到的數據,為跟蹤接收的數據,ERXRDPT寄存器也需要用相同的值編程;為了能最大限度地降低主控制器的處理工作量,ENC624J600配備了不同的過濾器,可自動拒絕不需要的數據包,所有的過濾器都由ERXFCON寄存器進行配置,可以使用ANDOR位對幾個過濾器的測試結果作邏輯/與0或邏輯/或0運算;由于未被用作接收緩沖器的存儲空間都作為發送緩沖器,所以不需要對發送緩沖器進行特定的初始化,通常將存儲空間分配為大的接收緩沖器空間和較小的接收存儲空間。
在初始化完成后,即進入主循環程序,單片機將反復檢測ENC624J600是否接收到以太網幀(或者數據緩沖區B中有數據需要發送),當有數據接收(或者發送)時則根據標志位進行相應的子函數處理,將數據存入數據緩沖區(或者發送至以太網上)。主程序流程如圖13所示。
評論
查看更多