前段時間接觸到W5100這款集成了PHY的以太網芯片,用作工業場合的通訊以及數據傳輸。大概要做些什么事呢? 首先 stm32F4通過FSMC總線,將待發送的數據傳至W5100的tempbuffer中,然后W5100通過TCP或者UDP傳輸方式,分包將數據發到上位機,存儲到上位機設備中,以備后面分析用。
用這款芯片的理由:集成了PHY,避免了外部再接轉換芯片,另外有4個獨立的SOCKET,可並行工作,具備TCP/UDP/UDP_Broadcasting可分配功能。
TCP:
服務器端:
配置FSMC端口--->寫入gateway和IP--->Socket初始化-->Socket_Listen--->中斷服務函數
客戶端:
配置FSMC端口--->IP和端口配置 --->Socket初始化-->Socket_Connect--->中斷服務函數
UDP:
組網廣播:
配置FSMC端口--->IP配置--->Socket初始化 --->Socket_UDP處理函數
FSMC總線時鍾過大,導致數據丟幀。增大分頻系數,降低總線時鍾即可解決。
寫W5100地址的時候,分成高位和低位,讀數據和寫數據,都是操作W5100的基址后面的3個偏移地址。(具體可參照W5100手冊)
TCP客戶端比服務端復雜,因為客戶端的處理函數比服務端麻煩,而且客戶端的狀態比服務端多,服務端開啟之后,只需要監聽客戶端是否接入,對應將接入的客戶端數據處理返回即可。
UDP在傳輸過程中,前面8個字節用來存放發送IP,目的端口,數據長度,后面的才是幀數據,這樣針對不同的IP端口,執行不同的操作。
以上兩個Socket同時開啟,可以正常傳輸數據。但是發熱量有點大,芯片溫度比周圍其他芯片燙,集成PHY的原因。
具體的手冊和相關資料,見網站:http://www.9mcu.com/9mcubbs/forum.php?mod=forumdisplay&fid=432