一、W5500介紹
W5500是一個集成的以太網模塊,這個模塊上攜帶TCP/IP協議,控制器只需要通過SPI協議讀寫其暫存器便可以以網路的方式進行資料互動,
W5500模塊自帶10個引腳,但由于使用其官方庫,只需使用六個引腳便可以進行資料互動,這六個引腳分別為:VCC、GND、MISO、MOSI、SCS、SCLK,其中:
MISO:SPI主機輸入從機輸出引腳;
MOSI:SPI主機輸出從機輸入引腳;
SCS:SPI SLAVE選擇引腳(低電平有效);
SCLK:時鐘信號引腳,
和單片機的連線為:MISO?PA6,MOSI?PA7,SCS?PA4,SCLK?PA5,
在程式中操作的幾個重要暫存器:
Sn_SR(Socket n 狀態暫存器):指示了Socket n的狀態,并根據 Sn_CR 或者一些 TCP 模式下的特殊控制包,如 SYN,FIN 包而改變;
Sn_MR(Socket n 模式暫存器):該暫存器用于配置所有 Socket 的選項或協議型別;
Sn_IR (Socket n 中斷暫存器):該暫存器用于提供給 Socket n 中斷型別資訊;
Sn_RXBUF_SIZE (Socket n 接收快取大小暫存器):該暫存器配置了 Socket n 的接收快取大小,Socket n 接收快取區大小可以配置為 1,2,4,8 和 16Kbytes,
二、UDP、TCP介紹
UDP是基于IP的簡單協議,是不可靠的協議,其優點是簡單、輕量化和速度快,缺點是沒有流控制,沒有應答確認機制,不能解決丟包、重發和錯序問題,UDP不是面向連接的,是不可靠的傳輸,
TCP是面向連接的協議,也就是說,在收發資料前,必須和對方建立一個可靠的連接, 一個TCP連接必須要經過三次握手才能建立起來,簡單的描述下這三次握手的程序:
首先,我讓信使運輸一份信件給對方,對方收到了那么他就知道了我的發件能力和他的收件能力是可以的,這是第一次握手,
然后,他就給我回信,我若收到了,我便知道了我的發件能力和他的收件能力是可以的,并且他的發件能力和我的收件能力也是可以的,這是第二次握手,
然而此時他還不知道他的發件能力和我的收件能力到底可不可以,于是我最后反饋一次,他若收到了,他便清楚了他的發件能力和我的收件能力是可以的,這便是第三次握手,
三次握手結束便建立起了連接,以上是一種通俗化的理解,其實在三次握手程序中會發送資料包,并根據資料包進行判斷二者的收發能力,
三、程式實作TCPS、TCPC、UDP的程序
1、TCPS,單片機作為TCP的服務器,在該程式的實作部分通過函式獲取Sn_SR暫存器的值來判斷Socket的狀態,若Socket處于關閉狀態則呼叫函式打開Socket;若Socket已處于初始化狀態則建立監聽;若Socket處于連接建立狀態,則清除接收的中斷標志位并進行回環測驗,接收來自Client的資料,并將此資料再次發送給Client;若Socket處于等待關閉的狀態則呼叫函式關閉Socket,
2、TCPC,單片機作為TCP的客戶端,同樣在程式的實作部分通過函式獲取Sn_SR暫存器的值來判斷Socket的狀態,若Socket處于關閉狀態則呼叫函式打開Socket;若Socket已處于初始化狀態則建立連接;若Socket處于連接建立狀態,則清除接收的中斷標志位并進行回環測驗,接收來自Server的資料,并將此資料再次發送給Server;若Socket處于等待關閉的狀態則呼叫函式關閉Socket,
3、UDP,在程式的實作部分通過函式獲取Sn_SR暫存器的值來判斷Socket的狀態,若Socket處于關閉狀態則呼叫函式打開Socket;若Socket處于UDP模式,則清除接收的中斷標志位并進行回環測驗,接收來自上位機的資料,并將此資料先發送至單片機再次發送給上位機,在此模式中不再需要建立連接,只需將IP地址和埠設定好即可,
四、遇到的問題及解決
在實作UDP的時候出現了上位機發送資料但是回傳值是-1的情況,剛開始我去網上查找原因,說是recvfrom函式的問題,但這是一個官方庫且我不太相信UDP實作函式沒有問題,所以我就對UDP相關標志位進行了修改,修改過后就可以實作UDP的功能,
在其功能都實作了之后就開始將其移植到UCOS中去,想都沒想直接將相關檔案進行移動,并替換掉原來UCOS專案的檔案,剛開始覺得不是太難,但是移植過后嘗試運行失敗,然后就進行一步一步的除錯,發現跳過UART函式初始化之后網路可以進行連接,這時候恍然大悟,UART的相關設定發生變化導致整個系統啟動出錯,最后將UART初始化換了回去,便可以進行網路連接和串口輸出,
————————————————
著作權宣告:本文為CSDN博主「孫可樂!!」的原創文章,遵循CC 4.0 BY-SA著作權協議,轉載請附上原文出處鏈接及本宣告,
原文鏈接:https://blog.csdn.net/sunkele_/article/details/125599332
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/519158.html
標籤:其他
