单芯片快速以太 MAC控制器DM9000介绍续

DM9000内部寄存器

      DM9000包含一系列可被访问的控制状态寄存器,这些寄存器是字节对齐的,他们在硬件或软件复位时被设置成初始值。

      以下为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 内部PHY100M模式数字回环,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 引脚为高电平时为写寄存器地址,为低电平时为写数据到指定地址的寄存器中。详细过程请参考数据手册中“读写时序”部分。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年11月22日
下一篇 2022年11月22日

相关推荐