?

嵌入式TCP/IP在單片機與PC機通信中的應用

2011-01-15 10:10黃振宇
關鍵詞:PC機網卡IP地址

黃振宇

(重慶大學,重慶 400030)

嵌入式TCP/IP在單片機與PC機通信中的應用

黃振宇

(重慶大學,重慶 400030)

單片機與PC機的通信有十分重要的實際意義.通過分析簡化TCP/IP協議,使用KEILC51編制程序實現TCP/IP協議,并采用RTL8019AS芯片設計制作連接單片機與PC機連接的硬件電路,對單片機與PC機間的通信進行了研究.在對TCP/IP深入分析基礎上,簡化TCP/IP協議棧并嵌入到51單片機中,結合硬件電路進行了單片機端的IP設置、ping命令的使用,實現了單片機與PC主機的通信連接.

TCP/IP協議;51單片機;RTL8019AS網絡控制芯片

單片機是微型計算機的一個重要的分支,因為具有體積小、質量輕、價格便宜等優點,已經在工業控制、數據采集以及儀器儀表自動化等許多領域廣泛應用.隨著計算機技術的發展,在要求響應速度快、實時性、控制量多的實際應用中,需要多個單片機結合PC機組成分布式系統,故單片機與PC機的數據通信技術變得非常重要.與PC機間的通信類似,單片機與PC機也需要通信協議才能進行通信.TCP/IP協議是目前最為常用的網絡通信協議,比較成熟,因此可以使得通信有很好的穩定性.同時,TCP/IP協議的使用使得數據在Internet上的傳輸成為可能,可極大地增強系統的可擴展性和網絡化[1].

此前,關于嵌入式TCP/IP協議的設計已經有過研究[2-3],已經提出了輕便的簡化TCP/IP協議,但是并未用于單片機和PC機的通信連接;同時,也有關于單片機用于以太網網卡RTL8019AS通信的研究[4],但是并未使用TCP/IP協議,因此可擴展性和網絡化不強,不能用于數據在Internet上的傳輸.本文主要研究嵌入式TCP/IP協議在單片機與PC機通信中的應用,實現了單片機與PC主機的通信連接.

1 TCP/IP協議的結構及格式

TCP/IP協議包括應用層、運輸層、網絡層、鏈路層,每一層包括多個協議.TCP/IP協議非常復雜,本研究只涉及了TCP/IP協議的一部分,包括TCP/IP協議的結構和部分協議的報文格式.涉及了運輸層、網絡層、鏈路層,研究的的協議包括運輸層的TCP協議、UDP協議,網絡層的ARP協議、ICMP協議,以及鏈路層.

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

圖1 TCP/IP協議封裝格式

2 嵌入式TCP/IP協議的實現

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

2.1 ARP協議的實現

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

2.2 ICMP協議的實現

ICMP協議是TCP/IP協議中屬于網絡層的一個子協議,其作用是檢測與主機的連接是否通暢.雖然并不傳輸用戶的數據,但是ICMP協議對于用戶數據的傳輸起著非常關鍵的作用.ICMP協議具體是通過ping命令來實現的,如果主機能夠對本機發送的ICMP報文回復響應報文,在本機收到并確認回復的響應報文之后,就可確認本機與主機的連接通暢.鑒于51單片機資源有限,對ICMP協議進行簡化,只保留ping+IP地址的命令,不需計算通信往返時間,將測試包固定為32字節.在實現ICMP協議時,編寫請求函數Ping_Request()、應答函數Ping_Answer()、回顯函數Ping_Echo()和處理函數Ping_Process().從串口輸入了ping命令后,程序包中的請求函數Ping_Request()會發送請求包.當收到請求包后,應答函數Ping_Answer()會自動應答.在收到應答信息后,回顯函數Ping_Echo()會顯示相關信息.處理函數Ping_Process()會處理ping數據包,對于未解析的IP地址先進行解析;對于已經解析的IP地址,發出ping請求.

2.3 UDP協議的實現

UDP協議和TCP協議同屬TCP/IP協議中的運輸層協議.UDP協議比較簡單,使用端口號進行通信,在發送報文之后無法確定是否正確到達,因此易于出錯[5].為了完成UDP協議,編寫了UDP請求函數UDP_Request()、UDP回顯函數UDP_Echo()、UDP處理函數UDP_Proecess().從串口輸入UDP命令之后,程序包中的UDP請求函數UDP_Request()會發送請求包.在收到UDP請求后,UDP回顯函數UDP_Echo()會顯示相關信息.同時,UDP處理函數UDP_Process()會根據IP地址解析與否進行不同處理.當IP地址未解析時,會通過ARP請求函數ARP_Request()請求對IP地址進行解析;當IP地址已經解析時,使用解析得到的物理地址并調用UDP請求函數UDP_Request().

2.4 TCP協議的實現

TCP協議與UDP協議相比比較復雜,同時TCP協議是非??煽康膮f議.TCP協議中擁有能夠保證準確傳輸的機制,即接收方收到數據時,會向發送方發出確認消息;發送方會一直等待直到收到確認信息才會繼續發送數據.這種機制使得TCP協議能夠提供很強的差錯控制[6].對于TCP協議,使用有限狀態機的形式實現.有限狀態機中只存在有限個狀態,并且某一時刻機器只會處于某一個狀態,當有事件輸入時,會使機器進入另一個狀態.根據可能存在的狀態和可能輸入的事件,繪制了狀態轉移圖來實現TCP協議.對TCP協議做了簡化,根據需要使用了6個狀態.狀態轉移圖見圖2.

圖2 狀態轉移流程

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

2.5 鏈路層的實現

本設計中TCP/IP協議的運輸層和網絡層由單片機實現,而鏈路層由RTL8019AS網絡控制芯片及其驅動程序實現,因此還需編制RTL8019AS網絡控制芯片的驅動程序來實現TCP/IP協議的鏈路層[7]. RTL8019AS網絡控制芯片的驅動程序負責進行數據發送和接收,編寫的驅動程序包括芯片初始化函數Initial(),數據包發送函數Send_Data()和數據包接收函數Receive_Data().芯片初始化函數Initial()完成芯片各項參數的設定,使芯片處于等待接收和發送數據的狀態.根據RTL8019AS的工作流程,程序包中的數據包發送函數Send_Data()在發送數據時,將待發送數據依照一定的格式寫入芯片然后發送.數據包接收函數Receive_Data()則在接收數據時還原接收到的物理信號,并依照指定格式將數據存入芯片內存中.

3 調試及分析

為了實現單片機與PC機連接,除了編制軟件外,還需要設計制作用于連接單片機和PC機的硬件電路.該硬件電路主要包括RTL8019AS網絡控制芯片、74HC573數據鎖存器和RJ45插座HR901170A. 74HC573數據鎖存器與單片機相連,HR901170A通過雙絞線與PC機連接,從而實現了單片機與PC機在硬件上的連接.

在完成硬件電路的設計制作和軟件的編制調試工作以后,將RTL8019AS芯片驅動程序嵌入到RTL8019AS網絡控制芯片中,將ARP、ICMP、UDP、TCP協議實現程序嵌入單片機中,組成了一個完整的系統,之后對系統進行調試.使用串口調試助手軟件來協助調試.該軟件使用COM2端口,可以在PC機上利用ping命令測試單片機與主機、網卡的連通情況,這樣利用該軟件即可對單片機與PC機的連接情況進行測試.將PC機IP地址設置為192.168.0.6,單片機地址設置為192.168.0.5,其中單片機IP地址的設置需要使用串口調試助手的SETIP命令實現.測試單片機與主機的通信測試時,在串口調試助手軟件中輸ping 192.168.0.6,得到響應reply from 192.168.0.6,說明單片機與主機連接暢通.在單片機與網卡的通信測試時,在串口調試助手中輸入ping 192.168.0.5,得到響應reply from 192.168.0.5,說明單片機與其網卡連接暢通.最后,在測試主機與網卡的連接,直接使用PC機上的ping命令測試,輸入ping 192.168.0.5,得到響應,說明主機與網卡的連接暢通.

通過對單片機與主機、單片機與網卡、主機與網卡的連接測試,說明系統能進行PC主機端的網絡設置和ping命令的使用,則可以得出結論,整個系統已經順利實現了PC機與單片機的通信.

4 結語

在當前的工業實際中,越來越需要單片機與PC機進行通信以滿足實際應用的要求,因此本文研究的單片機與PC機的通信很有實際意義.同時,與互聯網連接也是單片機發展的一大趨勢.雖然本研究只是實現了單片機與PC機的連接,但是TCP/IP協議嵌入單片機,以及單片機與PC機連接中雙絞線的使用,因而本研究可用于數據在Internet上傳輸,結合51單片機具有的體積小、質量輕、價格便宜、使用方便等優點,使本設計具有較為廣泛的應用前景.

[1]張志博,孫長瑜.基于TCP/IP的浮標網絡通信系統設計[J].電子測量技術,2008,31(2):7-11.

[2]劉亞.一種嵌入式TCP/IP的設計[J].綿陽師范學院學報,2006,26(2):102-105.

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

[4]鄭長勇,徐勇.MCS51在以太網卡RTL8019AS通信中的應用[J].安徽建筑工業學院學報:自然科學版,2006,14(3):66-69.

[5]周哲.一種基于MCU的網絡傳輸系統的設計與實現[J].電腦與電信,2008(6):56-58.

[6]林華.基于單片機的網絡傳輸系統的設計與實現[J].電腦知識與技術,2007(12):1530-1531.

[7]鮑祖尚.基于嵌入式Internet的信息家電的研究與設計[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-),男,河南南陽人.主要從事集成電路設計研究.

盧奇)

猜你喜歡
PC機網卡IP地址
鐵路遠動系統幾種組網方式IP地址的申請和設置
Server 2016網卡組合模式
IP地址切換器(IPCFG)
基于三菱FXPLC的感應淬火機床與PC機的串行通信實現
基于SNMP的IP地址管理系統開發與應用
VC.NET下實現dsPIC單片機與PC機的通信
公安網絡中IP地址智能管理的研究與思考
排除OLT設備登錄故障
挑戰Killer網卡Realtek網游專用Dragon網卡
VIVID3彩色超聲儀結構原理及維修
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合