新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 嵌入式系統以太網接口的設計

        嵌入式系統以太網接口的設計

        作者: 時間:2014-12-02 來源:網絡 收藏

          3軟件設計

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

          的編程包括初始化、發送、接收三部分功能。在接收和發送數據以前要進行必需的檢測和初始化。的初始化主要是設置所需的寄存器狀態,建立網絡接口收發的條件。

          網絡接口通過2個DMA操作來完成數據的接收和發送。本地DMA完成DMA9008與其內部FIFO隊列之間的數據傳送,遠程DMA完成與CPU之間的數據傳送。

          DM9008可尋址的空間有32個,分別為00H~1FH.其中00H~0FH是寄存器區,00H~1FH.其中00H~0FH是寄存器區,00H作為命令寄存器,通過設置可選擇3個頁面,10H~17H為數據端口,18H~1FH為復位端口。

          3.1 DM9008的初始化

          DM9008的具體初始化過程如下(CPU對DM9008的尋址需要加上基地址,為了描述方便,省略掉基地址直接用DM9008的內部地址描述寄存器地址):

          (1)讀入1FH端口數據,再寫回該地址以啟動DM9008工作。

          (2)向命令寄存器CR(00H)寫入21H,選擇寄存器頁面0,并進行軟件復位。

          (3)設置數據結構寄存器DCR(0EH)為48H.

          (4)設置方式狀態寄存器TCR(0DH)為02H.

          (5)讀出網絡的物理地址:

          a.設置遠程DMA計數器RBCR1(0BH)、RBCR0(0AH)的值為000CH;

          b.設置遠程DMA地址RSAR1(09H)、RSAR0(08H)的值為0000H;

          c.設置命令寄存器CR(00H)為遠程DMA讀,即0AH;

          d.重復從數據端口(10H)讀6個字節,這6個字節即網絡物理地址;

          e.停止遠程DMA,設置CR為21H,RBCR1、RBCR0為0000H.

          (6)設置接收狀態寄存器RCR(0CH)為04H.

          (7)劃分緩沖區接收緩沖區和發送緩沖區,并建立接收緩沖環。將DM9008內部RAM地址為4000H~4BFFH設置為發送緩沖區,4C00H~7FFFH設置為接收緩沖區,即設置PSTART(01H)為4CH,PSTOP(02H)為80H,BNRY(03H)為4CH.

          (8)設置CR為61H,選擇頁面1.

          (9)設置網卡地址寄存器,把PAR0(01H)~PAR5(06H)設置為前面讀出的物理地址。

          (10)設置當前頁面寄存器CURR(07H)為PSTART+1,即4DH.

          (11)清除多址寄存器,即MAR0(08H)~MAR7(0FH)為00H.

          (12)設置CR為21H,選擇寄存器頁面0.

          (13)清除中斷狀態寄存器ISR(07H)為0FFH.

          (14)設置中斷屏蔽寄存器IMR(0FH)為3BH,即接收中斷允許、接收錯誤中斷允許、發送錯誤中斷允許、溢出中斷允許、計數器溢出中斷允許。

          (15)設置發送設置寄存器TCR(0DH)為00H.

          (16)設置CR為22H,芯片進入工作狀態。

          至此,DM9008的初始化過程完成,DM9008處于接收狀態。只要網絡上有可以接收的數據包,DM9008自動將數據存入接收緩沖區并在收完后向CPU發中斷申請。

          3.2接收數據

          DM9008收到一個完整的數據包后,向CPU發出中斷請求,CPU響應DM9008的中斷申請后,進入中斷服務程序并開始接收數據,具體過程如下:

          (1)讀出中斷狀態寄存器ISR,并寫回該寄存器。

          (2)判斷是否數據接收中斷,如果不是,不執行以下步驟。

          (3)設置CR為22H,選擇頁面0.

          (4)設置遠程DMA地址寄存器RSAR1、RSAR0為接收地址指針,該指針高位字節初始值位PSTART+1,低位字節為0.

          (5)設置遠程DMA計數器RBCR1、RBCR0為0004H;

          (6)設置CR為遠程讀0AH,讀數據端口,讀出4個字節,這4個字節第1字節表示接收狀態,第2個字節為下一包開始地址指針,第3~4個字節為本數據包的長度(高位字節在前)。

          (7)設置CR為22H,遠程DMA完成。

          (8)根據接收狀態判斷數據包是否接收正確,如果接收正確,啟動遠程DMA,收取該數據包并進行處理。

          (9)結束遠程DMA,設置下一次接收數據指針和接收邊界指針。

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


        關鍵詞: 以太網 8051 DM9008

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 天长市| 从化市| 乐亭县| 保亭| 留坝县| 华容县| 黎平县| 锡林浩特市| 绥棱县| 百色市| 台山市| 蒙山县| 济源市| 贞丰县| 长宁县| 通渭县| 景泰县| 古浪县| 林芝县| 江山市| 长海县| 泾源县| 泸州市| 武宁县| 阳曲县| 昂仁县| 阜宁县| 青海省| 安庆市| 旬邑县| 曲阳县| 昌邑市| 福贡县| 太谷县| 嵊泗县| 宜阳县| 长寿区| 平果县| 丰都县| 汕头市| 凤凰县|