




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、By:liu guo qing目錄1引言51.1編寫目的51.2定義51.3參考資料52W5300控制器的實現流程62.1實現流程圖62.2流程簡要說明63流程控制73.1W5300 RESET73.2W5300初始化73.2.1數據位寬設置73.2.2主機接口模式和時序設置73.2.3host主機中斷設置93.2.4基本網絡信息設置103.2.5重新發送參數設置113.2.6SOCKETn 的內部TX/RX 存儲器空間分配設置113.3數據通信123.3.1SOCKET初始化133.3.2SOCKET建鏈153.3.3SOCKET數據通信183.3.4SOCKET關閉194邏輯實現方案194
2、.1邏輯架構194.2接口控制模塊204.2.1讀時序實現204.2.2寫時序實現214.2.3實現狀態機224.2.4接口定義234.3主控制模塊234.3.1實現狀態機234.3.2接口定義244.4初始化配置模塊244.4.1實現狀態機244.4.2接口定義254.5SOCKET驅動模塊254.5.1實現狀態機254.5.2接口定義265性能指標265.1支持SOCKET數以及協議265.2網絡延時265.3傳輸帶寬266使用指南276.1接口說明276.2配置參數說明296.3關鍵時序296.4狀態寄存器291 引言1.1 編寫目的1.2 定義1.3 參考資料Ø High-p
3、erformance_Internet_Connectivity_Solution_W5300_V1.2.3Ø W5300中文用戶數據手冊_V1.2.22 W5300控制器的實現流程本W5300控制器在16位數據的直接模式地址方式的基礎上實現。2.1 實現流程圖2.2 流程簡要說明1. W5300 reset:W5300工作之前,需要對其進行復位,復位低電平有效,并且至少保持2us(W5300不支持上電復位,必須通過/reset接口對其進行復位)。2. Wait for at least 10ms:W5300復位后,需要等待至少10ms使得W500內部鎖相環穩定后,才能進行W5300
4、初始化操作。3. W5300 initialization:初始化W5300就是將相應的參數按照寫時序要求寫入寄存器。初始化分為3個步驟:1) 主機接口配置:設置主機接口模式和時序,設置數據位寬,設置主機中斷。2) 設置網絡信息:設置數據通信的基本信息(SHAR、GAS、SBUS和SIPR);設置重新發送的時間間隔和重發次數。3) 內部TX/RX存儲器分配:定義內部TX/RX存儲器大小及SOCKTEn的TX/RX存儲器大小。4. Data communicate:對使用的COCKETn初始化,進行發送、接收數據及相關配置。3 流程控制3.1 W5300 RESET通過W5300芯片的/RESE
5、T接口對芯片進行復位,低電平有效。RESET信號低電平至少持續2us ,為了使鎖相環邏輯穩定,復位信號恢復高電平后至少等待10ms,見圖3.1-1。W5300不支持上電復位。因此必須由外部系統給出復位信號。在復位信號有效的2us期間,需要對BIT16EN接口進行配置。BIT16EN為 16/8 位數據位選擇,它確定W5300的數據位的寬度:高電平選擇16位數據位,低電平選擇8位數據位。在復位期間,它被鎖存在模式寄存器(MR)的第15位,復位后它的改變不會產生影響。即數據位的寬度在復位后不會發生改變。圖3.1-1 W5300復位初始化3.2 W5300初始化3.2.1 數據位寬設置數據位寬的設置
6、可參見3.1節,根據實際使用,BIT16EN接口信號可以始終配置為1。3.2.2 主機接口模式和時序設置主機的接口模式和時序設置即為對W5300的模式(MR)寄存器進行配置:Ø MR寄存器地址:0x000Ø MR基礎器配置值:0xB800下表3.2.2-1為MR寄存器的配置說明:表3.2.2-1 MR寄存器位符號說明MR15DBW數據總線寬度 0 :8 位數據總線寬度 1 :16位數據總線寬度 在W5300復位期間,這個值由BIT16EN引腳的電平確定。復位后,這個值不改變 。MR14MPFMAC層終止數據報文 0 :正常報文 1 :終止報文 當從路由器或交換機收到終止報文
7、時,該位置1 。當設置為1 時,將停止數據傳輸,直到該位為0MR13WDF2寫數據訪問時間 當寫數據操作時,/CS為低電平后,W5300在WDF×PLL_CLK時間后取寫入的數據,如果主機寫操作在WDF×PLL_CLK完成(/CS 恢復為高電平),寫入的數據在/CS為高電平時取走MR12WDF1MR11WDF0MR10RDH讀數據保持時間 0 :沒有數據保持時間 1 :數據保持時間為2×PLL_CLK 在主機進行讀操作時,當主機的讀操作完成(/CS 恢復高電平)后,W5300在2×PLL_CLK時間之內保持讀取的數據。在這種情況下,注意數據總線上的數據沖
8、突MR9-保留MR8FSFIFO交換 0 :禁止交換 1 :允許交換 它用于高字節和低字節的交換。W5300的字節一般采用大端模式。如果主機系統采用小端模式,那么將該位置1 ,將Sn_TX_FIFOR 和Sn_RX_FIFOR 的字節順序交換,使用效果與小端模式相同MR7RST軟件復位 該位置1 ,對W5300軟件復位。復位結束后自動清0 MR6-保留MR5MT存儲器測試 0 :禁止內部RX/TX 存儲器測試 1 :允許內部存儲器測試 一般來講,W5300內部TX存儲器支持主機通過Sn_TX_FIFOR寄存器的寫操作,而內部RX存儲器只支持主機通過Sn_RX_FIFOR 寄存器的讀操作。如果該
9、位置1,內部RX/TX 存儲器同時支出通過Sn_TX_FIFOR和Sn_RX_FIFOR 的讀寫操作,從而校驗內部TX/RX 存儲器。測試W5300內部TX/RX 完成后,需要對系統重新復位或關閉端口。MR4PBPing 功能阻止模式 0 :允許Ping 1 :禁止Ping 自動Ping應答支持最多119 個字節。Ping功能阻止模式還需要考慮Sn_MR和Sn_PROTOR的設置。MR3PPPoEPPPoE模式 0 :禁止PPPoE模式 1 :啟動PPPoE模式MR2DBS數據總線交換 0 :禁止交換 1 :允許交換 DBS位只交換Sn_TX_FIFOR/Sn_RX_FIFOR的高字節和低字節
10、。然而該位交換所有寄存器的高字節和低字節,包括Sn_TX_FIFOR/ Sn_RX_FIFOR 寄存器。該位只有DBW為1時有效。MR1-保留MR0IND間接總線模式 0 :直接總線模式 1 :間接總線模式 它設置W5300與主機的接口模式3.2.3 host主機中斷設置主機中斷設置即為對中斷屏蔽寄存器進行配置,它配置W5300的中斷并報告給主機。IMR 的每一個中斷屏蔽位對應IR的每一個中斷位。當IR的任何一個位為1且相應的IMR 位也為1時,將向主機產生中斷(/INT 輸出低電平)。如果相應的IMR位為0,將不產生中斷(/INT 保持高電平),即使IR位為1。Ø IMR寄存器地址
11、:0x004Ø IMR基礎器配置值:0x80FF下表2.2.3-1為IR寄存器的位說明,可以根據IR寄存器對IMR寄存器進行配置:表3.2.3-1 IR寄存器位符號說明IR15IPCFIP 沖突 當IP 地址產生沖突時,該位置1時(當接收到ARP請求數據包的IP 地址與W5300本機IP地址相同)。當它置1時,網絡中的另外一個設備使用了相同的IP 地址,將造成通信錯誤。因此需要盡快采取措施解決這個問題。IR14DPUR目標端口無法到達 當收到ICMP (目的端口無法到達)數據包時,該位置1 。該中斷用于UDP協議傳輸。IR13PPPTPPPoE中止 在PPPoE模式,當與服務器連接關
12、閉時,該位置1。IR12FMTU分片最大傳輸單元(MTU) 當收到ICMP (分片最大傳輸單元)數據包時,該位置1 。在基于UDP協議傳輸時,需要考慮。TCP協議下可以不需要考慮。IR11:8-保留IR7S7_INTSOCKET7中斷 當SOCKET7產生中斷時,該位置1。該中斷信息對應于S7_IR1。當S7_IR1被主機清0后,該位自動清0。IR6S6_INTSOCKET6中斷 當SOCKET6產生中斷時,該位置1。該中斷信息對應于S6_IR1。當S6_IR1被主機清0后,該位自動清0。IR5S5_INTSOCKET5中斷 當SOCKET5產生中斷時,該位置1。該中斷信息對應于S5_IR1。
13、當S5_IR1被主機清0后,該位自動清0。IR4S4_INTSOCKET4中斷 當SOCKET4產生中斷時,該位置1。該中斷信息對應于S4_IR1。當S4_IR1被主機清0后,該位自動清0。IR3S3_INTSOCKET3中斷 當SOCKET3產生中斷時,該位置1。該中斷信息對應于S3_IR1。當S3_IR1被主機清0后,該位自動清0。IR2S2_INTSOCKET2中斷 當SOCKET2產生中斷時,該位置1。該中斷信息對應于S2_IR1。當S2_IR1被主機清0后,該位自動清0。IR1S1_INTSOCKET1中斷 當SOCKET1產生中斷時,該位置1。該中斷信息對應于S1_IR1。當S1_
14、IR1被主機清0后,該位自動清0。IR0S0_INTSOCKET0中斷 當SOCKET0產生中斷時,該位置1。該中斷信息對應于S0_IR1。當S0_IR1被主機清0后,該位自動清0。3.2.4 基本網絡信息設置基本網絡信息設置,即為對W5300的本機硬件地址(MAC)寄存器(SHAR)、網關IP地址寄存器(GAR)、子網掩碼寄存器(SUBR)和本機IP地址寄存器(SIPR)進行配置。1) 本機硬件地址(MAC)寄存器(SHAR)配置:Ø SHAR0寄存器地址:0x008Ø SHAR0寄存器配置值:MAC47:32Ø SHAR2寄存器地址:0x00AØ S
15、HAR2寄存器配置值:MAC31:16Ø SHAR4寄存器地址:0x00CØ SHAR4寄存器配置值:MAC15:02) 網關IP地址寄存器(GAR)配置:Ø GAR0寄存器地址:0x010Ø GAR0寄存器配置值:GAR31:16Ø GAR1寄存器地址:0x012Ø GAR1寄存器配置值:GAR15:03) 子網掩碼寄存器(SUBR)配置:Ø SUBR0寄存器地址:0x014Ø SUBR0寄存器配置值:SUBR 31:16Ø SUBR1寄存器地址:0x016Ø SUBR1寄存器配置值:SUBR
16、 15:04) 本機IP地址寄存器(SIPR)Ø SIPR0寄存器地址:0x014Ø SIPR0寄存器配置值:SUBR 31:16Ø SIPR1寄存器地址:0x016Ø SIPR1寄存器配置值:SUBR 15:03.2.5 重新發送參數設置重新發送參數設置,即為對W5300的重復發送超時寄存器(RTR)和重復發送計數寄存器(RCR)進行配置。1) 重復發送超時寄存器(RTR)用于配置重復發送超時周期的值。RTR的標準單位是100us ,RTR初始化設置為2000(0x7D0 ),超時的時間周期為200ms。Ø RTR寄存器地址:0x01C
17、16; RTR寄存器配置值:0x07D0(200ms)2) 重復發送計數寄存器(RCR)用于配置重復發送的次數。當重復發送的次數達到RCR+1時,將產生超時中斷(Sn_IR 的TIMEOUT位置1)。Ø RCR寄存器地址:0x01EØ RCR寄存器配置值:0x3(3次)APP和TCP的超時計算可參見W5300的數據手冊。3.2.6 SOCKETn 的內部TX/RX 存儲器空間分配設置W5300內部包含16個8K字節的存儲單元。這些存儲單元依次映射在128K字節的存儲器空間。128K存儲器分為發送存儲器(TX)和接收存儲器(RX)。內部TX和RX存儲器以8K字節為單元分布在1
18、28K字節空間。內部TX/RX 存儲器可以在064K 字節空間以1K字節為單元從新分配給每個SOCKET。1) 定義內部TX/RX 存儲器大小可以在存儲器單元類型寄存器(MYTPER)中配置,每個8K字節的存儲單元對應MTYPER的一個位。當該位為1時,它用于TX存儲器,當該位為0時,它用于RX存儲器。MTYPER的低位都配置為TX存儲器。其余沒有配置為TX存儲器的都應該設置為0。Ø MYTPER寄存器地址:0x030Ø MYTPER寄存器配置值:0x00FF(平均分配)2) 每個SOCKET的內部TX存儲器的大小由TX存儲器大小配置寄存器(TMSR)配置。每個SOCKET
19、在復位后自動分配8K字節的TX存儲空間。Ø TMS01R寄存器地址:0x020Ø TMS01R寄存器配置值:高8位為SOCKET0的配置值,低8位為SOCKET1的配置值(0x190E)Ø TMS23R寄存器地址:0x022Ø TMS23R寄存器配置值:高8位為SOCKET0的配置值,低8位為SOCKET1的配置值(0x1900)Ø TMS45R寄存器地址:0x024Ø TMS45R寄存器配置值:高8位為SOCKET0的配置值,低8位為SOCKET1的配置值(0x0000)Ø TMS67R寄存器地址:0x026Ø
20、TMS67R寄存器配置值:高8位為SOCKET0的配置值,低8位為SOCKET1的配置值(0x0000)3) 每個SOCKET的內部RX存儲器的大小由RX存儲器大小配置寄存器(RMSR)配置。每個SOCKET在復位后自動分配8K字節的RX存儲空間。Ø RMS01R寄存器地址:0x028Ø RMS01R寄存器配置值:高8位為SOCKET0的配置值,低8位為SOCKET1的配置值(0x190E)Ø RMS23R寄存器地址:0x02AØ RMS23R寄存器配置值:高8位為SOCKET0的配置值,低8位為SOCKET1的配置值(0x1900)Ø RMS
21、45R寄存器地址:0x02CØ RMS45R寄存器配置值:高8位為SOCKET0的配置值,低8位為SOCKET1的配置值(0x0000)Ø RMS67R寄存器地址:0x02EØ RMS67R寄存器配置值:高8位為SOCKET0的配置值,低8位為SOCKET1的配置值(0x0000)3.3 數據通信完成初始化設置以后,W5300可以以TCP 、UDP、IPRAW 或MACRAW的方式打開SOCKET發送或接收數據。根據實際使用,在此只描述基于TCP協議的W5300工作方法。在TCP 模式,首先要根據IP 地址和端口號與對端建立SOCKET連接。通過連接的SOCKET
22、發送和接收數據。建立SOCKET的連接有“TCP 服務器”和“TCP 客戶端”之分。區分它們的方法是誰首先發送連接請求(SYS數據包)。“TCP 服務器”等待對端的連接請求,當收到連接請求時建立SOCKET連接(被動打開)。“TCP 客戶端”主動發出連接請求,與對端建立連接(主動打開)。下圖3.3-1為W5300在TCP模式下數據通信的工作流程:圖3.3-1 TCP模式下數據通信工作流程3.3.1 SOCKET初始化為了實現TCP 通信,需要對SOCKET進行初始化設置并打開SOCKET。為了打開SOCKET,選擇其中的一個SOCKET(被選擇的SOCKET稱之為SOCKETn), 通過SOC
23、KETn 模式寄存器(Sn_MR) 和SOCKETn源端口號寄存器(Sn_PORTR)分別設置通信協議和本機端口號(在TCP 服務器模式,稱之為偵聽端口號),然后執行OPEN 命令。執行完OPEN 命令后,如果Sn_SSR 改變為SOCK_INIT,則SOCKET的初始化設置完成。3.3.1.1 SOCKETn 模式寄存器設置SOCKETn模式寄存器(Sn_MR)用于配置SOCKET的協議類型及相關一些選項。Ø Sn_MR寄存器地址:0x200(0x240、0x280)Ø Sn_MR寄存器配置值:0x0121(隊列對齊、允許無延時響應、TCP模式)下表2.3.1.1-1為S
24、OCKETn模式寄存器(Sn_MR)的配置位說明:表3.3.1.1-1 Sn_MR寄存器位符號說明Sn_MR15:9-保留Sn_MR8ALIGN隊列對齊 0:不使用對齊 1:使用對齊 只有在TCP 模式下有效,在TCP 通信過程中,當每次收到的數據包的字節數為偶數且該位置為1時,接收數據可直接刪去附在接收數據包中的PACKET-INFO(數據的字節數),使讀取數據的操作大大增強。Sn_MR7MULTI多播 0:禁止多播 1:允許多播 只有在UDP模式下有效 Sn_MR6MFMAC地址過濾 0:禁止MAC地址過濾 1:允許MAC地址過濾 只有在MACRAW模式下有效Sn_MR5ND使用無延時的A
25、CK 0:禁止延時ACK選項 1:允許延時ACK選項 只有在TCP 模式下有效,當該位置1,收到對端的數據包后立即發送ACK數據包響應。建議將該位置1,以提高TCP 通信的性能。Sn_MR4-保留Sn_MR3:0P3:0協議類型。它用于配置每個SOCKET的通信協議(TCP、UDP、IPRAW,MACRAW等)或PPPoE SOCKET與PPPoE服務器之間的操作。4b0000 : SOCKET Closed;4b0001 : TCP;4bxxx0 :其它3.3.1.2 SOCKETn中斷屏蔽寄存器設置SOCKETn中斷屏蔽寄存器(Sn_IMR)配置SOCKETn 向主機產生的中斷,Sn_IM
26、R的中斷屏蔽位與SOCKETn中斷寄存器(Sn_IR)是對應的。參考2.2.3主機中斷設置。Ø Sn_IMR寄存器地址:0x204(0x244、0x284)Ø Sn_IMR寄存器配置值:0x001B(send_OK、timeout、discon、con)下表3.3.1.2-1為Sn_IR寄存器的位說明,可以根據Sn_IR寄存器對Sn_IMR寄存器進行配置:表3.3.1.2-1 IR寄存器位符號說明Sn_IR7PRECVPPP接收中斷接收到不支持的可選數據(Option Data)時,該位置位。Sn_IR6PFAILPPP失敗中斷PAP認證失敗時該位置位Sn_IR5PNEXT
27、PPP下一過程中斷 在PPPoE連接過程中,該過程改變時置位Sn_IR4SENDOK發送完成中斷 SEND 命令完成后置位Sn_IR 3TIMEOUT超時中斷 在ARP和TCP 過程中超時置位Sn_IR 2RECV接收數據中斷端口從對端接收到數據時置位Sn_IR 1DISCON斷開連接中斷接收到從對端來的FIN或FIN/ACK 數據包時置位Sn_IR0CON連接中斷與對端成功建立連接時置位3.3.1.3 SOCKETn目的IP 地址寄存器在TCP 客戶端模式下,運行CONNECT 命令之前,必須將SOCKETn目的IP 地址寄存器(Sn_DIPR)設置為TCP 服務器的IP 地址。而在TCP
28、服務器模式,當成功建立連接以后,它被W5300自動配置為TCP 客戶端的IP 地址。Ø Sn_DIPR 0寄存器地址:0x214(0x254、0x294)Ø Sn_DIPR 0寄存器配置值:DIPR 31:16Ø Sn_DIPR 1寄存器地址:0x216(0x256、0x296)Ø Sn_DIPR 1寄存器配置值:DIPR 15:03.3.1.4 端口號寄存器設置端口號寄存器設置包括對SOCKETn源端口號寄存器(Sn_PORTR)和SOCKETn目的端口號寄存器(Sn_DPORTR)的配置。1) SOCKETn源端口號寄存器(Sn_PORTR)用于配置
29、源端口的端口號,必須在OPEN 命令之前設置。Ø Sn_PORTR寄存器地址: 0x20A(0x24A、0x28A)Ø Sn_PORTR寄存器配置值: 2) SOCKETn目的端口號寄存器(Sn_DPORTR)用于設置SOCKETn 的目的端口號。在TCP 客戶端模式下運行CONNECT 命令之前,需要將它設置為處于TCP 服務器模式下的偵聽端口的端口號。而在TCP 服務器模式,當成功建立連接以后,它被W5300自動配置為TCP 客戶端的端口號。Ø Sn_DPORTR寄存器地址:0x212(0x252、0x252)Ø Sn_DPORTR寄存器配置值:3.
30、3.2 SOCKET建鏈基于TCP模式的SOCKET建鏈,建鏈過程中需要配置及查詢SOCKETn命令寄存器(Sn_CR)、SOCKETn中斷寄存器(Sn_IR)和SOCKETn 狀態寄存器(Sn_SSR)。Ø SOCKETn命令寄存器地址:0x202(0x242、0x282)Ø SOCKETn中斷寄存器地址:0x206(0x246、0x286)Ø SOCKETn 狀態寄存器地址:0x208(0x248、0x288)下表3.3.2-1為SOCKETn命令寄存器說明:表3.3.2-1 SOCKETn命令寄存器值命令說明0x01打開端口 OPEN它根據Sn_MR(P3P
31、0)所定義的協議類型初始化端口并打開端口0x02偵聽 LISTEN只有在TCP 模式下有效(Sn_MR(P3:P0)=Sn_MR _TCP) 它將SOCKETn 設置為TCP 服務器模式。它將改變Sn_SSR 寄存器的SOCK_INIT為SOCK_LISTEN,以等待其它TCP 客戶端的連接請求(SYN數據包) 當Sn_SSR 為SOCK_LISTEN 且成功處理了其它TCP 客戶端的連接請求時,Sn_IR(0)將置1 ,而Sn_SSR 變為SOCK_ESTABLISHED。如果沒有處理連接請求(SYN/ACK 傳輸失敗),TCP 產生超時(Sn_IR(3)=1)且Sn_SSR 變為SOCK_
32、CLOSED0x04連接 CONNECT它將端口設置為TCP 客戶端模式 它發送連接請求到由Sn_DIPR和Sn_DPORTR 指定的TCP 服務器。 當連接請求被成功處理(收到SYN/ACK數據包),Sn_IR(0) 置1,且Sn_SSR的狀態變為SOCK_ESTABLISHED 。如果連接失敗,可能有三種情況 1 ARP 產生超時,因為目標硬件地址無法獲得 2 沒有收到SYN/ACK數據包而產生超時(Sn_IR(3)=1) 3 收到RST 數據包而不是SYN/ACK數據包 以上三種情況Sn_SSR 都將變為SOCK_CLOSED狀態0x08斷開連接 DISCON不論是TCP 服務器還是客戶
33、端,它都將執行斷開連接的處理。 1 主動關閉:它發送斷開連接的請求(FIN 數據包)到連接的對端 2 被動關閉:當收到對端的斷開連接請求(FIN 數據包)時,它發送FIN數據包。如果斷開連接成功( 收到對端的FIN/ACK 數據包) ,Sn_SSR 的狀態將變為SOCK_CLOSED。 如果斷開連接失敗,產生TCP 超時(Sn_IR(3)=1) 且Sn_SSR 的狀態變為SOCK_CLOSED。另外,如果直接使用CLOSE命令而不是DISCON 命令,只有Sn_SSR 的狀態變為SOCK_CLOSED,不產生斷開連接的處理(斷開連接的請求)。如果在通信過程中收到對端發送來的RST 數據包,Sn
34、_SSR 無條件變為SOCK_CLOSED狀態。0x10端口關閉 CLOSE關閉端口,Sn_SSR 的狀態變為SOCK_CLOSED。0x20發送數據 SEND啟動數據發送,發送的字節長度由Sn_TX_WRSR確定。當發送過程結束,Sn_IR(SENDOK)將置1,主機檢測到Sn_IR(SENDOK)=1 后,可以進行下一次的傳輸。 如果通過SEND 命令數據包成功傳輸到對端(當收到對端的DATA/ACK數據包),Sn_TX_FSR根據傳輸的數據長度自動增加。如果沒有傳輸成功(沒有收到DATA/ACK 的數據包),將產生超時(Sn_IR(3)=1),且Sn_SSR 進入SOCK_CLOSED狀
35、態。另外,主機在使用SEND 命令發送數據之前,首先通過Sn_TX_FIFOR寄存器將數據寫入到TX存儲器,然后寫入要發送數據的字節數到Sn_TX_WRSR。0x40接收數據 RECV它表示主機接收到SOCKETn 的數據 在使用RECV 命令前,主機需要通過Sn_RX_FIFOR 寄存器從RX存儲器讀取接收的數據。下表3.3.2-2為SOCKETn狀態寄存器中與TCP模式相關的說明:表3.3.2-2 SOCKETn狀態寄存器值符號說明0x00SOCK_CLOSEDSOCKETn 端口資源釋放狀態 當執行DISCON 或CLOSE命令,或產生ARP、TCP 超時,不管以前是什么狀態,此時它都變
36、為SOCK_CLOSED狀態0x13SOCK_INITSOCKETn 以TCP 模式打開時的狀態 當Sn_MR(P3P0)為Sn_MR_TCP 且執行OPEN 命令時,它變為SOCK_INIT狀態。它是建立TCP 連接的第一步。 這時可以使用LISTEN命令設置TCP 服務器模式,或CONNECT 命令設置TCP客戶端模式0x14SOCK_LISTEN它是SOCKETn 在TCP 服務器狀態等待TCP 客戶端的連接請求(SYN 數據包)當運行LISTEN命令時,它改變為SOCK_LISTEN 狀態。當成功處理了TCP 客戶端的連接請求(SYN 數據包) ,SOCK_LISTEN 變為SOCK_
37、ESTABLISHED。如果失敗,將產生超時中斷(Sn_IR(TIMEOUT)= 1) ,且狀態改變為SOCK_CLOSED0x17SOCK_ESTABLISHED它是TCP 建立連接的狀態 在SOCK_LISTEN 狀態,收到TCP 客戶端SYN數據包并成功處理,它將變成SOCK_ESTABLISHED,或CONNECT命令成功運行。在這種狀態,可以進行數據傳輸,即可以運行SEND 或RECV 命令。0x1CSOCK_CLOSE_WAIT該狀態是收到對端斷開連接請求(FIN 數據包) 由于TCP 連接處于半關閉狀態,但可以進行數據傳輸。為了徹底斷開TCP 連接,必須執行DISCON 命令。如
38、果關閉SOCKEn而沒有斷開連接的處理,可以只運行CLOSE命令0x15SOCK_SYNSENT該狀態表示連接請求(SYN 數據包)發送到TCP 服務器 該狀態顯示CONNECT 命令從SOCK_INIT到SOCK_ESTABLISHED的狀態改變過程 在這種狀態,如果收到TCP服務器允許連接信息(SYN/ACK 數據包) ,狀態自動轉換為SOCK_ESTABLISHED 。如果在產生TCP 超時(Sn_IR(TIMEOUT)=1)之前沒有收到TCP 服務器的SYN/ACK數據包,那么它自動轉變為SOCK_CLOSED0x16SOCK_SYNRECV該狀態表示收到TCP 客戶端的連接請求(SY
39、N 數據包) 當W5300向TCP 客戶端發出允許連接(SYN/ACK 數據包)信息后,它自動變換為SOCK_ESTABLISHED。如果失敗,將產生超時 (Sn_IR(TIMEOUT)=1),且改變為SOCK_CLOSED0x18SOCK_FIN_WAITSOCKETn 被關閉的狀態 當SOCKET完成主動關閉或被動關閉的斷開連接處理時出現這種狀態。當成斷開連接處理或TCP 超時(Sn_IR (TIMEOUT)=1),它的狀態將改變為SOCK_CLOSED0X1BSOCK_TIME _WAIT0X1DSOCK_LAST_ACK3.3.2.1 SOCKET打開運行OPEN命令將所操作的SOCK
40、ET打開。1) 打開設置向SOCKETn命令寄存器(Sn_CR)寫入OPEN命令:0x01;2) 打開狀態查詢讀取SOCKETn 狀態寄存器(Sn_SSR),如果寄存器值為0x13(SOCK_LISTEN), SOCKET即處于打開狀態。3.3.2.2 SOCKET偵聽運行LISTEN命令將W5300設置為TCP 服務器模式。1) 偵聽設置向SOCKETn命令寄存器(Sn_CR)寫入LISTEN命令:0x02;2) 偵聽狀態查詢讀取SOCKETn 狀態寄存器(Sn_SSR),如果寄存器值為0x14(SOCK_LISTEN),SOCKET即處于偵聽狀態。3.3.2.3 SOCKET鏈接運行CON
41、NECT命令將W5300設置為TCP 服務器模式。1) 鏈接設置向SOCKETn命令寄存器(Sn_CR)寫入CONNECT命令:0x03;2) 鏈接狀態查詢讀取SOCKETn 狀態寄存器(Sn_SSR),如果寄存器值為0x17(SOCK_ESTABLISHED),或者檢測到SOCKETn中斷寄存器Sn_IR0被置為1,則SOCKET即處于鏈接狀態。鏈接成功后,需要將Sn_IR0的中斷標識清除。3.3.3 SOCKET數據通信3.3.3.1 接收數據檢測是否接收到對端發送過來的數據,并做相應處理。1) 檢測是否接收到數據方法一:檢測SOCKETn中斷寄存器Sn_IR2是否被置為1,如果為1,則確
42、認為接收到對端發送過來的數據。方法二:檢測OCKETn接收數據的字節長度寄存器(Sn_RX_RSR)是否等于零,如果不等于零,則確認為接收到對端發送過來的數據。Ø Sn_RX_RSR寄存器地址:2) 接收數據處理步驟一:讀取OCKETn接收數據的字節長度寄存器(Sn_RX_RSR),獲取當前RX memory中的數據長度。步驟二:根據步驟一中獲取的數據長度,通過SOCKETn RX FIFO寄存器(Sn_RX_FIFOR)獲取RX memory中的數據。Ø Sn_RX_FIFOR寄存器地址:步驟三:向SOCKETn命令寄存器(Sn_CR)寫入RECV命令:0x40;3) 是
43、否清楚接收中斷接收數據處理完成后,再次檢查OCKETn接收數據的字節長度寄存器(Sn_RX_RSR)是否等于零,如果為零,則清除SOCKETn中斷寄存器Sn_IR2的中斷,否則不清除。3.3.3.2 發送數據將數據通過Sn_TX_FIFOR寫入到內部TX存儲器后,W5300將試著把數據發送到對端。發送數據的大小不能比分配給該SOCKETn 的內部TX存儲器空間大。為了下一次數據的發送,主機必須檢查上次SEND 命令是否執行完畢。如果上一次的SEND 命令還沒有執行完而又開始下一次的SEND 命令,將可能產生各種各樣的錯誤。數據越大,執行SEND 命令所需要的時間就會越長。所以要想提高發送效率,
44、適當將數據分為合適的大小發送。1) 在檢測到有數據發送請求后,需要獲取SOCKETn剩余存儲空間寄存器(Sn_TX_FSR)和SOCKETn中斷寄存器(Sn_IR)。當Sn_IR0等于1,且Sn_IR4等于1時(第一次發送數據除外),讀取SOCKETn剩余存儲空間寄存器(Sn_TX_FSR)中的剩余存儲空間,并清除Sn_IR4的中斷(第一次發送數據除外)。Ø Sn_TX_FSR寄存器地址:2) 通過SOCKETn TX FIFO寄存器(Sn_TX_FIFOR)發送待發數據,發送的數據量不能超過Sn_TX_FSR中的剩余存儲空間。3) 待發數據寫入TX memory后,向SOCKETn
45、命令寄存器(Sn_CR)寫入SEND命令:0x20;3.3.4 SOCKET關閉3.3.4.1 斷開鏈接處理當接收到有對端的斷開連接的請求(接收到FIN數據包),或者接收到上層應用的斷鏈請求后,需要做斷開鏈接處理。1) 檢測到SOCKETn中斷寄存器(Sn_IR)的Sn_IR1等于1時,確認為接收到接收到對端的FIN數據包或者接收到對端的FIN/ACK 數據包,可以進行斷開鏈接處理,并將中斷標志清除。2) 向SOCKETn命令寄存器(Sn_CR)寫入DISCON命令,進行斷開鏈接處理。3.3.4.2 超時超時可能發生在TCP 數據包傳輸過程中,如連接請求(SYN數據包)或其響應數據包(SYN/
46、ACK數據包)、數據(DATA數據包)或其響應數據包(DATA/ACK 數據包)、斷開連接請求(FIN數據包)或其響應數據包(FIN/ACK 數據包)等等。如果以上的數據包在RTR和RCR設定的時間內沒有發送出去,那么將產生TCP 超時,且Sn_SSR 將改變為SOCK_CLOSED狀態。當檢測到SOCKETn中斷寄存器(Sn_IR)的Sn_IR3等于1時,既可以確認為數據通信產生了超時。3.3.4.3 端口關閉當接收到上層應用的關閉(復位)請求后,做SOCKET關閉處理。1) 初始化Sn_IR,即向Sn_IR寫入初始值(為中斷屏蔽寄存器的初始值)。2) 向SOCKETn命令寄存器(Sn_CR
47、)寫入CLOSE命令,進行端口關閉處理4 邏輯實現方案根據上述的流程控制,及實際的應用要求,基于純邏輯的W5300控制器的實現方案。4.1 邏輯架構如下圖4.1-1所示,整個實現邏輯可分為4模塊:接口控制模塊(Interface Control)、網絡主控模塊(Ethernet Main Control)、初始化配置模塊(Initial Config)和端口驅動模塊(SOCKETn Driver)。圖4.1-1 邏輯實現架構圖4.2 接口控制模塊接口控制模塊,Interface Control 主要完成對控制器讀寫W5300的操作信號進行時序轉換,以滿足W5300的讀寫時序要求。4.2.1 讀
48、時序實現4.2.1.1 時序要求下圖4.2.1.1-1為W5300讀時序圖:圖4.2.1.1-1 W5300讀時序圖下表為讀時序要求說明:表4.2.1.1-1 W5300讀時序要求名稱說明最小最大tADDRsAddress Setup Time after /CS and /RD low -7 nstADDRhAddress Hold Time after /CS or /RD high -tCS/CS Low Time 65 ns-tCSn/CS Next Assert Time 28 ns-tRD/RC Low Time 65 ns-tDATAsDATA Setup Time after
49、/RD low 42 n s-tDATAhDATA Hold Time after /RD and /CS high -7 nstDATAheDATA Hold Extension Time after /CS high -2XPLL_CLK4.2.1.2 邏輯實現時序下圖4.2.1.2-1為接口控制模塊在邏輯中實現讀時序(通過100M時鐘實現): 圖4.2.1.2-1 W5300讀時序實現圖4.2.2 寫時序實現4.2.2.1 時序要求下圖4.2.2.1-1為W5300寫時序圖:圖4.2.2.1-1 W5300寫時序圖下表為寫時序要求說明:表4.2.2.1-1 W5300寫時序要求名稱說明最
50、小最大tADDRsAddress Setup Time after /CS and /WR low -7 nstADDRhAddress Hold Time after /CS or /WR high -tCS/CS Low Time 50 ns-tCSn/CS Next Assert Time 28 nstWR/WR low time 50 nstDATAsDATA Setup Time after /WR low 7 ns7ns+7XPLL_CLKtDATAfData Fetch Time 14 nstWR - tDATAstDATAhData Hold Time after /WR hi
51、gh 7 ns-4.2.2.2 邏輯實現時序下圖4.2.2.2-1為接口控制模塊在邏輯中實現寫時序(通過100M時鐘實現):圖4.2.2.2-1 W5300寫時序圖4.2.3 實現狀態機接口控制模塊的實現狀態機如下圖:圖4.2.3-1 接口控制模塊的實現狀態機狀態機各狀態說明:1. timing_idle:狀態機初始化,復位后后進入的狀態,160ns后跳出。2. CMD_rdfifo_judge:判斷需要寫入W5300的數據緩存fifo是否有數據,并寄存當前fifo中的數據量。3. rd_CMD_fifo:讀取數據緩存fifo中的數據,該狀態維持時間需要滿足tCSn的時間(如果時鐘為100M,
52、則該狀態需要維持時間必須為30ns)。4. CMD_wr_rd_out:在該狀態需要判斷rd_CMD_fifo讀出來的數據是讀W5300還是寫W5300,并根據判斷的結果對W5300進行讀寫操作。4.2.4 接口定義4.3 主控制模塊主控制模塊,eth main control 主要對初始化配置模塊、SOCKETn驅動模塊的分時控制。4.3.1 實現狀態機下圖4.3.1-1為主控制模塊的實現狀態機:圖4.3.1-1 主控制模塊的實現狀態機狀態機各狀態說明:1. mc_idle : 狀態機初始化,復位后后進入的狀態,160ns后跳出。2. host_reset:在該狀態對W5300硬件復位,復位
53、時間為為65536ns。3. reset_wait:W5300復位后的等待狀態,維持時間是1ms。4. host_config:產生控制信號,驅動初始化配置模塊對W5300進行參數配置。5. host_reg_gain:W5300的相關寄存器的獲取模塊,獲取W5300的中斷寄存器和各SOCKET的RSR寄存器。6. host_ir_detect:對W5300中斷寄存器的IPCF位判斷。7. ip_conflict:如果W5300中斷寄存器的IPCF位置1,則狀態機跳入該狀態,表明有網絡中存在IP沖突。8. app_req_proc:對后端應用的請求做處理,產生各個SOCKET的mark寄存器,
54、如下表: 表4.3.1-1 Sn_MR寄存器Sn_prc_mark6:0名稱說明bit0Ir_reqW5300的SOCKETn有中斷標識bit1moni_ req后端應用的監聽請求bit2Link_req后端應用的鏈接請求bit3Discon_req后端應用的斷鏈請求bit4Close_req后端應用的關閉請求bit5send_req后端應用的數據發送請求bit6Recv_reqW5300中有數據接收請求9. Sn_proc_judge:對mark寄存器判斷,如果不為0,則進入Sn_driver_proc狀態。10. Sn_driver_proc:產生控制信號,驅動SOCKET啟動模塊對mark寄存器中的請求做相應處理。4.3.2 接口定義4.4 初始化配置模塊初始化配置模塊,initial config 主要完成W5300的初始化參數的配置:本端IP、對端IP,子網掩碼等,具體參數可參見2.2節。4.4.1 實現狀態機下圖4.4.1-1為初始化配置模塊的實現狀態機:圖4.4.1-1 初始化配置模塊的實現狀態機狀態機各狀態說明:1. config_idle:初始狀態,等待主控模塊的啟動。2. over
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 25年公司級安全培訓考試試題帶答案(突破訓練)
- 2024-2025管理人員安全培訓考試試題答案典型題
- 2025年人工智能工程師人工智能與智能語音識別技術論文寫作考核試卷
- 高校科技孵化器委托運營協議范文
- 2025-2030中國干制魚片行業市場發展分析及發展前景與投融資研究報告
- 2025-2030中國垃圾發電設備行業發展分析及投資前景預測研究報告
- 2025-2030中國單梁橋式起重機行業市場發展趨勢與前景展望戰略研究報告
- 2025-2030中國三管浮筒船行業市場發展趨勢與前景展望戰略研究報告
- 2025-2030中國AIC船舶維護、修理和大修行業市場發展趨勢與前景展望戰略研究報告
- 2025-2030電子元件產業發展分析及發展趨勢與投資前景預測報告
- 機械CAD、CAM-形考任務一-國開-參考資料
- 省考試錄用公務員面試通知書
- 第9課《美麗的顏色》說課稿 2024-2025學年統編版語文八年級上冊
- 制造業勞務外包質量控制制度
- DB11∕T 864-2020 園林綠化種植土壤技術要求
- 《飛向太空的航程》名師課件
- 表面技術概論化學轉化膜
- 2025年哈爾濱市中考數學模擬試卷(附答案解析)
- 各行業安全風險分級管控清單
- 父母贈與現金合同范本
- T-CPA 006-2024 造紙用濕強劑 聚酰胺環氧氯丙烷PAE
評論
0/150
提交評論