- W5500簡介
- 芯片特點
- 引腳說明
- 相關寄存器相關程序測試結果圖總結
W5500簡介本次寫一篇相關驅(qū)動W5500模組的文章,W5500 芯片是一種采用全硬件 TCP/IP 協(xié)議棧的嵌入式以太網(wǎng)控制器,它能使嵌入式系統(tǒng)通過 SPI(串行外設接口)接口輕松地連接到網(wǎng)絡。此次準備寫一下51驅(qū)動W5500作為客戶端的相關說明。下面我們將看到更多關于W5500模塊的說明以及如果使用它,我們也準備了相關的代碼以供測試使用。 點擊圖片購買 芯片特點①支持硬件 TCP/IP 協(xié)議:TCP、UDP、ICMP、IGMP、IPv4、ARP、IGMP、PPPoE 和以太網(wǎng) ②支持 8 個獨立的端口(sockets) ③極小巧的 LQFP48 無鉛封裝 ④提供休眠模式 ⑤提供網(wǎng)絡喚醒 ⑥支持高速 SPI 總線(SPI 模式 0,3) ⑦內(nèi)部 32K 字節(jié)存儲器作 TX/RX 緩存 ⑧內(nèi)嵌 10/100Mbps 以太網(wǎng)物理層 ⑨支持自動協(xié)商(10/100-Based 全雙工/半雙工) ⑩不支持 IP 分段 注意:3.3V 工作電壓,I/O 口可承受 5V 電壓使用時一定要注意供電和I/O口的電壓不小心的話容易燒壞模塊。 引腳說明引腳說明 | 功能說明 | 3.3V | 3.3V 電源輸入引腳 | MISO | SPI 主機輸入從機輸出引腳 | MOSI | SPI 主機輸出從機輸入引腳 | SCS | SPI SLAVE 選擇引腳(低電平有效) | SCLK | SPI 主機輸出從機輸入引腳 | 5V | 5V 電源輸入引腳 | GND | 電源地引腳 | RST | W5500 硬件初始化引腳(低電平有效) | INT | W5500 中斷引腳(低電平有效) | NC | 懸空 |
原理圖可看:電路中加了LDO從而可以允許5V供電,注意供電3.3V不要接入5V會損壞模組 相關寄存器W5500具有一個公共寄存器和8個端口寄存器,TX和RX的緩沖區(qū)分配給8個端口寄存器,51單片機也可以通過查詢寄存器去讀取對應端口的狀態(tài)來檢測發(fā)送和接受數(shù)據(jù)。 還有一些需要用到的公共配置的寄存器去配置IP或者MAC地址還有子網(wǎng)掩碼等參數(shù),8個端口寄存器可用于通信,使用端口號的值可以有SPI的BSB幀【4:0】進行選擇。 下圖為幾個重要配置參數(shù)寄存器可以分別配置網(wǎng)關,子網(wǎng)掩碼,MAC物理地址等信息。 這些配置信息在程序中完成相關配置放入數(shù)組中存儲用于取用。
相關程序驅(qū)動芯片:STC89C52 部分相關初始化函數(shù)可看下圖配置相關寄存器: 復位W5500并檢測以太網(wǎng)連接: /********************復位W5500并檢測W5500的連接狀態(tài)連接成功時候PHYCFGR寄存器LINK位硬件置1********************/void W5500_Hardware_Reset(void){W5500_RST=0;//復位引腳拉低Delay(200);W5500_RST=1;//復位引腳拉高Delay(200);while((Read_W5500_1Byte(PHYCFGR)&LINK)==0);//等待以太網(wǎng)連接完成
初始化相關代碼: 注意端口寄存器可配置TXBUFF,RXBUFF緩存空間大小 可參考手冊中的示例配置:  void W5500_Init(void){unsigned char i=0;Write_W5500_1Byte(MR, RST);//軟件復位W5500,置1有效,復位后自動清0Delay(10);//延時10ms,自己定義該函數(shù)//設置網(wǎng)關(Gateway)的IP地址,Gateway_IP為4字節(jié)unsigned char數(shù)組,自己定義//使用網(wǎng)關可以使通信突破子網(wǎng)的局限,通過網(wǎng)關可以訪問到其它子網(wǎng)或進入InternetWrite_W5500_nByte(GAR, Gateway_IP, 4);//設置子網(wǎng)掩碼(MASK)值,SUB_MASK為4字節(jié)unsigned char數(shù)組,自己定義//子網(wǎng)掩碼用于子網(wǎng)運算Write_W5500_nByte(SUBR,Sub_Mask,4);//設置物理地址,PHY_ADDR為6字節(jié)unsigned char數(shù)組,自己定義,用于唯一標識網(wǎng)絡設備的物理地址值//該地址值需要到IEEE申請,按照OUI的規(guī)定,前3個字節(jié)為廠商代碼,后三個字節(jié)為產(chǎn)品序號//如果自己定義物理地址,注意第一個字節(jié)必須為偶數(shù)Write_W5500_nByte(SHAR,Phy_Addr,6);//設置本機的IP地址,IP_ADDR為4字節(jié)unsigned char數(shù)組,自己定義//注意,網(wǎng)關IP必須與本機IP屬于同一個子網(wǎng),否則本機將無法找到網(wǎng)關Write_W5500_nByte(SIPR,IP_Addr,4);//設置發(fā)送緩沖區(qū)和接收緩沖區(qū)的大小,參考W5500數(shù)據(jù)手冊for(i=0;i<8;i++){Write_W5500_SOCK_1Byte(i,Sn_RXBUF_SIZE, 0x02);//Socket Rx memory size=2kWrite_W5500_SOCK_1Byte(i,Sn_TXBUF_SIZE, 0x02);//Socket Tx mempry size=2k}//設置重試時間,默認為2000(200ms)//每一單位數(shù)值為100微秒,初始化時值設為2000(0x07D0),等于200毫秒Write_W5500_2Byte(RTR, 0x07d0);//設置重試次數(shù),默認為8次//如果重發(fā)的次數(shù)超過設定值,則產(chǎn)生超時中斷(相關的端口中斷寄存器中的Sn_IR 超時位(TIMEOUT)置“1”)Write_W5500_1Byte(RCR,8);}
測試結果圖燒入51單片機后使用電腦打開TCP服務端口即可收到單片機作為客戶端發(fā)送到電腦服務端的相關數(shù)據(jù)。 ==注意:==電腦服務端配置需要先配置好和單片機中程序中設置的目的IP和端口號不然沒法通信傳輸數(shù)據(jù)。 總結W5500內(nèi)嵌了硬件TCP/IP協(xié)議在使用過程中比較方便直接使用SPI進行通信即可驅(qū)動,免去軟件協(xié)議上的實現(xiàn),對于單片機的驅(qū)動以太網(wǎng)通信是十分方便的,程序代碼比較長,需要相關程序代碼的可下方留言獲取,另外可提供STM32相關驅(qū)動代碼,本文對于W5500的使用總結到此結束,歡迎一鍵三連?。。?/span>
|