《单片机驱动DM9000网卡芯片.pdf》由会员分享,可在线阅读,更多相关《单片机驱动DM9000网卡芯片.pdf(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机驱动 DM9000网卡芯片(详细调试过程)【上】2009-03-0411:13和其它网卡芯片不同,DM9000系列网卡芯片在嵌入式开发板上很常见,尤其是有关ARM-Linux的开发板上的网络连接部分几乎都是采用该芯片完成的。当然,其它网卡芯片,如RTL8019的应用也很常见,在很多开发板上得到应用然而RTL8019的介绍在网上可以找到非常详细的介绍,尤其是用单片机对其做底层驱动的介绍非常丰富。下面的网站就介绍了用AVR 驱动 RTL8019网卡芯片的非常详细的过程,有兴趣的朋友可以参考一下。http:/members.home.nl/bzijlstra/software/examples
2、/RTL8019as.htmAVR 驱动 RTL8019网卡芯片的详细介绍。言归正传。在网上也能找到许多关于DM9000网卡芯片的介绍,然而这些介绍大多是关于Linux或 WinCE 下的驱动程序或移植,很少有介绍单片机驱动DM9000的例子。因此我在这里把我调试DM9000E的过程详细说明一下,仅供参考。本文主要介绍单片机驱动DM9000E网卡芯片的详细过程。从网卡电路的连接,到网卡初始化相关程序调试,再到 ARP 协议的实现,一步一步详细介绍调试过程。如果有时间也会把UDP 和 TCP 通讯实验过程写出来。当然,会用单片机编写DM9000的驱动,再想编写ARM 下的 Linux的驱动就容易
3、的多了。在调试之前,应该先参考两份技术文档,可以从下面网站中下载。DM9000E.pdf(芯片数据资料)和 DM9000ApplicationNotesVer1_22061104.pdf(应用手册)http:/.tw或者DM9000DatasheetVF03:http:/.tw/userfile/24247/DM9000-DS-F03-041906_1.pdfDM9000ADatasheet:http:/.tw/userfile/24247/DM9000A-DS-F01-101906.pdfDM9000ApplicationNotesV1.22http:/.tw/big5/download/D
4、ata%20Sheet/DM9000_Application_Notes_V一、电路连接DM9000E网卡芯片支持8 位、16 位、32 位模式的处理器,通过芯片引脚EEDO(65 脚)和 WAKEUP(79 脚)的复位值设置支持的处理器类型,如16 位处理器只需将这两个引脚接低电平即可,其中WAKEUP 内部有 60K 下拉电阻,因此可悬空该引脚,或作为网卡芯片唤醒输出用。其它型号请参考相应的数据手册。图 1 DM9000引脚如图所示,对处理器驱动网卡芯片来说,我们比较关心的有以下几个引脚:IOR、IOW、AEN、CMD(SA2)、INT、RST,以及数据引脚SD0-SD15-SD31和地址
5、引脚 SA4-SA9。其中,地址引脚配合AEN引脚来选通该网卡芯片,对于大多数的应用来说没有意义,因为在我们的应用中一般只用一个网卡芯片,而这些地址引脚主要用于在多网卡芯片环境下选择其中之一。DM9000工作的默认基地址为0 x300,这里我们按照默认地址选择,将SA9、SA8 接高电平,SA7-DA4接低电平。多网卡环境可以根据TXD0-TXD3 配置 SA4-SA7来选择不同的网卡,这里不做介绍,有兴趣的朋友请参考应用手册和数据手册。数据引脚 SD0-SD31则根据前面所讲的配置处理器模式与处理器的数据总线进行选择连接即可,没用到的引脚悬空。那么,除了地址、数据引脚外,剩下的与处理器有关引
6、脚对我们来说及其重要了,而与处理器无文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8
7、ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10
8、I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4
9、文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:C
10、P8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3
11、J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6
12、HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4IOR 和 IOW 是 DM9000的读写选择引脚,低电平有效,即低电平时进行读(IOR)写(IOW)操作;AEN 是芯片选通引脚,
13、低电平有效,该引脚为低时才能进行读写操作;CMD 的命令/数据切换引脚,低电平时读写命令操作,高电平时读写数据操作。图 2 读时序图 3 写时序这些引脚接口和其它单片机外围器件的引脚接口基本相同,其使用也一样。对于有总线接口的单片机来说,如 51 系列,ARM 等直接连接即可。对于没有总线接口的来说,如 AVR mega32等可以直接用I/O 引脚模拟总线时序进行连接。连接时要参考读写时序,如上图所示。具体连接电路,有时间我再画出来,暂时先略了。文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3
14、F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W
15、1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编
16、码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W
17、9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10
18、Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5
19、P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3
20、U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4在这,我使用 C 语言编写驱动程序,这需要非常注意一点,即处理器所用的C 编译器使用“大端格式”还是“小端格式”,这可以在相应处理器的C 编译器说明上找到。一般比较常见的是小端格式。而对于8 位处理器来说,在编写驱动程序时,可以不考虑,但是在编写网络协议的时候,一定好考虑,因为网络协议的格式是大端格式,而大部分编译器
21、或者我们习惯的是小端格式,这一点需要注意。在 DM9000中,只有两个可以直接被处理器访问的寄存器,这里命名为CMD 端口和 DATA 端口。事实上,DM9000中有许多控制和状态寄存器(这些寄存器在上一篇文章中有详细的使用说明),但它们都不能直接被处理器访问,访问这些控制、状态寄存器的方法是:(1)、将寄存器的地址写到CMD 端口;(2)、从 DATA 端口读写寄存器中的数据;1、读、写寄存器其实,INDEX 端口和 DATA 端口的就是由芯片上的CMD 引脚来区分的。低电平为INDEX 端口,高电平为 DATA 端口。所以,要想实现读写寄存器,就必须先控制好CMD 引脚。若使用总线接口连接
22、DM9000的话,假设总线连接后芯片的基地址为0 x800300(24 根地址总线),只需如下方法:#defineDM_ADD(*(volatileunsignedint*)0 x8000300)#defineDM_CMD(*(volatileunsignedint*)0 x8000304)/向 DM9000寄存器写数据voiddm9000_reg_write(unsignedcharreg,unsignedchardata)udelay(20);/之前定义的微妙级延时函数,这里延时20usDM_ADD=reg;/将寄存器地址写到INDEX端口udelay(20);DM_CMD=data;/将
23、数据写到 DATA 端口,即写进寄存器文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8
24、 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F1
25、0I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B
26、4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:
27、CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P
28、3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6
29、 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4unsignedintdm9000_reg_read(unsignedcharreg)udelay(20);DM_ADD=reg;
30、udelay(20);returnDM_CMD;/将数据从寄存器中读出只得注意的是前面的两个宏定义DM_ADD和 DM_CMD,定义的内容表示指向无符号整形变量的指针,在这里 0 x800300是 DM9000命令端口的地址,对它的赋值操作就相当于把数据写到该地址中,即把数据写到 DM9000的命令端口中。读的道理也一样。这是一种很常见的宏定义,一般在处理器中定义通用寄存器也是这样定义的。若没有总线接口的话,可以使用IO 口模拟总线时序的方法实现寄存器的读写。这里只说明实现步骤。首先将处理器的I/O 端口与 DM9000的 IOR 等引脚直接相连(电平匹配的情况下),又假设已经有宏定义“IOR
31、”I/O端口控制 DM9000的 IOR 引脚,其它端口控制DM9000引脚的命名相同,“PIO1”(根据处理器情况,可以是8 位、16 位或 32 位的 I/O 端口组成)控制数据端口。这样宏命名更直观些。写寄存器的函数如下:voiddm9000_reg_write(unsignedcharreg,unsignedchardata)PIO1=reg;AEN=0;CMD=0;IOR=1;IOW=0;udelay(1);文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:
32、CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P
33、3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6
34、 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1
35、W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8
36、 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F1
37、0I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B
38、4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4IOW=1;udelay(20);PIO1=data;AEN=0;CMD=0;IOR=1;IOW=0;udelay(1);AEN=1;IOW=1;读寄存器的写法类似,这里就略一下了。这一过程看上去有些复杂,呵呵,其实执行起来也蛮有效率的,执行时间差不多。这种模拟总线时序的方式实际并不复杂,只是把总线方式下自动执行的过程手动的执行了一遍而已。在
39、DM9000中,还有一些 PHY 寄存器,也称之为介质无关接口MII(MediaIndependentInterface)寄存器。对这些寄存器的操作会影响网卡芯片的初始化和网络连接,这里不对其进行操作,所以对这些寄存器的访问方法这里也略了(在上篇文章中有介绍)。操作不当反而使网卡不能连接到网络。至此,我们已经写好了两个最基本的函数:dm9000_reg_write()和 dm9000_reg_read(),以及前面的宏定义 DM_ADD和 DM_CMD。下面将一直用到。2、初始化 DM9000网卡芯片。初始化 DM9000网卡芯片的过程,实质上就是填写、设置DM9000的控制寄存器的过程,这里
40、以程序为例进行说明。其中寄存器的名称宏定义在DM9000.H中已定义好。注:一下函数中unsignedchar 为一个字节 unsignedint 为两个字节/DM9000初始化文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文
41、档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP
42、8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J
43、10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 H
44、S5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2
45、S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 Z
46、B3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I
47、2W1B4unsignedinti;IO0DIR|=1 8;IO1CLR|=1 8;udelay(500000);IO2SET|=1 8;udelay(500000);IO1CLR|=1 8;udelay(500000);/*以上部分是利用一个IO 口控制 DM9000的 RST 引脚,使其复位。这一步可以省略,可以用下面的软件复位代替*/dm9000_reg_write(GPCR,0 x01);/设置 GPCR(1EH)bit0=1,使 DM9000的 GPIO3 为输出。dm9000_reg_write(GPR,0 x00);/GPRbit0=0使 DM9000的 GPIO3 输出为低以激
48、活内部PHY。udelay(5000);/延时 2ms 以上等待 PHY 上电。dm9000_reg_write(NCR,0 x03);/软件复位udelay(30);/延时 20us 以上等待软件复位完成dm9000_reg_write(NCR,0 x00);/复位完成,设置正常工作模式。dm9000_reg_write(NCR,0 x03);/第二次软件复位,为了确保软件复位完全成功。此步骤是必要的。udelay(30);dm9000_reg_write(NCR,0 x00);/*以上完成了 DM9000的复位操作*/文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10
49、I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4
50、文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:CP8W9P3J10Y6 HS5P1W2S3U8 ZB3F10I2W1B4文档编码:C