以太网接口芯片W5300使用说明
一、芯片简介
引用百度百科对芯片的一个简介,我就不再赘述。
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的时钟。
以太网接口芯片W5300使用说明的更多相关文章
- SAE J1850 VPW PWM, SAE J2411 SWC, ISO 11898 CAN, SAE J1708, Chrysler CCD 接口芯片电路
SAE J1850 VPW 接口芯片电路 SAE J1850 PWM 接口芯片电路 SAE J2411 SWC 接口芯片电路 ISO 11898 CAN 接口芯片电路 CANH 和CANL 上的电容 ...
- IC卡接口芯片TDA8007的读写器设计
摘要:阐述T=0传输协议,给出IC卡读写器中使用的IC卡APDU指令流程和原理框图:重点介绍其中的IC卡接口芯片Philips的TDA8007,给出通过TDA8007对CPU IC卡上下电过程.具体程 ...
- 射频识别技术漫谈(29)——射频接口芯片TRF7960
TRF7960系列是TI推出的载波为13.56MHz.支持ISO15693.ISO14443A/B和FeliCa协议的射频接口芯片.许多人更关心它能不能读写MF1卡片,就我的理解及实际验证,由于MF1 ...
- 射频识别技术漫谈(20)——RC系列射频接口芯片
目前基于13.56MHz的射频识别技术主要有ISO14443A.ISO14443B.ISO15693和FELICA技术.针对13.56MHz的射频识别技术,NXP开发了一系列名字以RC(Radio C ...
- 以太网接口TCP/IP协议介绍,说的很容易懂了
以太网接口TCP/IP协议介绍,说的很容易懂了 TCP/IP协议,或称为TCP/IP协议栈,或互联网协议系列. TCP/IP协议栈(按TCP/IP参考模型划分) 应用层 FTP SMTP HTT ...
- 基于USB接口芯片CH372的人机接口设备设计与实现(转)
摘 要: 基于一种新型USB 总线接口芯片CH372,设计出一种人机接口设备-USB 鼠标.阐述了CH372 的工作原理和特点,给出了系统的硬件电路图:在软件设计中,分析了HID 类设备描述符枚举过程 ...
- 以太网PHY 芯片之 MII/MDIO接口详解
本文主要分析MII/RMII/SMII,以及GMII/RGMII/SGMII接口的信号定义,及相关知识,同时本文也对RJ-45接口进行了总结,分析了在10/100模式下和1000M模式下的设计方法. ...
- TYPEC 接口芯片CC逻辑原理与必要性
USB Type-C凭借其自身强大的功能,在Apple,Intel,Google等厂商的强势推动下,必将迅速引发一场USB接口的革命,并将积极影响我们日常生活的方方面面.为了能够使自己的设备兼容这些接 ...
- 转接口IC ADV7280/ADV7280-M:CVBS转MIPI转接口芯片 10位、4倍过采样标清电视视频解码器,支持去隔行
概述ADV7280/ADV7280-M是功能丰富的单芯片.多格式视频解码器.ADV7280/ADV7280-M可自动检测标准模拟基带视频信号,兼容复合.S视频和分量视频形式的NTSC.PAL和SECA ...
随机推荐
- 移动端分享到微信和QQ
关于在H5页面实现分享到微信和QQ,当初做的时候由于没有做过这方面的功能,也查了很多资料,找了很多插件,试了很多方法,大部分的都是点击后出现一个二维码,这不 符合我的需求,所以在网上找了一个 nati ...
- C#一款比较美观的验证码
using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System. ...
- 一些实用的JQuery代码片段收集(筛选,搜索,样式,清除默认值,多选等)
//each遍历文本框 清空默认值 $(".maincenterul1").find("input,textarea").each(function () { ...
- mongodb生产环境(副本集模式)集群搭建配置
mongodb副本集模式由如下几部分组成: 1.路由实例mongos 2.配置实例configsvr 3.副本集集群replset(一主多从) tips: 1.以上实例都是mongod守护进程 2.以 ...
- canvas图表详解系列(3):动态饼状图(原生Js仿echarts饼状图)
本章建议学习时间4小时 学习方式:详细阅读,并手动实现相关代码(如果没有canvas基础,需要先学习前面的canvas基础笔记) 学习目标:此教程将教会大家如何使用canvas绘制各种图表,详细分解步 ...
- 张高兴的 UWP 开发笔记:手机状态栏 StatusBar
UWP 有关应用标题栏 TitleBar 的文章比较多,但介绍 StatusBar 的却没几篇,在这里随便写写.状态栏 StatusBar 用法比较简单,花点心思稍微设计一下,对应用会是个很好的点缀. ...
- Anroid四大组件service之本地服务
服务是Android四大组件之一,与Activity一样,代表可执行程序.但Service不像Activity有可操作的用户界面,它是一直在后台运行.用通俗易懂点的话来说: 如果某个应用要在运行时向用 ...
- Redis 学习笔记-5种数据类型的基本操作
1.string类型 基本操作列表: GET 获取指定键对应的值 SET 设定键值 DEL 删除指定键对应的值(对所有数据类型都有效) > set hello world OK > get ...
- JS的基本类型(小知识)
一:js中的基本类型: 基本类型:boolen, string ,number,null,undefined 引用类型:object,和函数 二.undedifned和null的区别: 1 undef ...
- C++类与对象(05)
类是具有惟一标识符的实体:在类中声明的任何成员不能使用extern.auto和register关键字进行修饰:类中声明的变量属于该类,在某些情况下,变量也可以被该类的不同实例所共享. 访问权限用于控制 ...