新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于DM9000A的DSP以太網接口設計與實現

        基于DM9000A的DSP以太網接口設計與實現

        作者: 時間:2014-03-12 來源:網絡 收藏
        nt-family: 宋體, Georgia, verdana, serif; background-color: rgb(255, 255, 255); ">初始化流程如圖4所示。

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

        完成上述初始化步驟后,就處于正常工作狀態,可以收發數據包。若有異常發生,就需要重復上述步驟,重啟以使芯片恢復到正常狀態。

        3.1.2 數據幀發送

        內部有16 KB的SRAM作為接收/發送數據的緩存區,其中前3 KB的空間,地址從0x0000H~0x0BFFH,用來緩存需要發送的數據。

        數據發送的具體步驟如下:

        (1)利用寫操作寄存器MWCMD(F8H),將需要發送的數據幀寫入DM9000A的發送緩存區。

        (2)將數據幀長度寫入長度寄存器TXPLL(FCH)和TXPLH(FDH)。

        (3)設置發送控制寄存器TCR(02H),TXREQ=1,數據幀開始發送。

        (4)檢查網絡狀態寄存器NSR(01H)的TX2END和TX1END位,判斷此幀數據是否發送完。

        數據幀發送流程圖如圖5所示。

        3.1.3 數據幀接收

        當DM9000A數據接收使能后,DM9000A就會自動接收數據。DM9000A接收到的數據先保存在地址從0x0C00~0x3FFF的13 KB內部SRAM緩存空間中,它是一個環形結構。

        利用寄存器MRCMDX(FOH)和寄存器MRCMD(F2H)可獲取緩存中的數據幀信息。接收到的數據幀格式如圖6所示。

        其中第1個字節是接收數據標志字節,表征接收到數據幀是否有效。第2個字節是接收數據幀的狀態字節,其中的內容與接收狀態寄存器RSR中的內容相同,可以用來判斷所接收的數據幀是否正常。第3,4個字節是接收到數據的長度字節,其中低位在前,高位在后。從第5個字節開始的數據才是真正數據幀內容。

        數據接收過程如下:

        (1)檢查中斷狀態寄存器:ISR(FEH),若PRS位為1,說明有新的數據幀接收,寫1清除PRS位;若為0,說明無數據,直接返回。

        (2)讀取第1個字節,即接收數據標志字節。如果該字節為01,則表示接收下來的是有效數據幀;如果該位為00則表示沒有數據到達,或數據已經接收完成;如果既不是01又不是00,則認為有異常發生,這時就要將DM9000A芯片重啟以使芯片恢復到正常狀態。

        (3)讀取第2個字節,即接收狀態字節。根據接收狀態字節判斷所接收的數據幀是否正常。

        (4)讀取第3,4字節,即數據幀長度字節。

        (5)讀取真正的數據幀內容。

        (6)根據獲取的長度信息,判斷是否讀完一幀。如果讀完,接著讀下一幀,直到遇到首字節是00H的幀,說明接收數據已讀完。

        數據幀接收流程如圖7所示。

        3.2 上層通信協議程序設計

        TCP/IP協議模型可以分為四個層次,從下到上依次為:鏈路層、網絡層、傳輸層和應用層。每一層都有不同的功能,低一層為高一層提供服務。

        標準的TCP/IP協議棧對處理器的計算、存儲要求比較高,然而,系統的計算資源和存儲資源通常是非常有限,在中實現標準的TCP/IP協議棧將占用大量系統資源,不利于其他方面的應用,因此必須對它進行簡化并優化,盡可能做到代碼精簡,降低存儲開銷。本系統設計和實現了TCP/IP通信協議的必要部分,包括:ARP,IP,ICMP,TCP,UDP等協議。

        ARP(地址解析協議)為IP地址到對應的硬件地址之間提供動態映射。IP協議是TCP/IP協議的核

        雙絞線傳輸器相關文章:雙絞線傳輸器原理


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 扶沟县| 沙湾县| 攀枝花市| 大荔县| 彰武县| 镇宁| 微山县| 杂多县| 三台县| 云和县| 东源县| 冕宁县| 五峰| 银川市| 利津县| 将乐县| 海门市| 十堰市| 张家界市| 银川市| 攀枝花市| 阳春市| 华安县| 睢宁县| 德惠市| 高台县| 宜兰县| 喀喇| 华坪县| 孝昌县| 辛集市| 西贡区| 宜宾县| 玉山县| 蛟河市| 台南县| 乌兰察布市| 广元市| 云龙县| 疏附县| 平陆县|