<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 嵌入式系統以太網(wǎng)接口的設計

嵌入式系統以太網(wǎng)接口的設計

作者: 時(shí)間:2014-12-02 來(lái)源:網(wǎng)絡(luò ) 收藏

  3軟件設計

本文引用地址:http://dyxdggzs.com/article/266249.htm

  的編程包括初始化、發(fā)送、接收三部分功能。在接收和發(fā)送數據以前要進(jìn)行必需的檢測和初始化。的初始化主要是設置所需的寄存器狀態(tài),建立網(wǎng)絡(luò )接口收發(fā)的條件。

  網(wǎng)絡(luò )接口通過(guò)2個(gè)DMA操作來(lái)完成數據的接收和發(fā)送。本地DMA完成DMA9008與其內部FIFO隊列之間的數據傳送,遠程DMA完成與CPU之間的數據傳送。

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

  3.1 DM9008的初始化

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

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

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

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

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

  (5)讀出網(wǎng)絡(luò )的物理地址:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  (16)設置CR為22H,芯片進(jìn)入工作狀態(tài)。

  至此,DM9008的初始化過(guò)程完成,DM9008處于接收狀態(tài)。只要網(wǎng)絡(luò )上有可以接收的數據包,DM9008自動(dòng)將數據存入接收緩沖區并在收完后向CPU發(fā)中斷申請。

  3.2接收數據

  DM9008收到一個(gè)完整的數據包后,向CPU發(fā)出中斷請求,CPU響應DM9008的中斷申請后,進(jìn)入中斷服務(wù)程序并開(kāi)始接收數據,具體過(guò)程如下:

  (1)讀出中斷狀態(tài)寄存器ISR,并寫(xiě)回該寄存器。

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

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

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

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

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

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

  (8)根據接收狀態(tài)判斷數據包是否接收正確,如果接收正確,啟動(dòng)遠程DMA,收取該數據包并進(jìn)行處理。

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

雙絞線(xiàn)傳輸器相關(guān)文章:雙絞線(xiàn)傳輸器原理


關(guān)鍵詞: 以太網(wǎng) 8051 DM9008

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>