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