DM9000中文手册(详细)
4、元件介绍DM9000

下面我们来介绍一下TQ2440开发板上的另一个芯片—DM9000。
DM9000寄存器功能详细介绍总体看来DM9000是一个全集成、功能强、性价比高的快速以太网MAC层控制器。
它带有一个通用处理器接口、EEPROM接口、10/100 PHY和16KB的SRAM (其中13KB用来接收FIFO,3KB用来发送FIFO)。
电源模块采用的是单一电源,可以分别兼容3.3V和5V的IO接口电平。
DM9000支持MII(Media Independent Interface 介质无关)接口,可以连接到HPNA(Home Phone-line Networking Alliance)即家用电话网络联盟的设备上。
如果按照字面意思来理解,介质无关就是接口和介质没有关系。
在这里介质特指是指网络介质,也就是信号传输的媒介,如光纤、光缆、同轴电缆、各类双绞线等等。
介质无关接口作用是将不同类型的PHY与相同网络控制器(MAC)相连接。
MAC可以用同样的硬件接口与任意一个PHY相连接。
当然与之对应的是介质相关接口,用于PHY和传输介质的相连。
意味着对于不同的介质,相应的接口标准是不同的,故称之为“介质相关”。
DM9000以太网驱动器,内置一系列可被访问的控制状态寄存器。
这些字节对对齐的寄存器,在硬件或者软件复位时需要设置成初始值。
DM9000支持各类接口访问内部内部存储器,故而可以支持不同类型的处理器。
DM9000的物理层的协议接口支持使用10兆以下的第3类、4类、5类非屏蔽双绞线和100兆的第5类非屏蔽双绞线。
DM9000是一个集成度很高、功耗很低的高速网络控制器,用于各类开发板中。
它可以直接连接CPU部分,支持10M或100M的的快速以太网连接。
在DM9000内自带4K双字节的SRAM,其中13KB用来接收,另外3KB用来发送。
它支持8各类CPU,还有IEEE 802.3x全双工流量控制。
在整个流程中DM9000的操作很简单,故而用户可以轻易的移植系统里的端口驱动程序。
驱动网卡芯片DM9000调试过程及其具体的单片机程序

驱动网卡芯片D M9000调试过程及其具体的单片机程序(总25页)本页仅作为文档封面,使用时可以删除This document is for reference only-rar21year.March驱动网卡芯片DM9000A的过程及具体驱动程序一、电路连接DM9000E网卡芯片支持8位、16位、32位模式的处理器,通过芯片引脚EEDO(65脚)和WAKEUP(79脚)的复位值设置支持的处理器类型,如16位处理器只需将这两个引脚接低电平即可,其中WAKEUP内部有60K下拉电阻,因此可悬空该引脚,或作为网卡芯片唤醒输出用。
其它型号请参考相应的数据手册。
图1 DM9000引脚如图所示,对处理器驱动网卡芯片来说,我们比较关心的有以下几个引脚:IOR、IOW、AEN、CMD(SA2)、INT、RST,以及数据引脚SD0-SD15-SD31和地址引脚SA4-SA9。
其中,地址引脚配合AEN引脚来选通该网卡芯片,对于大多数的应用来说没有意义,因为在我们的应用中一般只用一个网卡芯片,而这些地址引脚主要用于在多网卡芯片环境下选择其中之一。
DM9000工作的默认基地址为0x300,这里我们按照默认地址选择,将SA9、SA8接高电平,SA7-DA4接低电平。
多网卡环境可以根据TXD0-TXD3配置SA4-SA7来选择不同的网卡,这里不做介绍,有兴趣的朋友请参考应用手册和数据手册。
数据引脚SD0-SD31则根据前面所讲的配置处理器模式与处理器的数据总线进行选择连接即可,没用到的引脚悬空。
那么,除了地址、数据引脚外,剩下的与处理器有关引脚对我们来说及其重要了,而与处理器无关的引脚,只需按照应用手册连接即可。
IOR和IOW是DM9000的读写选择引脚,低电平有效,即低电平时进行读(IOR)写(IOW)操作;AEN是芯片选通引脚,低电平有效,该引脚为低时才能进行读写操作;CMD的命令/数据切换引脚,低电平时读写命令操作,高电平时读写数据操作。
DM9000A中文手册完整版

DAVICOM Semiconductor, Inc.DM9000AEthernet Controllerwith General Processor InterfaceDATA SHEET(中文数据手册)PreliminaryVersion: DM9000A-DS-P03Apr. 21, 2005目录1. 概述 (5)2. 模块图 (5)3. 特性 (5)4. 引脚配置 (6)4.1(16位模式) (6)4.2(8位模式) (7)5. 引脚描述 (7)5.1处理器接口 (7)5.1.1 8位模式引脚 (8)5.2 EEPROM接口 (8)5.3时钟引脚 (9)5.4 LED接口 (9)5.5 10/100 PHY/Fiber (9)5.6其他 (10)5.7电源引脚 (10)5.8捆绑引脚列表(Strap pins table) (10)6. 控制和状态寄存器列表 (10)6.1网络控制寄存器(NCR) (12)6.2网络状态寄存器(NSR) (13)6.3发送控制寄存器(TCR) (13)6.4数据包1发送状态寄存器1(TSR I) (13)6.5数据包2发送状态寄存器2(TSR II) (14)6.6接收控制寄存器(RCR) (14)6.7接收状态寄存器(RSR) (15)6.8接收溢出计数寄存器(ROCR) (15)6.9背压阈值寄存器(BPTR) (15)6.10流控制阈值寄存器(FCTR) (16)6.11接收/发送流控制寄存器(RTFCR) (16)6.12 EEPROM与PHY控制寄存器(EPCR) (17)6.13 EEPROM与PHY地址寄存器(EPAR) (17)6.14 EEPROM与PHY数据寄存器(EPDRL/EPDRH) (18)6.15唤醒控制寄存器(WCR) (18)6.16物理地址(MAC)寄存器(PAR) (18)6.17多播地址寄存器(MAR) (19)6.18通用目的控制寄存器(GPCR) (19)6.19通用目的寄存器(GPR) (19)6.20 TX SRAM读指针地址寄存器(TRPAL/TRPAH) (20)6.21 RX SRAM写指针地址寄存器(RWPAL/RWPAH) (20)6.22厂家ID寄存器(VID) (20)6.23产品ID寄存器(PID) (20)6.24芯片版本寄存器(CHIPR) (20)6.25发送控制寄存器2(TCR2) (20)6.26操作测试控制寄存器(OCR) (21)6.27特殊模式控制寄存器(SMCR) (21)6.28即将发送控制/状态寄存器(ETXCSR) (22)6.29校验和控制寄存器(TCSCR) (22)6.30接收校验和控制状态寄存器(RCSCSR) (22)6.31内存数据预取读命令寄存器(地址不加1)(MRCMDX) (23)6.32内存数据读命令寄存器(地址不加1)(MRCMDX1) (23)6.33内存数据读命令寄存器(地址加1)(MRCMD) (23)6.34内存数据读地址寄存器(MRRL/ MRRH) (23)6.35内存数据写命令寄存器(地址不加1)(MWCMDX) (23)6.36内存数据写命令寄存器(地址加1)(MWCMD) (24)6.37内存数据写地址寄存器(MWRL/ MWRH) (24)6.38发送数据包长度寄存器(TXPLL/TXPLH) (24)6.39中断状态寄存器(ISR) (24)6.40中断屏蔽寄存器(IMR) (24)7.EEPROM格式 (25)8.PHY寄存器描述 (26)8.1基本模式控制寄存器(BMCR) (27)8.2基本模式状态寄存器(BMSR) (28)8.3 PHY ID标识符寄存器#1(PHYID1) (29)8.4 PHY ID标识符寄存器#2(PHYID1) (29)8.5自动协商通知寄存器(ANAR) (30)8.6自动协商连接对象寄存器(ANLPAR) (31)8.7自动协商扩展寄存器(ANER) (32)8.8 DAVICOM指定配置寄存器(DSCR) (33)8.9 DAVICOM指定配置和状态寄存器(DSCSR) (34)8.10 10BASE-T配置/状态(10BTCSR) (36)8.11掉电控制寄存器(PWDOR) (36)8.12指定配置寄存器(SCR) (37)9. 功能描述 (38)9.1 主机接口(HI) (38)9.2 直接内存访问控制(DMAC) (38)9.3 数据包发送(PT) (38)9.4 数据包接收(PR) (38)9.5 100Base-TX操作 (39)9.5.1 4B5B编码器 (39)9.5.2扰频器(Scrambler) (39)9.5.3 并--串转换 (39)9.5.4 NRZ码到NRZI码转换 (39)9.5.5 NRZI码到MLT-3码转换 (39)9.5.6 MLT-3驱动 (39)9.5.7 4B5B编码 (40)9.6 100Base-TX接收器 (40)9.6.1 信号检测 (41)9.6.2 自适应补偿 (41)9.6.3 MLT-3到NRZI解码 (41)9.6.4 时钟复原模块 (41)9.6.5 NRZI 到NRZ (41)9.6.6 串-并转换 (41)9.6.7 扰频器 (41)9.6.8 编码组对齐模块 (41)9.6.9 4B5B解码 (42)9.7 10Base-T操作 (42)9.8 冲突检测 (42)9.9 载波检测 (42)9.10 自动协商 (42)9.11 省电模式 (42)9.11.1 掉电模式 (43)9.11.2 降低发送损耗模式 (43)10 DC与AC电器特性 (43)10.1 最大绝对额定值 (43)10.1.1 工作条件 (43)10.2 DC电器特性(VDD=3.3V) (44)10.3 AC电器特性与时序 (44)10.3.1 TP接口 (44)10.3.2 晶振/振荡时钟 (44)10.3.3 I/O读时序 (45)10.3.4 I/O写时序 (45)10.3.5 EEPROM接口时序 (46)11应用说明 (46)11.1网络接口信号接线 (46)11.2 10Base-T/100Base-TX自动MDIX应用 (47)11.3 10Base-T/100Base-TX无自动MDIX变压器应用 (47)11.4电源退偶电容 (47)11.5地平面布局 (48)11.6电源平面分割 (49)11.7铁氧体磁珠选择指导 (50)11.8晶振选择指导 (50)12封装信息 (50)13订购信息 (52)DM9000A翻译人:许建华、刘煜、程志成2009-9-1版权:翻译版权归作者三方所有,不得随意传播。
DM9000网卡驱动

DM9000网卡驱动笔记网卡芯片为DM9000,ARM开发板用的是S3C6410,PC机装的是RED HAT ENTERPRISE LINUX 5.5.网卡接入soc上并没有接入到专门的驱动ic上,而是接入到了SROM的控制器上,所以需要配置的寄存器就需要配置SROM的寄存器。
S3C6410支持6页的SROM,DM9000的片选连接到了SROM控制的bank1,地址线连接的是addr2,也就是以后地址线上发出去的数据,第2位为0,数据为地址,第2位为1,数据为数据(这比较难理解)。
根据这样的地址数据的读写,操作DM9000中的寄存器,配置好网卡芯片,arm端封装一个arp请求包,在PC机上用tcpdump命令看能不能接收到如果能接受,网卡配置就算比较成功了附上源码:#include "up.h"#define INDEX (0x18000000)#define DATA (0x18000004)int (*printf)(char *, ...) = 0x57e11d4c;void (*udelay)(int ) = 0x57e00a98;struct ethhdr{unsigned char dest[6];unsigned char source[6];unsigned short type;};struct arphdr{unsigned short hw_type;unsigned short pro_type;unsigned char hw_len;unsigned char pro_len;unsigned short op;unsigned char src_mac[6];unsigned char src_ip[4];unsigned char dest_mac[6];unsigned char dest_ip[4];};void write_dm9000(unsigned char reg, unsigned short val); unsigned short read_dm9000(unsigned char reg);void init_dm9000();void send_data(unsigned char *buff, int len);int create_arp(unsigned char *buff);void *memset(void *s, int c, int len);unsigned short htons(unsigned short);int main(){/*set XM0bank1*/SROM_BW = (1 << 4);SROM_BC1 = (4 << 4) | (5 << 16);unsigned char buff[1024] = {0};int len = create_arp(buff);init_dm9000();send_data(buff, len);return 0;}void write_dm9000(unsigned char reg, unsigned short val) {*(unsigned char *)INDEX = reg;*(unsigned short *)DATA = val;}unsigned short read_dm9000(unsigned char reg) {*(unsigned char *)INDEX = reg;unsigned char c = *(unsigned char *)DATA;return c;}void init_dm9000(){//application notes//step 1: p22write_dm9000(0x1f, 0x00);//step 2:write_dm9000(0x00, 0x01);udelay(10);write_dm9000(0x00, 0x00);//step 3:write_dm9000(0x00, (1 << 3));//step 4:write_dm9000(0xff, 0xff);//step 5://step 6:write_dm9000(0x10, 0x11);write_dm9000(0x11, 0x22);write_dm9000(0x12, 0x33);write_dm9000(0x13, 0x44);write_dm9000(0x14, 0x55);write_dm9000(0x15, 0x66);//step 7://step 8:write_dm9000(0x01, (1 << 2) | (1 << 3) | (1 << 5));write_dm9000(0xfe, 0x3f);printf("3\n");//step 9://step 10:write_dm9000(0xff, 0xff);//step 11:write_dm9000(0x05, 0x01);//step 12:}void send_data(unsigned char *buff, int len){//p28://step 1:unsigned char c = read_dm9000(0xfe);if(c >> 7)printf("8 bit mode\n");elseprintf("16 bit mode\n");//step 2*(unsigned char*)INDEX = 0xf8;int tmp = (len + 1) >> 1;int i = 0;for(i=0; i<tmp; i++){*(unsigned short *)DATA = ((unsigned short*)buff)[i];}//step 3write_dm9000(0xfd, (len >> 8) & 0xff);write_dm9000(0xfc, len & 0xff);//step 4write_dm9000(0x02, 0x01);}int create_arp(unsigned char *buff){int len = 0;struct ethhdr *eth = (struct ethhdr *)buff;eth->dest[0] = 0xff;eth->dest[1] = 0xff;eth->dest[2] = 0xff;eth->dest[3] = 0xff;eth->dest[4] = 0xff;eth->dest[5] = 0xff;eth->source[0] = 0x11;eth->source[1] = 0x22;eth->source[2] = 0x33;eth->source[3] = 0x44;eth->source[4] = 0x55;eth->source[5] = 0x66;eth->type = htons(0x0806);struct arphdr *arp = (struct arphdr *)(buff + sizeof(struct ethhdr));arp->hw_type = htons(1);arp->pro_type = htons(0x0800); arp->hw_len = 6;arp->pro_len = 4;arp->op = htons(1);arp->src_mac[0] = 0x11;arp->src_mac[1] = 0x22;arp->src_mac[2] = 0x33;arp->src_mac[3] = 0x44;arp->src_mac[4] = 0x55;arp->src_mac[5] = 0x66;arp->src_ip[0] = 192;arp->src_ip[1] = 168;arp->src_ip[2] = 1;arp->src_ip[3] = 2;arp->dest_mac[0] = 0xff;arp->dest_mac[1] = 0xff;arp->dest_mac[2] = 0xff;arp->dest_mac[3] = 0xff;arp->dest_mac[4] = 0xff;arp->dest_mac[5] = 0xff;arp->dest_ip[0] = 192;arp->dest_ip[1] = 168;arp->dest_ip[2] = 1;arp->dest_ip[3] = 1;len = sizeof(struct ethhdr) + sizeof(struct arphdr);return len;}void *memset(void *s, int c, int len){int i = 0;for(i=0; i<len; i++)((unsigned char *)s)[i] = c;}unsigned short htons(unsigned short data){unsigned short ret = 0;ret = ((data >> 8) & 0xff) | ((data << 8) & 0xff00);return ret;。
DM9000中文手册

9.功能描述9.1主机接口主机接口是ISA总线兼容模式,有8个IO口基址,分别是300H、310H、320H、330H、340H、350H、360H、370H。
IO基址由设置引脚决定或者由EEPROM重载。
主机接口只有两个寻址口(addressing port),一个是索引口(index Port),另一个是数据口(data port)。
CMD=0时是索引口,CMD=1时是数据口。
索引口的内容是数据口的寄存器地址。
在读写任何寄存器之前,必须通过索引口保存这些寄存器的地址。
9.2直接数据存取控制DM9000提供了DMA功能、简化了内部存储器的存取。
在初始化了内部存储器的起始地址、发送了一个虚拟的读写指令将当前数据加载到内部数据缓冲区后,读写指令寄存器就可以读写内部指令寄存器的指定位置了。
存储器地址将按照当前运行模式(如8位模式、16位模式、32位模式)递增,而且下一个存储器地址的数据将自动被加载到数据缓冲区。
注意,第一次读取的一连串数据(即虚拟读写指令)必须忽略,因为这些数据是上一次读写指令的内容。
内部存储器空间是16K字节。
开始的3K字节用作包传输的数据缓冲区。
接下来的13K 字节用作接收包的缓冲区。
所以在写存储器操作时,当IMR的第七位置一时,如果存储器地址增量到达传输缓冲区的末尾(3K)时将强置为0。
类似的,在读存储器操作时,当IMR 的第七位置一时,如果存储器地址增量到达接收缓冲区的末尾(16K)时将强置为0x0C00。
9.3数据包传输有两个传输包,依次是INDEX I和INDEX II,可以被同时保存到发送SRAM中。
发送控制寄存器(02H)控制着冗余校验码和便签(pads)的插入。
传输包的状态被分别记录在发送状态寄存器I(03H)和发送状态寄存器II(04H)中。
传输的起始地址是00H,软件复位或者硬件复位后,当前包是INDEX I。
首先使用DMA 口写数据到TX SRAM,然后写字节数到的字节数寄存器,即发送包长度寄存器(0FCH/0FDH)。
DM9000寄存器功能详细介绍

DM9000寄存器功能详细介绍提交者: a00 日期: 1/20 16:09 阅读: 15DM9000(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将清零该位。
不受软件复位影响。
DM9000A网卡技术doc资料

D M9000A网卡技术DM9000A框架技术使用说明书版本名:1.0更新说明:作者:陆卫军完成日期:2006-6-14版本名:1.1更新说明:增加一些关键问题处理作者:陆卫军完成日期:2006-9-31版本名:1.2更新说明:增加一个不兼容问题和DM9000B、资源文件章节作者:陆卫军完成日期:2007-10-311.硬件说明1.1硬件连接DM9000A有48个管脚,主要划分为:电源和测试接口、晶振接口、与处理器接口、与EPROM(93C46)接口、与网络变压器接口、配置接口5部分。
如下图所示:●电源和测试接口VDD/GND/AGND/BGGND/TEST●与处理器接口控制接口:IOR(读信号)/IOW(写信号)/CMD(数据/地址选择信号)/CS (片选信号)/PWRST(复位线)/INT(中断线)数据接口:SD0-SD15(16位)●与93c46接口EEDCS(片选线)、EEDCK(时钟线)、EEDIO(通讯线)●晶振接口X1/X2●与网络变压器接口RX+/RX-/TX+/TX-/BGRES/AVDD25/SD/LED1/LED2●配置接口管脚复用,EECS(EEDCS)/EECK(EEDCK)/GP61.2硬件配置DM9000A的访问时序可以通过管脚和EPROM配置。
●管脚EECS决定DM9000A的数据通讯采用8位还是16位,为了统一全部采用0(16位)。
●EPROMEPROM中配置信息可以决定DM9000A的中断电平等。
EPROM 中的信息可以在上电时自动读取,自动修改MAC寄存器,也可以通过MAC寄存器中EPDRL、EPDRH读取,内容如下图所示:为了统一接口,除了0-5字节MAC地址采用地址分配规则另行规定,6-15字节强制为: 45 54 46 0A 00 90 E7 01 80 C1统一接口16位工作模式CS低电平使能IOR低电平使能IOW低电平使能INT高电平使能RST低电平使能显示灯采用LED1模式1.3布板规范●RJ45、网络变压器、以太网接口芯片要尽量近,对于DM9000A来说,网络变压器和以太网接口芯片之间不要超过20mm,但是RTL8139要宽松很多,不超过10-12cm。
dmt9000说明书中文

部件须知使用须知1.使用本机前,请检查当地电源电压是否与本机相符;2.开启电源前,请确认各种连线和电源线已经正确地接好,并将音箱系统功率放大器的音量调节旋钮旋至最少,待音乐开始以后再根据需要调节音量大小,以免损坏放大器或扬声器;3.请不要把视盘机放在受阳光直接照射或容易遭受雨淋潮湿的地方;4.请不要播放严重划伤的碟片,否则对机器不利;5.较长时间不使用时,请把电源线插头拔离电源插座;6.用户不要随意拆卸视盘机,涉及维修的事项请委托专业的维修人员。
在拆开顶盖之后,请不要直视或靠近镭射光头,防止镭射光束损伤眼睛或是皮肤;7.光碟应轻拿轻放,用后放回盒内,尽量不要划伤;清洁光碟时,应用柔软干净的布料自中心向外沿轻擦,切忌用酒精,清洁剂等化学物品清洗光碟;光碟不能受热、受挤压,以防其弯曲变形;碟面不能贴纸或胶带,不要在上面写字。
随机附件1.音视频连线(AV线)一套2.遥控器一个3.保修卡一份4.说明书一份5.车载充电器音视频连接若您想欣赏逐行视频,请按逐行键,将DVD视盘机的视频切换到逐行输出模式,在逐行输出模式,不可以使用隔行输出。
如果逐行扫描电视机有Y、U/Pb、V/Pr视频分量输入,则可使用视盘机的Y、U/Pb、V/Pr输出。
若视盘机的音频输出也与电视机相连接,请将“混合”的“左、右”声道输出连接到与电视机的视频输入同一组别的音频输入端子。
If you want to enjoy progressive video, press the progressive button, then the player switch to progressive output mode.Under the progressive output mode, interlaced output is not available. If the progressive scan TV with Y, U / Pb, V / Pr component video input, you can use the Y, U / Pb, V / Pr output.If the video player's audio output connected with the TV, set "mixed" mode and make "left, right" channel output to connect to the same group of audio input terminals on TV.遥控器图示Remote controller注意:1.将遥控器对准DVD影碟机的遥控接收窗操作2.不要让遥控器从高处坠落3.不要将遥控器放置于高温或潮湿之处4.不要拆开遥控器DMT播放功能多媒体播放文件更新将DMT播放机用USB数据线连接到电脑进行文件更新(注意:接到电脑前请关掉机器电源)。