基于RTL8019以太网应用系统.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于RTL8019以太网应用系统

基于RTL8019的以太网应用系统 2007-11-06 10:57:09 本文已公布到 HYPERLINK / \n _blank博客频道 HYPERLINK /category_5/ \n _blank校园·教育分类 基于RTL8019的以太网应用系统 基于RTL8019的以太网应用系统 以太网接口模块是构造一给通用的基于网络的嵌入式Linux系统的基础,该接口模块的主要任务就是完成与外界信息的交互,以达到网络监控的目的。 使用RTL8019作为以太网的物理层接口,它的基本工作原理:是在收到由主机发来的数据报后(从目的地址域到数据域),侦听网络线路。如果线路忙,就等到线路空闲为止,否则,立即发送数据桢。 RTL8019为台湾芯片生产商Realtek公司第三代快速以太网连接而设计,它支持多种嵌入式处理器芯片,内置FIFO缓存器用于发送和接受数据。 系统硬件电路结构图: 系统工作流程图: 网络数据的发送流程: ? 网络数据的接收: RTL8019工作代码: //RTL8019.c #include GloblDef.h #include MMenage.h #include RTL8019.h extern BYTE MemAllocation(WORD size); extern void FreePage(BYTE page); extern BYTE xdata *MemPageToPoint(BYTE page); extern BYTE WriteQueue(BYTE page,struct Queue xdata * pQueue); BYTE xdata LocalMACAddr[6]={0x52,0x54,0x4c,0x30,0x2e,0x2f}; struct Queue xdata QueueNetPacketIn; BYTE StartPageOfPacket; ??????????/* 接收头文件信息 */ struct RTLReceiveHeader { ?BYTE ReceiveStatus; ?BYTE NextPacketStartPage; ?BYTE PacketSizeLow; ?BYTE PacketSizeHigh; }Head; Head 须为全局变量. BYTE xdata Head[4]; ??????????/* 上一次传输起始页*/ BYTE LastSendStartPage; sbit RTLResetPin = RTL_RESET_PIN; ????????/* 读rtl8019 寄存器端口*/ BYTE ReadReg(WORD port) { ?BYTE xdata * p; ?p = (BYTE xdata *)port; ?return *p; } ????????????????/* 写寄存器*/ void WriteReg(WORD port,BYTE value) { ?BYTE xdata * p; ?p = (BYTE xdata *)port; ?*p = value; } ?????????????/* 选择寄存器页使用*/ void RTLPage(BYTE Index) { ??????????/* 设置 CR, CR_TXP 7-6位为 0(为 1 ,包重传) */ ?BYTE temp; ?temp = ReadReg(CR); ?temp = temp 0x3B;?????/*set 7-6 and 3 bit to 0*/ ?Index = Index6; ?temp = temp | Index; ?WriteReg(CR,temp); } ??????????????/* PRA 为物理地址 */ void RTLInitial() { ?BYTE temp; ?int i; ? ??????????????/* 硬件重启 */ ?RTLResetPin = 1; ?for(i = 0;i255;i++); ?RTLResetPin = 0; ???????????/* 如果硬件重启时延很大, rtl自我初始化 */ ?for(i=0;iDELAY_AFTER_HARDWARE_RESET;i++);? ? ???????????????/* 写重启口 */ ?temp = ReadReg(RESET_PORT); ?WriteReg(RESET_PORT,temp); ? ???????????????/* 初始化RTL 寄存器*/ ?WriteReg(CR,(CR_PAGE0 | CR_ABORT_COMPLETE_DMA | CR_STOP_COMMAND)); ?????????????/* 设置

文档评论(0)

xxj1658888 + 关注
实名认证
文档贡献者

教师资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档