新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 用8位單片機實現串口-以太網轉換器

        用8位單片機實現串口-以太網轉換器

        作者: 時間:2009-10-16 來源:網絡 收藏
        5.2 網卡初始化過程

        對網卡的初始化就是對相關寄存器進行初始化。這些寄存器包括CR、DCR、RBCR、PSTART、PSTOP、
        ISR、IMR、PAR0-PAR5、MAR0-MAR5、CURR、TCR和RCR等。初始化過程如下:

        (1)CR=0x21:選擇頁0寄存器,將NIC處于離線狀態;

        (2)DCR=0x88:8位內存訪問,正常工作方式;

        (3)RBCR0=0,RBCR1=0:遠程DMA操作時傳遞字節數清零;

        (4)RCR=0xc0:接收到的幀存入緩沖環;

        (5)TCR=0xe2:環路測試狀態;

        (6)PSTART=0x4c,PSTOP=0x80:構造緩沖環;

        (7)ISR=0xff:中斷寄存器清零;

        (8)IMR=0x00:屏蔽所有的中斷;

        (9)CR=0x61:選擇頁1;

        (10)設置網卡地址PAR0-PAR5;

        (11)設置多址寄存器MAR0-MAR5;

        (12)CURR=0x4d:初始化當前頁寄存器;

        (13)CR=0x22:選擇頁1,正常工作狀態;

        (14)TCR=0XE0:發送器正常工作狀態;

        5.3 發送控制過程

        在網絡中,幀傳輸的過程就是發送方將待發送的數據按幀格式要求封裝成幀,然后通過網卡發送到網絡的傳輸線上。發送程序框圖如圖3所示。

        本文引用地址:http://www.104case.com/article/173588.htm

        發送程序框圖

        5.4 接收控制過程

        幀的接收過程分為兩步:第一步由本地DMA將幀存入接收緩沖環中;第二步由遠程DMA將接收緩沖環中的幀讀入內存。即將網絡上的數據幀接收并緩存在網卡的接收緩沖環中,然后由主機程序將緩存在緩沖環中的幀讀走并存入內存中。

        幀的接收工作由網卡自動完成,只需對與相關的寄存器如PSTART、PSTOP、CURR和BNRY進行適當的初始化即可。

        幀讀入較幀接收要復雜一些。首先必須初始化相應的寄存器RSAR、RBCR,然后再啟動遠程DMA讀操作和主機程序的讀端口操作。

        以下是接收數據幀的子程序,為了獲得數據長度,我們先讀入18個字節的數據,然后根據有效數據的長度將幀完整讀入。為了啟動遠程DMA讀操作,應該令CR=0AH,遠程DMA將從接收緩沖環的DMA地址處讀入1字節并送往I/O數據端口,由主機程序讀入內存。這一過程將一直持續到RBCR寄存器為0。

        程序


        5.5 通訊子程序

        數據文件的傳輸編制了一個通訊協議,該協議由引導幀、長度幀、數據幀和確認幀等組成。其中引導幀是用于同步每一包數據的引導頭,長度幀是這一包數據的總長度,數據幀是其中的數據信息,確認幀是接收方對發送方的回應。每幀數據由16個字節組成,每幀的第14個字節為標志位,第15字節為校驗位。標志位中有2位幀標志位,3位序號位;校驗采用和校驗,只計算0-13字節,溢出值舍去。在發送方有數據發送時,先檢測線路是否空閑,如線路空閑則向接收方發送“請求發送數據”命令幀。接收機收到后,如準備就緒,則回送“可以發送”的確認

        命令。發送方得到確認后開始發送數據。接收方對收到的每一幀數據進行和校驗,校驗正確發送“和校驗正確”命令,發送方發送下一幀;否則發送“重發”命令,發送方重發此幀。協議中還具有等待超時處理、幀不同步處理和線路沖突檢測功能。

        6 結束語

        利用8位8031驅動ISA總線網卡,串口設備通過進行通訊,可以方便、可靠、低廉地將數據傳輸到遠端設備。而且,通過串口設備與的相連,可以很好的解決多種工業總線的系統集成問題,同時也大大豐富了工業總線的體系,促使其向更高層次發展。可以預計,小型串口設備與相連將帶來一場新的技術浪潮。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 陵水| 开封县| 扎鲁特旗| 高要市| 昆山市| 宜兰县| 红原县| 龙南县| 荔波县| 金溪县| 万山特区| 南平市| 鹤峰县| 夏河县| 梁山县| 博客| 怀柔区| 全南县| 陵川县| 祁连县| 广宁县| 樟树市| 饶阳县| 佛教| 哈巴河县| 铜陵市| 民和| 乐山市| 榆树市| 双桥区| 邯郸县| 射洪县| 顺平县| 高唐县| 贵阳市| 金塔县| 永年县| 新巴尔虎右旗| 九寨沟县| 尼勒克县| 建昌县|