基于ENC424J600的以太網與串行接口轉換技術
2.2 系統硬件結構
網絡轉串行通信接口的系統結構框圖如圖4所示。STM32F103RET6通過SPI1串行通信接口、一個GPIO引腳作為中斷引腳與網絡控制器相連,系統再引出SPI2、CAN總線通信接口的引腳。將UART1串行接口作為控制臺供調試使用。STM32F103RET6具有串口ISP下載功能,將BOOT0接高電平,BOOT1接低電平即可進入ISP下載模式。該系統可以通過跳線選擇ISP下載功能。本文引用地址:http://www.104case.com/article/160920.htm
3 系統軟件設計
軟件的設計主要是移植LwIP協議棧,添加各串行通信接口的初始化程序,編寫網絡控制器底層驅動,編寫上層應用程序。
3.1 網絡控制器底層驅動實現過程
網絡控制器底層驅動初始化程序放在low_level_init函數中,整個過程為:初始化SPI1接口,對網絡控制器進行系統復位;設置發送、接收緩沖區指針;初始化PHY層為100 Mbase全雙工模式,使能接收中斷。網絡控制器底層發送程序放在low_level_output函數中,整個過程為:將以太網包拷貝至SRAM buffer,設置發送起始地址;發送幀長,置高TXRTS位使能發送,直到TXRTS被硬件清零才能進行第二次發送。網絡控制器接收程序放在low_level_input函數中,當接收中斷發生時系統通過上層應用程序調用low_level_input函數。該函數主要內容為:讀取PKTIF位以確定是否有以太網幀等待接收;設置接收指針地址,讀取該幀的前8個字節,其中前兩個字節為下一幀接收地址,第3、4個字節為這一幀的長度,申請當前幀長的緩沖區,將接收數據讀入緩沖區,置高PKTDEC為下一幀接收做準備。
3.2 LwIP協議棧分析
LwIP協議棧可以在無操作系統的軟件平臺下移植,LwIP實現的重點是在保持TCP/IP協議主要功能的基礎上減少對RAM的占用,因此它也適合在中低端的嵌入式系統中應用。LwIP主要是完成IP層和TCP/UDP數據傳輸層的任務,它與底層網絡控制器的接口主要體現在etherneti f.c函數中。在以太網幀的接收過程中以太網數據包通過底層接收程序傳至IP層,IP層判斷是TCP數據包還是UDP數據包,送至相應數據傳輸層處理,數據傳輸層再將收到的數據傳至用戶應用程序。在以太網幀的發送過程中,用戶程序選擇是通過UDP還是TCP發送數據包,將數據包送至相應的傳輸層,再傳至IP層,IP層再將數據傳至底層,發送程序將數據發送出去。
3.3 系統軟件流程
系統軟件流程如圖5所示。
軟件主要完成初始化、等待接收以太網幀、通過串行接口將數據幀發送出去的任務。初始化包括創建netif網絡接口、SPI1接口、網絡控制器的PHY層、MAC層,使能接收中斷、初始化TCP服務器端。初始化完成后,等待上位機軟件TCP的客戶端與底層軟件的TCP服務器端建立連接。連接建立后整個系統就循環等待接收TCP客戶端發送的以太網數據幀,當有以太網數據幀到達時,產生接收中斷,接收到的數據幀從PHY層傳到MAC層,再傳到IP層,最終傳到TCP層進行數據接收處理。應用程序收到處理過的以太網數據幀,處理相應的數據,根據數據傳遞的信息通過SPI2或CAN總線串行通信接口將信息發送出去,以實現相應的控制功能。
tcp/ip相關文章:tcp/ip是什么
浮球開關相關文章:浮球開關原理
評論