




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
驱动nic芯片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的命令/数据切换端子图2读出定时图3写入定时这些引脚接口基本上与其他单片机外围设备的引脚接口相同,并且其使用方式也相同。 在具有总线接口的单片机中,只要直接连接51系列、ARM等即可。 没有总线接口时,AVR mega32等可直接通过I/O引脚模拟总线顺序连接。 连接时,如上图所示,请参考读写顺序。 具体连接电路,有时间的话画一下,暂时省略。二、制作驱动程序现在,我们用c语言创建驱动程序。 请注意,处理器使用的c编译器是“大端格式”还是“小端格式”。 这在相应处理器的c编译器说明中有所描述。 一般常见的是小端格式。 在8位处理器中,在创建驱动程序时可能不考虑,但是应当注意,在创建网络协议时,网络协议的格式是大端格式,并且大部分编译器和我们所习惯的是小端格式。在DM9000中,处理器只能直接访问两个寄存器,这里称为CMD端口和DATA端口。 事实上,DM9000有许多控制和状态寄存器(这些寄存器在上一篇文章中有详细说明),但无法直接访问处理器。 访问这些控制状态寄存器的方法如下所示(1)将寄存器的地址写入CMD端口(2)、从DATA端口读写寄存器内的数据1 .读、写寄存器实际上,INDEX端口和DATA端口由芯片上的CMD引脚区分。 低级别是索引端口,高级别是数据端口。 因此,为了实现读写寄存器,必须首先控制CMD端子。使用总线接口连接DM9000时,如果总线连接后芯片的基本地址为0x800300(24条地址总线),则需要以下方法definedm _ add (volatilesunsignedint * )0x 8000300 ) )definedm _ cmd (volatilesunsignedint * )0x 8000304 ) )向DM9000寄存器写入数据voidm 9000 _ reg _ write (无标记缓存,无标记缓存数据)装模作样udelay(20) /以前定义的精细级别的延迟函数,在此延迟20usDM_ADD=reg; /将寄存器地址写入INDEX端口udelay(20 )DM_CMD=data; /将数据写入DATA端口后,写入寄存器以下称为从DM9000寄存器读取数据unsignedintdm 9000 _ reg _ read (unsignedcharreg )装模作样udelay(20 )DM_ADD=reg;udelay(20 )return DM_CMD; /从寄存器读取数据以下称为必须注意的是,在上述两个宏定义DM_ADD和DM_CMD中,定义的内容表示指向无符号整形变量的指针,其中0x800300是DM9000命令端口的地址,该分配操作向该地址写入数据,即DM9000 阅读的道理也是一样的。 这是一般的宏定义,一般还定义了在处理器内定义通用寄存器。如果没有总线接口,可以通过IO端口模拟总线顺序的方法进行寄存器的读写。 在此只说明实现步骤。 首先,将处理器的I/O端口直接连接到DM9000的IOR等端子(电平一致时),宏定义的“IOR”I/O端口控制DM9000的IOR端子,其他端口命名为DM9000端子,为“PIO1”(根据处理器的情况,为8位、8位) 这将使宏的名称更直观。 写入寄存器的函数如下所示voidm 9000 _ reg _ write (无标记缓存,无标记缓存数据)装模作样PIO1=reg;AEN=0;CMD=0;IOR=1;IOW=0;udelay(1)AEN=1;IOW=1;udelay(20 )PIO1=data;AEN=0;CMD=0;IOR=1;IOW=0;udelay(1)AEN=1;IOW=1;以下称为寄存器的写法相似,因此在此省略。 这个过程看起来有点复杂啊,其实执行也很有效率,执行时间大致相同。 模拟这个总线顺序的方式实际上并不复杂,只是手动运行了一次以总线方式自动运行的程序。DM9000还有一个PHY寄存器,也称为媒体独立接口MII (媒体从属接口)寄存器。 由于对这些寄存器的操作会影响nic芯片的初始化和网络连接,因此此处不进行操作,因此也省略了对这些寄存器的访问方法(在上文中介绍)。 如果操作错误,网卡反而无法连接到网络。现在,我们已经编写了两个基本函数: dm9000_reg_write ()和dm9000_reg_read (),以及上述宏定义DM_ADD和DM_CMD。 今后一直使用。初始化DM9000卡芯片。初始化DM9000卡片的过程基本上是在DM9000中填充控制寄存器的过程,并在此将程序作为示例来描述。 其中寄存器的名称宏定义由DM9000.H定义。注:函数的unsigned char为1字节unsigned int为2字节/DM9000初始化void DM9000_init(void )装模作样unsigned int i;IO0DIR |=1 8;IO1CLR |=1 8;udelay(500000 )IO2SET |=1 8;udelay(500000 )IO1CLR |=1 8;udelay(500000 )/*以上部分进行了控制,使DM9000的RST引脚通过IO端口复位。 可以省略此步骤。 可用以下软件复位进行替换*/设定dm9000_reg_write(GPCR,0 x 01 ) gpcr (1eh )比特0=1,将DM9000的GPIO3作为输出。通过降低dm9000_reg_write(GPR,0x00) /gprbit0=0dm9000的GPIO3输出来激活内部PHY。udelay (5000 )/延迟2 ms以上,等待PHY通电。dm9000_reg_write(NCR,0x03) /软件复位udelay(30) /延迟20us以上等待软复位完成dm9000_reg_write(NCR,0x00) /复位完成,设定为通常动作模式。dm9000_reg_write(NCR,0x03) /2第二次软件复位将确保软件复位完全成功。 这个步骤是必要的。udelay(30 )dm9000_reg_write(NCR,0x00 )/*以上操作完成了DM9000重置操作*/清除dm9000_reg_write(NSR,0x2c) /各种状态标志位清除dm9000_reg_write(ISR,0x3f) /所有中断标志位/*上述清除标志*/dm9000_reg_write(RCR、0x39) /接收控制dm9000_reg_write(TCR,0x00) /发送控制dm9000_reg_write(BPTR,0x3f )dm9000_reg_write(FCTR,0x3a )dm9000_reg_write(RTFCR,0xff )dm9000_reg_write(SMCR,0x00 )/*以上是功能控制,具体功能参考上一篇文章的说明,或参考数据手册的介绍*/for(i=0; i6; I )dm9000_reg_write(PAR i、mac_addri ) /mac_addr自己定义吧。 6字节的MAC地址/*上述记忆体MAC位址(网路卡实体位址)已经放在晶片上,但这里没有使用EEPROM,您必须自己写*/*有关MAC地址的说明,请参阅互联网相关书籍和资料*/dm9000_reg_write(NSR,0x2c )dm9000_reg_write(ISR,0x3f )/*由于保险原因,标记位已清除*/dm9000_reg_write(IMR,0x81 )/*中断使能(或中断掩码)打开我们想要的中断,关闭不想要的中断,此处只打开一个接收中断*/*上述所有寄存器的具体含义可参照上一篇文章或参照数据手册*/以下称为DM9000初始化到此结束。 怎么样? 很简单吧。3 .数据包的收发同样,以程序为例,用注释进行说明。/发送数据包/参数: datas是要发送的数据缓冲器(以字节为单位),length是要发送的数据长度(以2字节为单位)。voids send packet (unsigned char * datas,unsigned int length )装模作样无标识
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高等数学自考试题及答案
- 2025年广西民族大学政治与公共管理学院招聘考试笔试试题(含答案)
- 北京电工知识实操培训班课件
- 2024医疗纠纷预防处理和法律法规培训试题及答案
- 手术室实习生出科考试试题及答案
- 2025卫生管理职称考试复习题之试题及答案
- 2025会计基础知识竞赛题库与答案
- 北京护理新生儿知识培训课件
- 2024年国家公务员考试申论真题及答案(地市级)
- 2025年电大专科小学教育小学儿童教育心理学试题及答案重点
- 2025-2026学年接力版(2024)小学英语四年级上册(全册)教学设计(附目录)
- 2025年发展对象考试题题库及答案
- 2025年医疗质量安全核心制度及病历书写规范考核试题(附答案)
- 2025北京广播电视台校园招聘17人笔试备考题库及参考答案详解
- 征兵体检心理测试题及答案
- 水泥混凝土路面施工技术
- DB11T 1481-2024 生产经营单位安全事故应急预案评审规范
- 调车作业培训课件
- MIR睿工业:2025年中国协作机器人产业发展蓝皮书
- 2025年杭州市检察机关招录聘用制书记员考试笔试试题(含答案)
- 2025年应急管理普法知识竞赛题(附答案)
评论
0/150
提交评论