国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

嵌入式TCP/IP在單片機(jī)與PC機(jī)通信中的應(yīng)用

2011-01-15 10:10:52黃振宇
關(guān)鍵詞:PC機(jī)網(wǎng)卡IP地址

黃振宇

(重慶大學(xué),重慶 400030)

嵌入式TCP/IP在單片機(jī)與PC機(jī)通信中的應(yīng)用

黃振宇

(重慶大學(xué),重慶 400030)

單片機(jī)與PC機(jī)的通信有十分重要的實(shí)際意義.通過分析簡(jiǎn)化TCP/IP協(xié)議,使用KEILC51編制程序?qū)崿F(xiàn)TCP/IP協(xié)議,并采用RTL8019AS芯片設(shè)計(jì)制作連接單片機(jī)與PC機(jī)連接的硬件電路,對(duì)單片機(jī)與PC機(jī)間的通信進(jìn)行了研究.在對(duì)TCP/IP深入分析基礎(chǔ)上,簡(jiǎn)化TCP/IP協(xié)議棧并嵌入到51單片機(jī)中,結(jié)合硬件電路進(jìn)行了單片機(jī)端的IP設(shè)置、ping命令的使用,實(shí)現(xiàn)了單片機(jī)與PC主機(jī)的通信連接.

TCP/IP協(xié)議;51單片機(jī);RTL8019AS網(wǎng)絡(luò)控制芯片

單片機(jī)是微型計(jì)算機(jī)的一個(gè)重要的分支,因?yàn)榫哂畜w積小、質(zhì)量輕、價(jià)格便宜等優(yōu)點(diǎn),已經(jīng)在工業(yè)控制、數(shù)據(jù)采集以及儀器儀表自動(dòng)化等許多領(lǐng)域廣泛應(yīng)用.隨著計(jì)算機(jī)技術(shù)的發(fā)展,在要求響應(yīng)速度快、實(shí)時(shí)性、控制量多的實(shí)際應(yīng)用中,需要多個(gè)單片機(jī)結(jié)合PC機(jī)組成分布式系統(tǒng),故單片機(jī)與PC機(jī)的數(shù)據(jù)通信技術(shù)變得非常重要.與PC機(jī)間的通信類似,單片機(jī)與PC機(jī)也需要通信協(xié)議才能進(jìn)行通信.TCP/IP協(xié)議是目前最為常用的網(wǎng)絡(luò)通信協(xié)議,比較成熟,因此可以使得通信有很好的穩(wěn)定性.同時(shí),TCP/IP協(xié)議的使用使得數(shù)據(jù)在Internet上的傳輸成為可能,可極大地增強(qiáng)系統(tǒng)的可擴(kuò)展性和網(wǎng)絡(luò)化[1].

此前,關(guān)于嵌入式TCP/IP協(xié)議的設(shè)計(jì)已經(jīng)有過研究[2-3],已經(jīng)提出了輕便的簡(jiǎn)化TCP/IP協(xié)議,但是并未用于單片機(jī)和PC機(jī)的通信連接;同時(shí),也有關(guān)于單片機(jī)用于以太網(wǎng)網(wǎng)卡RTL8019AS通信的研究[4],但是并未使用TCP/IP協(xié)議,因此可擴(kuò)展性和網(wǎng)絡(luò)化不強(qiáng),不能用于數(shù)據(jù)在Internet上的傳輸.本文主要研究嵌入式TCP/IP協(xié)議在單片機(jī)與PC機(jī)通信中的應(yīng)用,實(shí)現(xiàn)了單片機(jī)與PC主機(jī)的通信連接.

1 TCP/IP協(xié)議的結(jié)構(gòu)及格式

TCP/IP協(xié)議包括應(yīng)用層、運(yùn)輸層、網(wǎng)絡(luò)層、鏈路層,每一層包括多個(gè)協(xié)議.TCP/IP協(xié)議非常復(fù)雜,本研究只涉及了TCP/IP協(xié)議的一部分,包括TCP/IP協(xié)議的結(jié)構(gòu)和部分協(xié)議的報(bào)文格式.涉及了運(yùn)輸層、網(wǎng)絡(luò)層、鏈路層,研究的的協(xié)議包括運(yùn)輸層的TCP協(xié)議、UDP協(xié)議,網(wǎng)絡(luò)層的ARP協(xié)議、ICMP協(xié)議,以及鏈路層.

數(shù)據(jù)必須按照格式進(jìn)行封裝才能進(jìn)行傳輸,TCP/IP協(xié)議數(shù)據(jù)封裝格式如圖1所示.數(shù)據(jù)的封裝格式是在每一層都加上該層協(xié)議首部,用戶數(shù)據(jù)在進(jìn)行以太網(wǎng)傳輸之前需要逐層加上TCP首部、IP首部、以太網(wǎng)首部.在研究中就是根據(jù)這種逐層封裝的思想對(duì)待發(fā)送數(shù)據(jù)進(jìn)行處理的.

圖1 TCP/IP協(xié)議封裝格式

2 嵌入式TCP/IP協(xié)議的實(shí)現(xiàn)

在編制實(shí)現(xiàn)TCP/IP協(xié)議的程序時(shí),使用KEILC51軟件進(jìn)行編寫.KEILC51軟件提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,包括C編譯器、宏匯編、連接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等,通過一個(gè)集成開發(fā)環(huán)境(uVision)將這些部分組合在一起.KEILC51軟件使用C語(yǔ)言進(jìn)行編寫,與匯編語(yǔ)言相比,作為高級(jí)語(yǔ)言的C語(yǔ)言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),為開發(fā)提供了便利.同時(shí),KeilC51生成的目標(biāo)代碼效率非常高,多數(shù)語(yǔ)句生成的匯編代碼很緊湊,容易理解.

2.1 ARP協(xié)議的實(shí)現(xiàn)

實(shí)現(xiàn)ARP協(xié)議是進(jìn)行通訊的前提,因?yàn)镮P地址與物理地址的映射是通過ARP協(xié)議實(shí)現(xiàn)的,有了IP地址與物理地址的映射才能得到主機(jī)的物理地址進(jìn)行通訊.在實(shí)現(xiàn)ARP協(xié)議時(shí)將IP地址和物理地址均保存為全局變量進(jìn)行操作,這樣可以在實(shí)現(xiàn)ARP協(xié)議的基礎(chǔ)上盡可能少占用51單片機(jī)有限的資源.在實(shí)現(xiàn)ARP協(xié)議時(shí)主要編寫ARP請(qǐng)求函數(shù)ARP_Requuest(),ARP應(yīng)答函數(shù)ARP_Answer(),ARP處理函數(shù)ARP_Process().ARP請(qǐng)求函數(shù)ARP_Request()用于完成ARP請(qǐng)求操作,對(duì)于待解析的IP地址是否屬于同一子網(wǎng)作出判斷,如果在則ARP請(qǐng)求物理地址,否則請(qǐng)求默認(rèn)網(wǎng)關(guān)MAC地址.ARP應(yīng)答函數(shù)ARP_Answer()用于對(duì)ARP請(qǐng)求進(jìn)行應(yīng)答,而ARP處理函數(shù)ARP_Process()用于處理應(yīng)答的信息,具體是將解析得到的物理地址存入指定位置.

2.2 ICMP協(xié)議的實(shí)現(xiàn)

ICMP協(xié)議是TCP/IP協(xié)議中屬于網(wǎng)絡(luò)層的一個(gè)子協(xié)議,其作用是檢測(cè)與主機(jī)的連接是否通暢.雖然并不傳輸用戶的數(shù)據(jù),但是ICMP協(xié)議對(duì)于用戶數(shù)據(jù)的傳輸起著非常關(guān)鍵的作用.ICMP協(xié)議具體是通過ping命令來(lái)實(shí)現(xiàn)的,如果主機(jī)能夠?qū)Ρ緳C(jī)發(fā)送的ICMP報(bào)文回復(fù)響應(yīng)報(bào)文,在本機(jī)收到并確認(rèn)回復(fù)的響應(yīng)報(bào)文之后,就可確認(rèn)本機(jī)與主機(jī)的連接通暢.鑒于51單片機(jī)資源有限,對(duì)ICMP協(xié)議進(jìn)行簡(jiǎn)化,只保留ping+IP地址的命令,不需計(jì)算通信往返時(shí)間,將測(cè)試包固定為32字節(jié).在實(shí)現(xiàn)ICMP協(xié)議時(shí),編寫請(qǐng)求函數(shù)Ping_Request()、應(yīng)答函數(shù)Ping_Answer()、回顯函數(shù)Ping_Echo()和處理函數(shù)Ping_Process().從串口輸入了ping命令后,程序包中的請(qǐng)求函數(shù)Ping_Request()會(huì)發(fā)送請(qǐng)求包.當(dāng)收到請(qǐng)求包后,應(yīng)答函數(shù)Ping_Answer()會(huì)自動(dòng)應(yīng)答.在收到應(yīng)答信息后,回顯函數(shù)Ping_Echo()會(huì)顯示相關(guān)信息.處理函數(shù)Ping_Process()會(huì)處理ping數(shù)據(jù)包,對(duì)于未解析的IP地址先進(jìn)行解析;對(duì)于已經(jīng)解析的IP地址,發(fā)出ping請(qǐng)求.

2.3 UDP協(xié)議的實(shí)現(xiàn)

UDP協(xié)議和TCP協(xié)議同屬TCP/IP協(xié)議中的運(yùn)輸層協(xié)議.UDP協(xié)議比較簡(jiǎn)單,使用端口號(hào)進(jìn)行通信,在發(fā)送報(bào)文之后無(wú)法確定是否正確到達(dá),因此易于出錯(cuò)[5].為了完成UDP協(xié)議,編寫了UDP請(qǐng)求函數(shù)UDP_Request()、UDP回顯函數(shù)UDP_Echo()、UDP處理函數(shù)UDP_Proecess().從串口輸入U(xiǎn)DP命令之后,程序包中的UDP請(qǐng)求函數(shù)UDP_Request()會(huì)發(fā)送請(qǐng)求包.在收到UDP請(qǐng)求后,UDP回顯函數(shù)UDP_Echo()會(huì)顯示相關(guān)信息.同時(shí),UDP處理函數(shù)UDP_Process()會(huì)根據(jù)IP地址解析與否進(jìn)行不同處理.當(dāng)IP地址未解析時(shí),會(huì)通過ARP請(qǐng)求函數(shù)ARP_Request()請(qǐng)求對(duì)IP地址進(jìn)行解析;當(dāng)IP地址已經(jīng)解析時(shí),使用解析得到的物理地址并調(diào)用UDP請(qǐng)求函數(shù)UDP_Request().

2.4 TCP協(xié)議的實(shí)現(xiàn)

TCP協(xié)議與UDP協(xié)議相比比較復(fù)雜,同時(shí)TCP協(xié)議是非常可靠的協(xié)議.TCP協(xié)議中擁有能夠保證準(zhǔn)確傳輸?shù)臋C(jī)制,即接收方收到數(shù)據(jù)時(shí),會(huì)向發(fā)送方發(fā)出確認(rèn)消息;發(fā)送方會(huì)一直等待直到收到確認(rèn)信息才會(huì)繼續(xù)發(fā)送數(shù)據(jù).這種機(jī)制使得TCP協(xié)議能夠提供很強(qiáng)的差錯(cuò)控制[6].對(duì)于TCP協(xié)議,使用有限狀態(tài)機(jī)的形式實(shí)現(xiàn).有限狀態(tài)機(jī)中只存在有限個(gè)狀態(tài),并且某一時(shí)刻機(jī)器只會(huì)處于某一個(gè)狀態(tài),當(dāng)有事件輸入時(shí),會(huì)使機(jī)器進(jìn)入另一個(gè)狀態(tài).根據(jù)可能存在的狀態(tài)和可能輸入的事件,繪制了狀態(tài)轉(zhuǎn)移圖來(lái)實(shí)現(xiàn)TCP協(xié)議.對(duì)TCP協(xié)議做了簡(jiǎn)化,根據(jù)需要使用了6個(gè)狀態(tài).狀態(tài)轉(zhuǎn)移圖見圖2.

圖2 狀態(tài)轉(zhuǎn)移流程

具體實(shí)現(xiàn)流程如圖2所示,首先接收TCP報(bào)文段或事件,然后根據(jù)報(bào)文段或事件在狀態(tài)轉(zhuǎn)移圖中查找相應(yīng)的狀態(tài)值,最終進(jìn)入某個(gè)狀態(tài).編寫的TCP協(xié)議實(shí)現(xiàn)程序主要包括TCP處理函數(shù)TCP_Process(), TCP超時(shí)處理函數(shù)TCP_Timeout().TCP_Process()用于對(duì)數(shù)據(jù)包進(jìn)行處理,而TCP_Timeout()用于對(duì)TCP超時(shí)進(jìn)行處理.對(duì)于TCP協(xié)議程序包,需要測(cè)試該程序能否滿足在編制TCP協(xié)議程序包時(shí)制作的狀態(tài)轉(zhuǎn)移圖.TCP協(xié)議程序包能夠按照狀態(tài)轉(zhuǎn)移圖從一個(gè)狀態(tài)轉(zhuǎn)移到另一個(gè)狀態(tài),說明TCP協(xié)議程序包順利實(shí)現(xiàn)預(yù)期功能.

2.5 鏈路層的實(shí)現(xiàn)

本設(shè)計(jì)中TCP/IP協(xié)議的運(yùn)輸層和網(wǎng)絡(luò)層由單片機(jī)實(shí)現(xiàn),而鏈路層由RTL8019AS網(wǎng)絡(luò)控制芯片及其驅(qū)動(dòng)程序?qū)崿F(xiàn),因此還需編制RTL8019AS網(wǎng)絡(luò)控制芯片的驅(qū)動(dòng)程序來(lái)實(shí)現(xiàn)TCP/IP協(xié)議的鏈路層[7]. RTL8019AS網(wǎng)絡(luò)控制芯片的驅(qū)動(dòng)程序負(fù)責(zé)進(jìn)行數(shù)據(jù)發(fā)送和接收,編寫的驅(qū)動(dòng)程序包括芯片初始化函數(shù)Initial(),數(shù)據(jù)包發(fā)送函數(shù)Send_Data()和數(shù)據(jù)包接收函數(shù)Receive_Data().芯片初始化函數(shù)Initial()完成芯片各項(xiàng)參數(shù)的設(shè)定,使芯片處于等待接收和發(fā)送數(shù)據(jù)的狀態(tài).根據(jù)RTL8019AS的工作流程,程序包中的數(shù)據(jù)包發(fā)送函數(shù)Send_Data()在發(fā)送數(shù)據(jù)時(shí),將待發(fā)送數(shù)據(jù)依照一定的格式寫入芯片然后發(fā)送.數(shù)據(jù)包接收函數(shù)Receive_Data()則在接收數(shù)據(jù)時(shí)還原接收到的物理信號(hào),并依照指定格式將數(shù)據(jù)存入芯片內(nèi)存中.

3 調(diào)試及分析

為了實(shí)現(xiàn)單片機(jī)與PC機(jī)連接,除了編制軟件外,還需要設(shè)計(jì)制作用于連接單片機(jī)和PC機(jī)的硬件電路.該硬件電路主要包括RTL8019AS網(wǎng)絡(luò)控制芯片、74HC573數(shù)據(jù)鎖存器和RJ45插座HR901170A. 74HC573數(shù)據(jù)鎖存器與單片機(jī)相連,HR901170A通過雙絞線與PC機(jī)連接,從而實(shí)現(xiàn)了單片機(jī)與PC機(jī)在硬件上的連接.

在完成硬件電路的設(shè)計(jì)制作和軟件的編制調(diào)試工作以后,將RTL8019AS芯片驅(qū)動(dòng)程序嵌入到RTL8019AS網(wǎng)絡(luò)控制芯片中,將ARP、ICMP、UDP、TCP協(xié)議實(shí)現(xiàn)程序嵌入單片機(jī)中,組成了一個(gè)完整的系統(tǒng),之后對(duì)系統(tǒng)進(jìn)行調(diào)試.使用串口調(diào)試助手軟件來(lái)協(xié)助調(diào)試.該軟件使用COM2端口,可以在PC機(jī)上利用ping命令測(cè)試單片機(jī)與主機(jī)、網(wǎng)卡的連通情況,這樣利用該軟件即可對(duì)單片機(jī)與PC機(jī)的連接情況進(jìn)行測(cè)試.將PC機(jī)IP地址設(shè)置為192.168.0.6,單片機(jī)地址設(shè)置為192.168.0.5,其中單片機(jī)IP地址的設(shè)置需要使用串口調(diào)試助手的SETIP命令實(shí)現(xiàn).測(cè)試單片機(jī)與主機(jī)的通信測(cè)試時(shí),在串口調(diào)試助手軟件中輸ping 192.168.0.6,得到響應(yīng)reply from 192.168.0.6,說明單片機(jī)與主機(jī)連接暢通.在單片機(jī)與網(wǎng)卡的通信測(cè)試時(shí),在串口調(diào)試助手中輸入ping 192.168.0.5,得到響應(yīng)reply from 192.168.0.5,說明單片機(jī)與其網(wǎng)卡連接暢通.最后,在測(cè)試主機(jī)與網(wǎng)卡的連接,直接使用PC機(jī)上的ping命令測(cè)試,輸入ping 192.168.0.5,得到響應(yīng),說明主機(jī)與網(wǎng)卡的連接暢通.

通過對(duì)單片機(jī)與主機(jī)、單片機(jī)與網(wǎng)卡、主機(jī)與網(wǎng)卡的連接測(cè)試,說明系統(tǒng)能進(jìn)行PC主機(jī)端的網(wǎng)絡(luò)設(shè)置和ping命令的使用,則可以得出結(jié)論,整個(gè)系統(tǒng)已經(jīng)順利實(shí)現(xiàn)了PC機(jī)與單片機(jī)的通信.

4 結(jié)語(yǔ)

在當(dāng)前的工業(yè)實(shí)際中,越來(lái)越需要單片機(jī)與PC機(jī)進(jìn)行通信以滿足實(shí)際應(yīng)用的要求,因此本文研究的單片機(jī)與PC機(jī)的通信很有實(shí)際意義.同時(shí),與互聯(lián)網(wǎng)連接也是單片機(jī)發(fā)展的一大趨勢(shì).雖然本研究只是實(shí)現(xiàn)了單片機(jī)與PC機(jī)的連接,但是TCP/IP協(xié)議嵌入單片機(jī),以及單片機(jī)與PC機(jī)連接中雙絞線的使用,因而本研究可用于數(shù)據(jù)在Internet上傳輸,結(jié)合51單片機(jī)具有的體積小、質(zhì)量輕、價(jià)格便宜、使用方便等優(yōu)點(diǎn),使本設(shè)計(jì)具有較為廣泛的應(yīng)用前景.

[1]張志博,孫長(zhǎng)瑜.基于TCP/IP的浮標(biāo)網(wǎng)絡(luò)通信系統(tǒng)設(shè)計(jì)[J].電子測(cè)量技術(shù),2008,31(2):7-11.

[2]劉亞.一種嵌入式TCP/IP的設(shè)計(jì)[J].綿陽(yáng)師范學(xué)院學(xué)報(bào),2006,26(2):102-105.

[3]喬麗,姜慧霖.一種嵌入式輕便TCP/IP協(xié)議棧的設(shè)計(jì)與實(shí)現(xiàn)[J].西南民族大學(xué)學(xué)報(bào):自然科學(xué)版,2010,36(3):487-490.

[4]鄭長(zhǎng)勇,徐勇.MCS51在以太網(wǎng)卡RTL8019AS通信中的應(yīng)用[J].安徽建筑工業(yè)學(xué)院學(xué)報(bào):自然科學(xué)版,2006,14(3):66-69.

[5]周哲.一種基于MCU的網(wǎng)絡(luò)傳輸系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦與電信,2008(6):56-58.

[6]林華.基于單片機(jī)的網(wǎng)絡(luò)傳輸系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2007(12):1530-1531.

[7]鮑祖尚.基于嵌入式Internet的信息家電的研究與設(shè)計(jì)[J].微計(jì)算機(jī)信息,2011(6):97-98.

App lication of embedded TCP/IP in communication between MCU and PC

Huang Zhenyu
(Chongqing University,Chongqing400030,China)

The communication between MCU and PC is very meaningful in the actual application.This paper researches the communication between MCU and PC through the analysis and simplification of TCP/IP protocals,the building of program realizing TCP/IP protocals and themake of circuit connecting the MCU and PC.On the basis of deep analysis of TCP/IP network protocols,we simplify the protocols and embed it into MCS51-MCU to realize IP setting of MCU,the use of ping command and then realize the communication between MCU and PC.

TCP/IPnetwork protocols,MCS51-MCU,RTL8019ASethernet controller

TN915.03

A

1008-7516(2011)05-0075-04

10.3969/j.issn.1008-7516.2011.05.018

2011-08-06

黃振宇(1990-),男,河南南陽(yáng)人.主要從事集成電路設(shè)計(jì)研究.

盧奇)

猜你喜歡
PC機(jī)網(wǎng)卡IP地址
在DDS 中間件上實(shí)現(xiàn)雙冗余網(wǎng)卡切換的方法
鐵路遠(yuǎn)動(dòng)系統(tǒng)幾種組網(wǎng)方式IP地址的申請(qǐng)和設(shè)置
Server 2016網(wǎng)卡組合模式
基于PC機(jī)與單片機(jī)的多機(jī)通信技術(shù)及抗干擾方法
基于三菱FXPLC的感應(yīng)淬火機(jī)床與PC機(jī)的串行通信實(shí)現(xiàn)
基于SNMP的IP地址管理系統(tǒng)開發(fā)與應(yīng)用
黑龍江電力(2017年1期)2017-05-17 04:25:16
VC.NET下實(shí)現(xiàn)dsPIC單片機(jī)與PC機(jī)的通信
電子制作(2017年23期)2017-02-02 07:16:47
挑戰(zhàn)Killer網(wǎng)卡Realtek網(wǎng)游專用Dragon網(wǎng)卡
讀編往來(lái)
通過QQ郵件查看好友IP地址
浏阳市| 望江县| 庆阳市| 项城市| 新蔡县| 疏勒县| 宜君县| 佳木斯市| 美姑县| 满洲里市| 天全县| 武邑县| 五莲县| 文昌市| 吉隆县| 芮城县| 垣曲县| 桦甸市| 吕梁市| 隆尧县| 牟定县| 合川市| 永修县| 海阳市| 尚义县| 谢通门县| 宣汉县| 宝丰县| 盐山县| 荆州市| 涿鹿县| 安阳县| 凉城县| 新津县| 肃宁县| 阜南县| 从化市| 乌兰县| 浑源县| 临猗县| 三都|