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