摘要:用8位單片機(jī)8031和ISA總線網(wǎng)卡,實(shí)現(xiàn)RS485串行設(shè)備與以太網(wǎng)的連接,以傳送控制信令和數(shù)據(jù)文件。程序設(shè)計(jì)采用C51語言,便于移植和調(diào)試。
關(guān)鍵詞:以太網(wǎng) 串行通訊 單片機(jī) C51
單片機(jī)或微控制器(MCU)(也稱為嵌入式系統(tǒng))已經(jīng)在各個(gè)領(lǐng)域得到了廣泛的應(yīng)用。目前絕大多數(shù)系統(tǒng)都是以MCU為核心,與監(jiān)測(cè)、伺服、指示設(shè)備配合實(shí)現(xiàn)一定的功能。以太網(wǎng)是當(dāng)今最受歡迎的局域網(wǎng)之一,現(xiàn)已成為社會(huì)重要的基礎(chǔ)信息設(shè)施,是信息流通的重要渠道。如果嵌入式系統(tǒng)能夠連接到Internet,則可以方便、低廉地將信息傳送到世界上的任何一個(gè)地方。
將嵌入式系統(tǒng)與Internet相連的主要困難在于:Internet的各種通信協(xié)議對(duì)存儲(chǔ)器、運(yùn)算速度等的要求比較高;而嵌入式系統(tǒng)中除部分32位處理器外,大量存在的8位和16位MCU,支持TCP/IP等Internet協(xié)議將占用大量系統(tǒng)資源,影響本來的功能或根本不可能實(shí)現(xiàn)。
本文用8031單片機(jī)和RTL8019AS網(wǎng)卡實(shí)現(xiàn)了RS485串口設(shè)備數(shù)據(jù)文件通過以太網(wǎng)傳輸?shù)竭h(yuǎn)端計(jì)算機(jī)的功能。

1 串行通訊
串行通訊在通訊領(lǐng)域被廣泛應(yīng)用。RS232接口已成計(jì)算機(jī)、計(jì)算機(jī)外設(shè)、交換機(jī)和許多通訊設(shè)備的標(biāo)準(zhǔn)接口。在我國(guó)工業(yè)總線的應(yīng)用中,RS485、RS422使用最為普遍。
在串行接口連接中,按連接方式可分為:面向連接和無連接。無連接原理比較簡(jiǎn)單,通訊雙方無握手過程。一方如有數(shù)據(jù)需要發(fā)送,則立即通過串行接口發(fā)送出去,另一方被動(dòng)接收。該方式能夠達(dá)到較高的通訊速率,但不能保證數(shù)據(jù)傳輸?shù)目煽啃?可用于對(duì)數(shù)據(jù)可靠性要求不高的場(chǎng)合,如語音、圖像等。而面向連接方式則不同。甲方有數(shù)據(jù)發(fā)送請(qǐng)求時(shí),向乙方發(fā)送“請(qǐng)求發(fā)送數(shù)據(jù)”命令;乙方收到后,如準(zhǔn)備就緒,則回送確認(rèn)信息;甲方得到乙方的確認(rèn)后方可發(fā)送數(shù)據(jù)。大多數(shù)情況下,乙方要對(duì)收到的數(shù)據(jù)進(jìn)行校驗(yàn),校驗(yàn)正確發(fā)送“通訊終止”命令;否則發(fā)送“重發(fā)”命令。面向連接的串行通訊過程實(shí)現(xiàn)起來要復(fù)雜得多,通常用于數(shù)據(jù)文件的傳輸。
2 以太網(wǎng)的物理傳輸幀
標(biāo)準(zhǔn)IEEE802.3幀結(jié)構(gòu)由七部分組成,如表1所示。除了數(shù)據(jù)域的長(zhǎng)度不固定外,其他部分的長(zhǎng)度都是固定不變的。在發(fā)送數(shù)據(jù)時(shí),幀頭、起始位和校驗(yàn)位都是網(wǎng)卡自動(dòng)添加;在接收數(shù)據(jù)時(shí),幀頭和起始位將被網(wǎng)卡自動(dòng)跳過,即網(wǎng)步一旦檢測(cè)到有效幀頭和幀超始位,就認(rèn)為有有效數(shù)據(jù)開始,并將有效數(shù)據(jù)存入接收緩沖環(huán)。
表1 標(biāo)準(zhǔn)IEEE802.3幀結(jié)構(gòu)
| 幀頭 | 起始位 | 目的地址 | 源地址 | 數(shù)據(jù)長(zhǎng)度 | 數(shù)據(jù)域 | 校驗(yàn)位 |
| 62位 | 2位 | 48位 | 48位 | 16位 | 不超過1500字節(jié) | 32位 |
3 以太網(wǎng)卡
RTL8019AS網(wǎng)卡是8/16位ISA總線的網(wǎng)卡,遵循IEEE802.3協(xié)議。按功能可將其劃分為:接收功能模塊、CRC產(chǎn)生模塊、發(fā)送功能模塊、地址識(shí)別模塊、FIFO控制模塊、協(xié)議邏輯陣列模塊及DMA和緩沖控制模塊。對(duì)網(wǎng)卡進(jìn)行編程可以實(shí)現(xiàn)局址網(wǎng)內(nèi)任意站點(diǎn)之間的通信而需要網(wǎng)絡(luò)操作系統(tǒng)的支持。
熟悉網(wǎng)卡接口電路是對(duì)網(wǎng)理編程的首要條件。網(wǎng)卡接口電路可分為兩部分:一是與計(jì)算機(jī)ISA總線相連,包括數(shù)據(jù)總線讀寫、地址總線驅(qū)動(dòng)、中斷控制信號(hào)的產(chǎn)生、存儲(chǔ)器讀寫信號(hào)以及I/O端口讀寫信號(hào)的引入等;二是對(duì)網(wǎng)卡內(nèi)部的操作,包括對(duì)緩沖RAM的讀寫、對(duì)RTL8019AS的控制、讀站地址PROM以及讀自舉ROM等。ISA總線共有98個(gè)信號(hào),通過對(duì)網(wǎng)卡工作原理的分析,可以將接口信號(hào)線減至最少。2表是驅(qū)動(dòng)RTL8019AS網(wǎng)卡所需的信號(hào)線。
表2 系統(tǒng)所使用的網(wǎng)卡ISA總線信號(hào)線





