方案簡(jiǎn)介
W5500集成了TCP/IP協(xié)議棧,10M/100M以太網(wǎng)數(shù)據(jù)鏈路層(MAC)及物理層(PHY),用戶使用單芯片就能夠在應(yīng)用中拓展網(wǎng)絡(luò)連接。久經(jīng)市場(chǎng)考驗(yàn)的WIZnet全硬件TCP/IP協(xié)議棧支持TCP,UDP,IPv4,ICMP,ARP,IGMP和PPPoE協(xié)議。用戶使用W5500時(shí)只需簡(jiǎn)單的Socket編程就能實(shí)現(xiàn)以太網(wǎng)應(yīng)用。與傳統(tǒng)軟件協(xié)議棧不同,W5500內(nèi)嵌的8個(gè)獨(dú)立硬件 Socket可進(jìn)行8路獨(dú)立通信,相互之間通信效率互不影響,可通過(guò)W5500片上32K字節(jié)的收/發(fā)緩存靈活定義每個(gè)Socket的大小。
W5500提供高速標(biāo)準(zhǔn)4線SPI(外設(shè)串行接口),速率可達(dá)到80MHz,更容易與外設(shè)MCU整合,從而能更好地實(shí)現(xiàn)高速網(wǎng)絡(luò)通訊。為減少系統(tǒng)能耗,W5500還提供了網(wǎng)絡(luò)喚醒模式(WOL)和掉電模式供用戶選擇使用。
方案主要特性:
支持10M/100M以太網(wǎng)自適應(yīng)適配;
使用SPI接口,支持mode 0和mode 3;
SPI速率理論可以達(dá)到80MHz,實(shí)際可以提供到33.3MHz穩(wěn)定傳輸;
支持8路Socket單獨(dú)通路,具有32K片上緩存。
2. 實(shí)物圖
3. W5500通過(guò)網(wǎng)線連接路由器,電腦也通過(guò)網(wǎng)線或Wifi連接到路由器(確保在同一網(wǎng)段)。
4. 參數(shù)配置
打開代碼,在main.c的Load_Net_Parameters配置自己的網(wǎng)絡(luò)參數(shù),網(wǎng)絡(luò)工具端網(wǎng)絡(luò)參數(shù)需為本地電腦參數(shù),以Demo為例:
Gateway_IP:網(wǎng)關(guān)IP //代碼默認(rèn) 192.168.50.1
Sub_Mask:子網(wǎng)掩碼 //代碼默認(rèn) 255.255.255.0
Phy_Addr:物理地址 //代碼默認(rèn) 0c:29:ab:7c:00:01
IP_Addr:本機(jī)IP地址 //代碼默認(rèn) 192.168.50.199
S0_Port:本機(jī)斷開0端口號(hào) //代碼默認(rèn) 5000
S0_DIP:目的IP //代碼默認(rèn) 192.168.50.232
S0_DPort:目的端口 //代碼默認(rèn) 6000
5. TCP客戶端測(cè)試
5.1 打開網(wǎng)絡(luò)測(cè)試工具,點(diǎn)擊創(chuàng)建服務(wù)器→設(shè)置本機(jī)端口→點(diǎn)擊確定→啟動(dòng)服務(wù)器。
5.2 給開發(fā)板上電
5.3 可以看到W5500已經(jīng)連接上TCP服務(wù)器
5.4 進(jìn)行數(shù)據(jù)收發(fā),發(fā)送數(shù)據(jù),開發(fā)板可以收到,并且log打印出來(lái),開發(fā)板按下k4,會(huì)向TCP服務(wù)器發(fā)送數(shù)據(jù)。
6. TCP服務(wù)器測(cè)試
6.1 修改網(wǎng)絡(luò)參數(shù)后(參考步驟4),下載到開發(fā)板,并且給開發(fā)板上電。
6.2 打開網(wǎng)絡(luò)工具,創(chuàng)建TCP客戶端,點(diǎn)擊創(chuàng)建連接→選擇類型為TCP,設(shè)置目標(biāo)IP和端口號(hào),點(diǎn)擊創(chuàng)建。
6.3 點(diǎn)擊連接,可以看到開發(fā)板log連接成功。
7. UDP測(cè)試
7.1 打開網(wǎng)絡(luò)工具,創(chuàng)建UDP:點(diǎn)擊創(chuàng)建連接→選擇類型為UDP,設(shè)置目標(biāo)IP和端口號(hào)→點(diǎn)擊創(chuàng)建。
7.2 給開發(fā)板上電
7.3 收發(fā)數(shù)據(jù)測(cè)試
代碼適配流程
1. GPIO配置
W5500的RST和INIT引腳,RST是重啟的作用,低電平有效,時(shí)間大于500us,INIT是中斷腳,低電平有效,當(dāng)W5500有事件發(fā)生時(shí),會(huì)將INIT腳拉低,提示AC7840x處理事件。
2. SPI配置
2.1 SPI主設(shè)備配置
2.2 SPI讀寫時(shí)序
W5500的幀分為3段:地址段、控制段、數(shù)據(jù)段。地址段為W5500寄存器或TX/RX內(nèi)存指定了16位的偏移地址。控制段指定了地址段設(shè)定的偏移區(qū)域的歸屬,讀/寫訪問(wèn)模式以及SPI工作模式(可變長(zhǎng)度模式/固定長(zhǎng)度模式)。數(shù)據(jù)段可以設(shè)定為任意長(zhǎng)度(N-字節(jié),1≤N)或者是固定的長(zhǎng)度:1字節(jié),2字節(jié)或4字節(jié),如果SPI工作模式設(shè)置為可變數(shù)據(jù)長(zhǎng)度模式(VDM),SPI的SCSn信號(hào)需要由外部主機(jī)通過(guò)SPI幀控制。在可變數(shù)據(jù)長(zhǎng)度模式下,SCSn控制SPI幀的開始和停止:SCSn信號(hào)拉低(高電平到低電平),即代表W5500的SPI幀開始(地址段);SCSn信號(hào)拉高(低電平到高電平),即代表W5500的SPI幀結(jié)束(數(shù)據(jù)段的隨機(jī)N字節(jié)數(shù)據(jù)結(jié)尾)。
SPI數(shù)據(jù)幀
W5500的SPI數(shù)據(jù)幀包括了16位地址段的偏移地址,8位控制段和N字節(jié)數(shù)據(jù)段,如下圖所示。8位控制段可以通過(guò)修改區(qū)域選擇位(BSB[4:0]),讀/寫訪問(wèn)模式位(RWB)以及SPI工作模式位(OM[1:0])來(lái)重新定義。區(qū)域選擇位選擇了歸屬于偏移地址的區(qū)域。W5500支持?jǐn)?shù)據(jù)的連續(xù)讀/寫,其流程為數(shù)據(jù)從(2/4/N字節(jié)連續(xù)數(shù)據(jù)的)偏移地址的基址開始傳輸,偏移地址會(huì)(自增尋址)加1傳輸接下來(lái)的數(shù)據(jù)。
地址段
地址段為W5500的寄存器或TX/RX緩存區(qū)指定了16位的偏移地址,這16位偏移地址的值來(lái)自于從最高標(biāo)志位到最低標(biāo)志位的順序傳輸。SPI數(shù)據(jù)幀的數(shù)據(jù)段(2/4/N字節(jié))通過(guò)偏移地址自增(每傳輸1字節(jié)偏移地址加1)支持連續(xù)數(shù)據(jù)讀/寫。
控制段
控制段指定了地址段設(shè)定的偏移區(qū)域的歸屬,讀/寫訪問(wèn)模式以及SPI工作模式。具體見W5500數(shù)據(jù)手冊(cè)。
向W5500指定寄存器地址發(fā)送一個(gè)字節(jié)數(shù)據(jù)
向W5500指定寄存器地址發(fā)送n字節(jié)數(shù)據(jù)
讀取W5500指定寄存器n字節(jié)數(shù)據(jù)
3. W5500 Socket配置
3.1 配置W5500 MAC地址、網(wǎng)關(guān)、IP等網(wǎng)絡(luò)參數(shù)
3.2 配置Socket的讀寫緩存大?。J(rèn)為2K)
3.3 配置Socket收發(fā)超時(shí)時(shí)間和重傳次數(shù)
3.4 配置對(duì)端網(wǎng)絡(luò)IP、端口號(hào)等網(wǎng)絡(luò)參數(shù)
3.5 監(jiān)聽或者連接服務(wù)器
4. 中斷處理流程
4.1 W5500會(huì)拉低INIT IO,拋出中斷時(shí)間,AC7840x獲取中斷后,讀取SIR寄存器,獲取Socket事件號(hào)。
4.2 再根據(jù)事件號(hào)讀取對(duì)應(yīng)Sn_IR,獲取事件(如connect/receive/timeout)。
4.3 處理具體事件
4.4 中斷事件處理
更多關(guān)于AC7840x適配W5500技術(shù)咨詢,請(qǐng)聯(lián)系support@autochips.com。