一、芯片简介

引用百度百科对芯片的一个简介,我就不再赘述。

W5300的目标是在高性能的嵌入式领域,如多媒体数据流服务。与WIZnet现有的芯片方案相比较,W5300在内存空间和数据处理能力等方面都有很大的提高。
W5300特别适用于IPTV,IP机顶盒和数字电视等大流量多媒体数据的传输。通过一个集成有TCP/IP协议和10/100M的以太网MAC和PHY的单芯片可以非常简单和快捷地实现Internet连接。
W5300与主机(MCU)采用总线接口。通过直接访问方式或间接访问方式,W5300可以很容易与主机接口,就像访问SRAM存储器。W5300的通信数据可以通过每个端口的TX/RX FIFO寄存器访问。由于这些特性,即使一个初学者也很容易使用W5300实现Internet连接。

应用领域

W5300在很多嵌入式系统中都非常适用,包括:

  • 家庭网络设备:机顶盒,PVR和数字多媒体设备。
  • 串口转以太网:访问控制,LED显示等
  • 并行接口转以太网:POS/微型打印机,复印机
  • USB转以太网:存储设备,网络打印机
  • GPIO转以太网:家庭网络传感器
  • 安防设备:DVR,网络摄像头
  • 工厂和建筑自动化
  • 医疗监控设备
  • 嵌入式服务器

W5300的使用,和我们常用的协议或者控制芯片一样,都是采用总线方式对其寄存器进行配置,从而实现相应的功能。W5300的配置,大致分为三个过程:上电初始化、通用寄存器配置和socket寄存器配置三个过程。

二、上电初始化

上电后,利用\RESET管脚对W5300进行初始化。RESET信号低电平至少持续2us,为了使锁相环逻辑稳定,复位信号恢复高电平后至少等待10ms。

复位完成后,对W5300进行通用寄存器配置。

三、通用寄存器配置

W5300每个通用寄存器的详细说明及每一位代表什么含义,请参见官方手册。采用间接地址配置模式,W5300的基地址是0x08000。在FPGA对其配置时,是从上到下的顺序。

在通用寄存器配置完成之后,实际上嵌入式系统就可以进行物理连接了,当接入PC时,就可以ping通系统,从而验证通用寄存器配置是否成功。

四、Socket寄存器配置

完成W5300初始化以后,W5300可以以TCP、UDP、IPRAW或MACRAW的方式打开Socket发送或接收数据。

在本设计中,W5300工作在TCP服务器模式下。为了实现TCP通信,需要对Socket0(W5300可以支持8个独立socket)进行初始化设置,然后进行侦听设置,完成TCP服务器建立,最后等待建立连接。

通过Socket0模式寄存器S0_MR(P3:P0)和Socket0端口寄存器S0_PORTR分别设置通信协议和本机端口号(在TCP服务器模式,称之为侦听端口号),然后向Socket0控制寄存器S0_CR中写入0x0001执行OPEN命令,执行完OPEN命令后,如果Socket0状态寄存器S0_SSR改变为SOCK_INIT(0x13),则Socket0的初始化设置完成;再向S0_CR中写入0x0002执行侦听命令,若S0_SSR改变为SOCK_LISTEN(0x14),则侦听完成,W5300设置为TCP服务器;最后等待S0_SSR改变为SOCK_ESTABLISHED(0x17),若S0_SSR变为预期值,则建立了Socket0连接,可以进行数据通信。

五、接收数据

当W5300控制器收到接收数据控制命令时,进入接收数据状态。W5300接收数据的程序流程如下图所示。

首先要判断Socket0的RX存储器中是否有接收到的数据,即读取Socket0接收数据报长度寄存器S0_RX_RSR的值,并判断该值是否等于零。如果S0_RX_RSR的值等于零,表示没有数据接收,则继续判断,否则说明Socket0的RX存储器接收到数据,则进入下一步接收数据操作。

当存储器中接收到数据时,要进一步判断Socket0模式寄存器S0_MR的对齐控制位(ALIGN),若S0_MR[8] = 0(0表示没有对齐),则从Socket0的RX_FIFO寄存器S0_RX_FIFOR中读取需要接收的数据字节长度(这样做是由TCP/IP协议数据格式来确定的),否则从S0_RX_RSR中读取数据字节长度。实际上,在对齐的判断过程中,潜在的判断了数据字节是不是偶数,对齐则为偶数(S0_MR[8] = 1)。

得到数据字节长度信息后要将其转换为数据字长度,在TCP通信过程中,当每次收到的数据包的字节数为偶数时,S0_MR[8](ALIGN)为‘1’,删去附在接收数据包中的PACKET-INFO(数据的字节数),可以使读取数据的操作大大增强。如果收到的数据长度字节数为奇数,那么将添加一个哑字节,主机必须首先读取这个哑字节并丢弃它。从PACKET-INFO的字节长度信息可以判断数据包的最后一个字节是否为哑字节。字数作为读取S0_RX_FIFOR中接收内容的循环控制量。注意,字数的大小与数据总线宽度有关,本系统采用16位总线,所以包含2个字节。
最后,要在向S0_CR写入0x0040,执行REVC命令,告知主机W5300已经完成数据的读取。

六、数据发送

当W5300控制器收到发送数据控制命令时,进入发送数据状态。W5300发送数据程序流程如图所示。

首先读取Socket0剩余存储空间寄存器S0_TX_FSR,并判断S0_SSR当前的状态,若既不处于连接状态(SOCK_ESTABLISHED),也没有接收到连接断开请求(SOCK_CLOSE_WAIT),则直接关闭端口。

判断要发送数据的字节长度是否小于发送寄存器剩余空间的大小,如果小于等于剩余空间,则将需要发送数据字通过S0_TX _FIFOR复制到Socket0的TX存储器中,然后再将发送数据字节长度值写入Socket0的写长度寄存器S0_TX_WRSR,告知W5300需要向上位机发送数据的字节数。最后向S0_CR写入0x0020执行SEND命令,W5300收到此命令后对接收到的数据进行协议处理,并发送到网络中。数据发送完成后,Socket0的中断寄存器S0_IR会产生发送完成(SEND_OK)中断(用于检测上一次是否发送完成),中断值为0x0010,软件清除该中断后表示完成一次发送。如果是第一次发送,则不需要检测SEND_OK。

七、其他说明

1、作为客户端

当嵌入式系统作为客户端时,在配置W5300过程中,唯一与服务器模式不同的是,不用配置socket寄存器S0_CR的监听模式,改为配置服务器IP和端口号,然后采用写入连接connect。

2、时钟信号的选择

W5300一般选择内部PHY模式,时钟信号可以由内部振荡器(外接晶振)或外部振荡器产生。我的设计中外部振荡器由FPGA的PLL产生25MHz的时钟。

转载于:https://www.cnblogs.com/rouwawa/p/7250859.html

以太网接口芯片W5300使用说明相关推荐

  1. [转]以太网接口芯片W5300使用说明

    原文地址:https://www.cnblogs.com/rouwawa/p/7250859.html 一.芯片简介 引用百度百科对芯片的一个简介,我就不再赘述. W5300的目标是在高性能的嵌入式领 ...

  2. RTL8211系列,RTL8211FS\RTL8211F\RTL8211E,目前有PIN to PIN产品,千兆PHY,RPC8211F,RPC8211FS,以太网接口芯片

    睿普康集成电路是一家专注于 4/5G 通讯芯片.数据通讯及物联网领域 SOC 芯片及解决 方案的设计公司.公司目前 90%以上为研发人员,其中硕博学历者 20 人左右, 有着多 年服务于国内外著名芯片 ...

  3. 【科研论文】某雷达自动测试系统研制–基于全硬件TCP/IP协议栈芯片W5300

    摘要: 雷达用于实现对目标的准确定位,帮助武器系统锁定目标,继而命中并摧毁目标.因此,雷达性能的优劣直接影响了对目标的定位精度,继而影响了整个武器系统的功效.本课题研究某型号雷达的自动测试系统,用于在 ...

  4. 千兆以太网PHY芯片调试-88E1111(RGMII接口-数据收发ECHO测试) Verilog实现python测试

    千兆以太网PHY芯片调试-基于RGMII接口的88E1111(数据收发ECHO测试) 先放结果: Py测试代码: import socket #网络通信 TCP,UDP DST_IP = '192.1 ...

  5. 睿普康 以太网接口PHY芯片主要替换瑞昱的pin对pin芯片

    睿普康 以太网接口PHY芯片主要替换瑞昱的pin对pin芯片 其他完整学习资料和规格书都在我的附件里,希望大家可以相互学习,有错误方面还请大家正,提供的这些关于PHY的资料也是为了让大家更好的去认识, ...

  6. 基于W5300的嵌入式以太网接口设计

    1 确定嵌入式系统的需求(主体介绍,具体需求分析) 设计以太网接口,用于网络通信,支持TCP/IP协议,实时操作系统. 2 设计系统的体系结构,分配软硬件要求 选择处理器:STM32F103ZET6( ...

  7. 以太网口差分电平_以太网接口学习笔记

    英文:Ethernet 中文:以太网 标准号:IEEE802.3/802.3u/802.3z/802.3ab/802.3ae 标准制定与维护:IEEE 国际电气和电子工程师协会 网址:www.ieee ...

  8. 以太网接口MII,RMII,SMII,GMII总线接口简介

    以太网接口MII,RMII,SMII,GMII总线接口简介 所有的这些接口都从MII而来,MII是(MediumIndependent Interface)的意思,是指不用考虑媒体是铜轴.光纤.电缆等 ...

  9. 嵌入式知识框架之六-接口与总线(SPI\I2C\ USB\PCI\PCI-E\SD\SDIO\以太网接口)

    接口是外设和主设备连接的方式/规则/协议的名称:XX总线是主设备连接某一类接口的名称 1.串口 串行数据接口标准(根据时间发展顺序介绍): RS-232:命名为EIA-232-E标准:通信距离短.速率 ...

最新文章

  1. seaborn使用Catplot函数可视化水平小提琴图(Make Horizontal Violin Plot with Catplot in Seaborn)
  2. aidl使用_借助 AIDL 理解 Android Binder 机制——Binder 来龙去脉
  3. hdu2037今年暑假不AC
  4. 写一个js向左滑动删除 交互特效的插件——Html5 touchmove
  5. 【Python】pandas模块中更改Series的数据类型
  6. 最新、最前沿AI论文哪里找?
  7. 程序员眼中的编程语言
  8. 启动hive报错_远程服务器模式Hive的搭建过程详解
  9. MVC如何分离Controller与View在不同的项目
  10. vue3 main.js引入 axios_Vue3.0新特性探索
  11. 打算开源一个低代码平台,第二天,包含【工作流,业务流,财务,APQC】。技术站 React,typescript,java,mysql
  12. 关于Windows 7与Ubuntu启动的一些注记(win7屏蔽ubuntu的启动项)
  13. Vert.x(vertx) 连接MySQL、Oracle数据库
  14. 下载、安装Ctex及编译自动化学报模板时错误的解决
  15. 框架流程图绘制工具OmniGraffle 7 for Mac
  16. 拨乱反正-重构是门艺术活
  17. 51单片机汇编学习例程(17)——KeyPad4X4篇
  18. 期货从入门到高深之量化交易1
  19. 安装VMware Workstation
  20. 数字油画 matlab,数字油画制作中的k均值聚算法

热门文章

  1. [LGCN论文笔记]:Large-Scale Learnable Graph Convolutional Networks
  2. 生产者-消费者模式的三种实现方式
  3. 现在加入蚂蚁还来得及吗?谈谈跳槽的机会成本
  4. CODEVS 1391 伊吹萃香 多层图最短路
  5. 如何快速选中某单元格所在的整行或整列 Excel教程
  6. 【练习01】列表去重的三种方法
  7. 猿创征文|为了学习英语,我开发了一个单词对战系统
  8. 【数据结构与算法】高级排序(希尔排序、归并排序、快速排序)完整思路,并用代码封装排序函数
  9. LNMT和LAMT的实现
  10. 页面添加H5声音图标