網絡控制器選用DAVICOM公司的DM9000快速以太網控制處理器,合成了MAC,PHY,MMU。該處理器配備有标準10M/100M自适應,16K大容量的FIFO,4路多功能GPIO,掉電,全雙工工作等功能。實體層支援以太網接口協定。由于資料有時是以猝發形式收到的,是以,DM9000還內建有接收緩沖區,以便在接收到資料時能把資料放到這個緩沖區中,然後由資料鍊路層直接從該緩沖區裡取走資料。鍊路層通常包括作業系統中的裝置驅動程式和計算機中對應的網絡接口卡,它們一起處理與電纜的實體接口細節資料,它的緩沖區可用來暫時存儲要發送或接收的幀。
DM9000網卡工作原理:
·DM_NCR(0x00)
網絡控制寄存器。網絡控制寄存器用于對DM9000工作狀态的控制,可以使DM9000複位。
·DM_NSR(0x01)
網絡狀态寄存器,從該寄存器可以獲知DM9000目前的工作狀态,例如是否處于連接配接狀态,發送資料是否完畢,是否處于睡眠狀态等。
·DM_TCR(0x02)
發送控制寄存器,可以控制發送使能。
·DM_RCR(0x05)
接收控制寄存器,可以控制接收使能。
·DM_RST (0x06)
接收狀态寄存器,當有接收中斷到來時,可以通過讀取該寄存器,進一步了解目前DM9000網卡的接收狀态,進而确定目前接受的這一幀資料應該如何處理。
·DM_FCR(0x0A)
接收、發送流量控制寄存器。
·DM_TXPLL(0xFC)
傳送資料長度低位元組寄存器,在發送資料時,該寄存器存放發送的資料的長度的低位元組。
·DM_TXPLH(0xFD)
傳送資料長度高位元組寄存器,在發送資料時,該寄存器存放發送的資料的長度的高位元組。
·DM_ISR(0xFE)
中斷狀态寄存器,當一個中斷到來時,該寄存器存放着中斷類型。DM9000中斷處理函數通過讀取該寄存器,得到目前中斷資訊,進而能夠正确調用相應的中斷處理子程式。讀取該中斷狀态寄存器之後,還需要将讀取結果存放回該寄存器,也就是需要清楚中斷狀态,否則将無法再次響應中斷。
·DM_IMR (0xFF)
中斷掩碼寄存器,該寄存器存放目前DM9000使能的中斷類型。在該系統中,我們隻讓接收中斷使能。利用該寄存器,我們可以靈活地使得DM9000屏蔽中斷,或者開啟中斷,例如在發送資料開始時,可以屏蔽中斷,在發送結束後,再開啟中斷,這樣可以使得DM9000工作的穩定性大大提高。
DM9000(A)是一個全內建、功能強大、成本效益高的快速以太網MAC控制器,它帶有一個通用處理器接口、EEPROM接口、10/100 PHY和16KB的SRAM(13KB作為接收FIFO,3KB作為發送FIFO)。它采用單電源供電,可相容3.3V、5V的IO接口電平。
DM9000(A)同樣支援MII(Media Independent Interface 媒體無關)接口,連接配接到HPNA(Home Phone-line Networking Alliance 家用電話網絡聯盟)裝置上或其它支援MII的裝置。
DM9000(A)包含一系列可被通路的控制狀态寄存器,這些寄存器是位元組對齊的,他們在硬體或軟體複位時被設定成初始值。
以下為DM9000的寄存器功能詳解:
NCR (00H):網絡控制寄存器(Network Control Register )
7:EXT_PHY:1選擇外部PHY,0選擇内部PHY,不受軟體複位影響。
6:WAKEEN:事件喚醒使能,1使能,0禁止并清除事件喚醒狀态,不受軟體複位影響。
5:保留。
4:FCOL:1強制沖突模式,用于使用者測試。
3:FDX:全雙工模式。内部PHY模式下隻讀,外部PHY下可讀寫。
2-1:LBK:回環模式(Loopback)00通常,01MAC内部回環,10内部PHY 100M模式數字回環,11保留。
0:RST:1軟體複位,10us後自動清零。
NSR (01H):網絡狀态寄存器(Network Status Register )
7:SPEED:媒介速度,在内部PHY模式下,0為100Mbps,1為10Mbps。當LINKST=0時,此位不用。
6:LINKST:連接配接狀态,在内部PHY模式下,0為連接配接失敗,1為已連接配接。
5:WAKEST:喚醒事件狀态。讀取或寫1将清零該位。不受軟體複位影響。
4:保留。
3:TX2END:TX(發送)資料包2完成标志,讀取或寫1将清零該位。資料包指針2傳輸完成。
2:TX2END:TX(發送)資料包1完成标志,讀取或寫1将清零該位。資料包指針1傳輸完成。
1:RXOV:RX(接收)FIFO(先進先出緩存)溢出标志。
0:保留。
TCR(02H):發送控制寄存器(TX Control Register)
7:保留。
6:TJDIS:Jabber傳輸使能。1使能Jabber傳輸定時器(2048位元組),0禁止。
注釋:Jabber是一個有CRC錯誤的長幀(大于1518byte而小于6000byte)或是資料包重組錯誤。原因:它可能導緻網絡丢包。多是由于 作站有硬體或軟體錯誤。
5:EXCECM:額外沖突模式控制。0當額外的沖突計數多于15則終止本次資料包,1始終嘗試發發送本次資料包。
4:PAD_DIS2:禁止為資料包指針2添加PAD。
3:CRC_DIS2:禁止為資料包指針2添加CRC校驗。
2:PAD_DIS2:禁止為資料包指針1添加PAD。
1:CRC_DIS2:禁止為資料包指針1添加CRC校驗。
0:TXREQ:TX(發送)請求。發送完成後自動清零該位。
TSR_I(03H):資料包指針1的發送狀态寄存器1(TX Status Register I)
7:TJTO:Jabber傳輸逾時。該位置位表示由于多于2048位元組資料被傳輸而導緻資料幀被截掉。
6:LC:載波信号丢失。該位置位表示在幀傳輸時發生紅載波信号丢失。在内部回環模式下該位無效。
5:NC:無載波信号。該位置位表示在幀傳輸時無載波信号。在内部回環模式下該位無效。
4:LC:沖突延遲。該位置位表示在64位元組的沖突視窗後又發生沖突。
3:COL:資料包沖突。該位置位表示傳輸過程中發生沖突。
2:EC:額外沖突。該位置位表示由于發生了第16次沖突(即額外沖突)後,傳送被終止。
1-0:保留。
TSR_II(04H):資料包指針2的發送狀态寄存器2(TX Status Register II)
同TSR_I
略。
RCR(05H):接收控制寄存器(RX Control Register )
7:保留。
6:WTDIS:看門狗定時器禁止。1禁止,0使能。
5:DIS_LONG:丢棄長資料包。1為丢棄資料包長度超過1522位元組的資料包。
4:DIS_CRC:丢棄CRC校驗錯誤的資料包。
3:ALL:忽略所有多點傳送。
2:RUNT:忽略不完整的資料包。
1:PRMSC:混雜模式(Promiscuous Mode)
0:RXEN:接收使能。
RSR(06H):接收狀态寄存器(RX Status Register )
7:RF:不完整資料幀。該位置位表示接收到小于64位元組的幀。
6:MF:多點傳送幀。該位置位表示接收到幀包含多點傳送位址。
5:LCS:沖突延遲。該位置位表示在幀接收過程中發生沖突延遲。
4:RWTO:接收看門狗定時溢出。該位置位表示接收到大于2048位元組資料幀。
3:PLE:實體層錯誤。該位置位表示在幀接收過程中發生實體層錯誤。
2:AE:對齊錯誤(Alignment)。該位置位表示接收到的幀結尾處不是位元組對齊,即不是以位元組為邊界對齊。
1:CE:CRC校驗錯誤。該位置位表示接收到的幀CRC校驗錯誤。
0:FOE:接收FIFO緩存溢出。該位置位表示在幀接收時發生FIFO溢出。
ROCR(07H):接收溢出計數寄存器(Receive Overflow Counter Register)
7:RXFU:接收溢出計數器溢出。該位置位表示ROC(接收溢出計數器)發生溢出。
6-0:ROC:接收溢出計數器。該計數器為靜态計數器,訓示FIFO溢出後,目前接收溢出包的個數。
BPTR(08H):背壓門限寄存器(Back Pressure Threshold Register)
7-4:BPHW:背壓門限最高值。當接收SRAM空閑空間低于該門限值,則MAC将産生一個擁擠狀态。1=1K位元組。預設值為3H,即3K位元組空閑空間。不要超過SRAM大小。
3-0:JPT:擁擠狀态時間。預設為200us。0000為5us,0001為10us,0010為15us,0011為25us,0100為50us,0101為100us,0110為150us,0111為200us,1000為250us,1001為300us,1010為350us,1011為400us,1100為450us,1101為500us,1110為550us,1111為600us。
FCTR(09H):溢出控制門限寄存器(Flow Control Threshold Register)
7-4:HWOT:接收FIFO緩存溢出門限最高值。當接收SRAM空閑空間小于該門限值,則發送一個暫停時間(pause_time)為FFFFH的暫停包。若該值為0,則無接收空閑空間。1=1K位元組。預設值為3H,即3K位元組空閑空間。不要超過SRAM大小。
3-0:LWOT:接收FIFO緩存溢出門限最低值。當接收SRAM空閑空間大于該門限值,則發送一個暫停時間(pause_time)為0000H的暫停包。當溢出門限最高值的暫停包發送之後,溢出門限最低值的暫停包才有效。預設值為8K位元組。不要超過SRAM大小。
RTFCR(0AH):接收/發送溢出控制寄存器(RX/TX Flow Control Register)
7:TXP0:1發送暫停包。發送完成後自動清零,并設定TX暫停包時間為0000H。
6:TXPF:1發送暫停包。發送完成後自動清零,并設定TX暫停包時間為FFFFH。
5:TXPEN:強制發送暫停包使能。按溢出門限最高值使能發送暫停包。
4:BKPA:背壓模式。該模式僅在半雙工模式下有效。當接收SRAM超過BPHW并且接收新資料包時,産生一個擁擠狀态。
3:BKPM:背壓模式。該模式僅在半雙工模式下有效。當接收SRAM超過BPHW并資料包DA比對時,産生一個擁擠狀态。
2:RXPS:接收暫停包狀态。隻讀清零允許。
1:RXPCS:接收暫停包目前狀态。
0:FLCE:溢出控制使能。1設定使能溢出控制模式。
EPCR/PHY_CR(0BH):EEPROM和PHY控制寄存器(EEPROM & PHY Control Register)
7-6:保留。
5:REEP:重新加載EEPROM。驅動程式需要在該操作完成後清零該位。
4:WEP:EEPROM寫使能。
3:EPOS:EEPROM或PHY操作選擇位。0選擇EEPROM,1選擇PHY。
2:ERPRR:EEPROM讀,或PHY寄存器讀指令。驅動程式需要在該操作完成後清零該位。
1:ERPRW:EEPROM寫,或PHY寄存器寫指令。驅動程式需要在該操作完成後清零該位。
0:ERRE:EEPROM或PHY的通路狀态。1表示EEPROM或PHY正在被通路。
EPAR/PHY_AR(0CH):EEPROM或PHY位址寄存器(EEPROM & PHY Address Register)
7-6:PHY_ADR:PHY位址的低兩位(bit1,bit0),而PHY位址的bit[4:2]強制為000。如果要選擇内部PHY,那麼此2位強制為01,實際應用中要強制為01。
5-0:EROA:EEPROM字位址或PHY寄存器位址。
EPDRL/PHY_DRL(0DH):EEPROM或PHY資料寄存器低半位元組(EEPROM & PHY Low Byte Data Register)
7-0:EE_PHY_L
EPDRL/PHY_DRH(0EH):EEPROM或PHY資料寄存器高半位元組(EEPROM & PHY High Byte Data Register)
7-0:EE_PHY_H
WUCR(0FH):喚醒控制寄存器(Wake Up Control Register)
7-6:保留。
5:LINKEN:1使能“連接配接狀态改變”喚醒事件。該位不受軟體複位影響。
4:SAMPLEEN:1使能“Sample幀”喚醒事件。該位不受軟體複位影響。
3:MAGICEN:1使能“Magic Packet”喚醒事件。該位不受軟體複位影響。
2:LINKST:1表示發生了連接配接改變事件和連接配接狀态改變事件。該位不受軟體複位影響。
1:SAMPLEST:1表示接收到“Sample幀”和發生了“Sample幀”事件。該位不受軟體複位影響。
0:MAGICST:1表示接收到“Magic Packet”和發生了“Magic Packet”事件。該位不受軟體複位影響。
PAR(10H -- 15H):實體位址(MAC)寄存器(Physical Address Register)
7-0:PAD0 -- PAD5:實體位址位元組0 -- 位元組5(10H -- 15H)。用來儲存6個位元組的MAC位址。
MAR(16H -- 1DH):多點發送位址寄存器(Multicast Address Register )
7-0:MAB0 -- MAB7:多點發送位址位元組0 -- 位元組7(16H --1DH)。
GPCR(1FH):GPIO控制寄存器(General Purpose Control Register)
7-4:保留。
3-0:GEP_CNTL:GPIO控制。定義GPIO的輸入輸出方向。1為輸出,0為輸入。GPIO0預設為輸出做POWER_DOWN功能。其它預設為輸入。是以預設值為0001。
GPR(1FH):GPIO寄存器(General Purpose Register)
7-4:保留。
3-1:GEPIO3-1:GPIO為輸出時,相關位控制對應GPIO端口狀态,GPIO為輸入時,相關位反映對應GPIO端口狀态。(類似于單片機對IO端口的控制)。
0:GEPIO0:功能同上。該位預設為輸出1到POWER_DEWN内部PHY。若希望啟用PHY,則驅動程式需要通過寫“0”将PWER_DOWN信号清零。該位預設值可通過EEPROM程式設計得到。參考EEPROM相關描述。
TRPAL(22H):發送SRAM讀指針位址低半位元組(TX SRAM Read Pointer Address Low Byte)
7-0:TRPAL
TRPAH(23H):發送SRAM讀指針位址高半位元組(TX SRAM Read Pointer Address High Byte )
7-0:TRPAH
RWPAL(24H):接收SRAM指針位址低半位元組(RX SRAM Write Pointer Address Low Byte)
7-0:RWPAL
RWPAH(25H):接收SRAM指針位址高半位元組(RX SRAM Write Pointer Address High Byte)
7-0:RWPAH
VID(28H -- 29H):生産廠家序列号(Vendor ID)
7-0:VIDL:低半位元組(28H),隻讀,預設46H。
7-0:VIDH:高半位元組(29H),隻讀,預設0AH。
PID(2AH --2BH):産品序列号(Product ID)
7-0:PIDL:低半位元組(2AH),隻讀,預設00H。
7-0:PIDH:高半位元組(2BH),隻讀,預設90H。
CHIPR(2CH):晶片修訂版本(CHIP Revision)
7-0:PIDH:隻讀,預設00H。
TCR2(2DH):傳輸控制寄存器2(TX Control Register 2)
7:LED:LED模式。1設定LED引腳為模式1,0設定LED引腳為模式0或根據EEPROM的設定。
6:RLCP:1重新發送有沖突延遲的資料包。
5:DTU:1禁止重新發送“underruned”資料包。
4:ONEPM:單包模式。1發送完成前發送一個資料包的指令能被執行,0發送完成前發送兩個以上資料包的指令能被執行。
3-0:IFGS:幀間間隔設定。0XXX為96bit,1000為64bit,1001為72bit,1010為80bit,1011為88bit,1100為96bit,1101為104bit,1110為112bit,1111為120bit。
OCR(2EH):操作測試控制寄存器(Operation Control Register)
7-6:SCC:設定内部系統時鐘。00為50MHz,01為20MHz,10為100MHz,11保留。
5:保留。
4:SOE:内部SRAM輸出使能始終開啟。
3:SCS:内部SRAM片選始終開啟。
2-0:PHYOP:為測試用内部PHY操作模式。
SMCR(2FH):特殊模式控制寄存器(Special Mode Control Register)
7:SM_EN:特殊模式使能。
6-3:保留。
2:FLC:強制沖突延遲。
1:FB1:強制最長“Back-off”時間。
0:FB0:強制最短“Back-off”時間。
ETXCSR(30H):傳輸前(Early)控制、狀态寄存器(Early Transmit Control/Status Register)
7:ETE:傳輸前使能。
6:ETS2:傳輸前狀态2。
5:ETS1:傳輸前狀态1。
4-2:保留。
1-0:ETT:傳輸前門限。當寫到發送FIFO緩存裡的資料位元組數達到該門限,則開始傳輸。00為12.5%,01為25%,10為50%,11為75%。
TCSCR(31H):傳輸校驗和控制寄存器(Transmit Check Sum Control Register)
7-3:保留。
2:UDPCSE:UDP校驗和産生使能。
1:TCPCSE:TCP檢驗和産生使能。
0:IPCSE:IP校驗和産生使能。
RCSCSR(32H):接收校驗和控制狀态寄存器(Receive Check Sum Control Status Register )
7:UDPS:UDP校驗和狀态。1表示UDP資料包校驗失敗。
6:TCPS:TCP校驗和狀态。1表示TCP資料包校驗失敗。
5:IPS:IP校驗和狀态。1表示IP資料包校驗失敗。
4:UDPP:1表示UDP資料包。
3:TCPP:1表示TCP資料包。
2:IPP:1表示IP資料包。
1:RCSEN:接收檢驗和檢驗使能。1使能校驗和校驗,将校驗和狀态位(bit7-2)存儲到資料包的各自的封包頭的第一個位元組。
0:DCSE:丢棄校驗和錯誤的資料包。1使能丢棄校驗和錯誤的資料包,若IP/TCP/UDP的校驗和域錯誤,則丢棄該資料包。
MRCMDX(F0H):存儲器位址不變的讀資料指令(Memory Data Pre-Fetch Read Command Without Address Increment Register)
7-0:MRCMDX:從接收SRAM中讀資料,讀取之後,指向内部SRAM的讀指針不變。
MRCMDX1(F1H):存儲器讀位址不變的讀資料指令(Memory Data Read Command With Address Increment Register
同上。
MRCMD(F2H):存儲器讀位址自動增加的讀資料指令(Memory Data Read Command With Address Increment Register)
7-0:MRCMD:從接收SRAM中讀資料,讀取之後,指向内部SRAM的讀指針自動增加1、2或4,根據處理器的操作模式而定(8位、16位或32位)。
MRRL(F4H):存儲器讀位址寄存器低半位元組(Memory Data Read_ address Register Low Byte)
7-0:MDRAL
MRRH(F5H):存儲器讀位址寄存器高半位元組Memory Data Read_ address Register High Byte
7-0:MDRAH:若IMR的bit7=1,則該寄存器設定為0CH。
MWCMDX(F6H):存儲器讀位址不變的讀資料指令(Memory Data Write Command Without Address Increment Register)
7-0:MWCMDX:寫資料到發送SRAM中,之後指向内部SRAM的寫位址指針不變。
MWCMD(F8H):存儲器讀位址自動增加的讀資料指令(Memory Data Write Command With Address Increment Register)
7-0:MWCMD:寫資料到發送SRAM中,之後指向内部SRAM的讀指針自動增加1、2或4,根據處理器的操作模式而定(8位、16位或32位)。
MWRL(FAH):存儲器寫位址寄存器低半位元組(Memory Data Write_ address Register Low Byte)
7-0:MDRAL
MWRH(FBH):存儲器寫位址寄存器高半位元組(Memory Data Write _ address Register High Byte)
7-0:MDRAH
TXPLL(FCH):發送資料包長度寄存器低半位元組(TX Packet Length Low Byte Register)
7-0:TXPLL
TXPLH(FDH):發送資料包長度寄存器高半位元組(TX Packet Length High Byte Register)
7-0:TXPLH
ISR(FEH):終端狀态寄存器(Interrupt Status Register)
7-6:IOMODE:處理器模式。00為16位模式,01為32位模式,10為8位模式,00保留。
5:LNKCHG:連接配接狀态改變。
4:UDRUN:傳輸“Underrun”
3:ROOS:接收溢出計數器溢出。
2:ROS:接收溢出。
1:PTS:資料包傳輸。
0:PRS:資料包接收。
ISR寄存器各狀态寫1清除
IMR(FFH):終端屏蔽寄存器(Interrupt Mask Register)
7:PAR:1使能指針自動跳回。當SRAM的讀、寫指針超過SRAM的大小時,指針自動跳回起始位置。需要驅動程式設定該位,若設定則REG_F5(MDRAH)将自動位0CH。
6:保留。
5:LNKCHGI:1使能連接配接狀态改變中斷。
4:UDRUNI:1使能傳輸“Underrun”中斷。
3:ROOI:1使能接收溢出計數器溢出中斷。
2:ROI:1使能接收溢出中斷。
1:PTI:1使能資料包傳輸終端。
0:PRI:1使能資料包接收中斷。
注釋:其中“藍色字型”表示在DM9000初始化中要用到的寄存器。
通路以上寄存器的方法是通過總線驅動的方式,即通過對IOR、IOW、AEN、CMD以及SD0--SD15等相關引腳的操作來實作。其中CMD引腳為高電平時為寫寄存器位址,為低電平時為寫資料到指定位址的寄存器中。詳細過程請參考資料手冊中“讀寫時序”部分。
在DM9000(A)中,還有一些PHY寄存器,也稱之為媒體無關接口MII寄存器,需要我們去通路。這些寄存器是字對齊的,即16位寬。下面列出三個常用的PHY寄存器。
BMCR(00H):基本模式控制寄存器(Basic Mode Control Register)
15:reset:1PHY軟體複位,0正常操作。複位操作使PHY寄存器的值為預設值。複位操作完成後,該位自動清零。
14:loopback:1Loop-back使能,0正常操作。
13:speed selection:1為100Mbps,0為10Mbps。連接配接速度即可以根據該位選擇,也可以根據第12位,即自動協商選擇。當自動協商使能時,即第12位為1,該位将會傳回自動協商後的速度值。
12:auto-negotiation enable:1自動協商使能。使得第13位和第8位的值反應自動協商後的狀态。
11:power down:POWER_DOWN模式。1為POWER_DOWN,0為正常操作。在POWER_DOWN狀态下,PHY應當響應操作處理。在轉變到POWER_DOWN狀态或已經運作在POWER_DOWN狀态下時,PHY不會在MII上産生虛假信号。
10:isolate:1除了一些操作外,PHY将從MII中隔離,0為正常操作。當該位置位,PHY不會響應TXD[3:0],TX_EN和TX_ER輸入,并且在TX_CLK,RX_CLK,RX_DV,RX_ER,RXD[3:0],COL和CRS輸出上為高阻态。當PHY被隔離,則它将響應操作處理。
9:restart auto-aegotiation:1重新初始化自動協商協定,0為正常操作。當第12位禁止該功能,則該位無效。初始化後該位自動清零。
8:duplex mode:1為全雙工操作,0為正常操作。當第12位被禁止(置0)時該位被置位,若第12位被置位,則該位反應自動協商後的狀态。
7:collision test:1為沖突測試使能,0為正常操作。若該位置位,聲明TX_EN将引起COL信号被聲明。
6-0:保留。
ANAR(04H):自動協商廣告寄存器(Auto-negotiation Advertisement Register)
15:NP:0表示無有效的下一頁,1表示下一頁有效。PHY沒有下一頁,是以該位始終為0。
14:ACK:1表示連接配接對象資料接收認證,0表示無認證。PHY的自動協商狀态機會自動控制該位。
13:RF:1表示本地裝置處于錯誤狀态,0為無錯誤檢驗。
12-11:保留。
10:FCS:1表示處理器支援溢出控制能力,0表示不支援。
9:T4:1表示本地裝置支援100BASE-T4,0表示不支援。PHY不支援100BASE-T4,是以該位永遠是0。
8:TX_FDX:1為本地裝置支援100BASE-TX全雙工模式,0為不支援。
7:TX_HDX:1為本地裝置支援100BASE-TX,0為不支援。
6:10_FDX:1為本地裝置支援100BASE-T全雙工模式,0為不支援。
5:10_HDX:1為本地裝置支援100BASE-T,0為不支援。
4-0:selecter:協定選擇位,00001為預設值,表示裝置支援IEEE802.3CSMA/CD,不用修改。
DSCR(16H):DAVICOM詳細配置寄存器(DAVICOM Specified Configuration Register)
15:BP_4B5B:1為繞過4B5B編碼和5B4B解碼功能,0為正草4B5B和5B4B功能。
14:BP_SCR:1為繞過擾頻和解擾功能,0為正常操作。
13:BP_ALIGN:1為繞過接收時的解擾、符号隊列、解碼功能和發送時的符号編碼、擾頻功能,0正常操作。
12:BP_ADPOK:1為強制信号探測功能使能,0為正常操作。該位僅為調試使用
11:保留。
10:TX:1表示100BASE-TX操作,0保留。
9-8:保留。
7:F_LINK_100:0為正常100Mbps,1為強制100Mbps良好連接配接狀态。
6-5:保留,強制為0.
4:RPDCTR-EN:1為使能自動簡化POWER_DOWN,0為禁止。
3:SMRST:1為重新初始化PHY的狀态機,初始化後該位自動清零。
2:MFPSC:1表示MII幀引導抑制開啟,0表示關閉。
1:SLEEP:睡眠模式。該位置位将導緻PHY進入睡眠模式,通過将該位清零喚醒睡眠模式,其中配置将還原為睡眠模式之前的狀态,但狀态機将重新初始化。
0:RLOUT:該位置位将使接收到的資料放入發送通道中。
通路PHY寄存器的方法是:
(1)寄存器位址寫到EPAR/PHY_AR(0CH)寄存器中,注意将寄存器位址的第6位置1(位址與0x40或運算即可),以表明寫的是PHY位址,而不是EEPROM位址。
(2)将資料高位元組寫到PHY_DRH(0EH)寄存器中。
(3)将資料低位元組寫到PHY_DRL(0DH)寄存器中。
(4)發送PHY指令(0x0a)到EPCR/PHY_CR(0BH)寄存器中。
(5)延時5us,發送指令0x08到EPCR/PHY_CR(0BH)寄存器中,清除PHY寫操作。
以上為DM9000(A)常用寄存器功能的詳細介紹,通過對這些寄存器的操作通路,我們便可以實作對DM9000的初始化、資料發送、接收等相關操作。而要實作ARP、IP、TCP等功能,則需要對相關協定的了解,由編寫相關協定或移植協定棧來實作。