51单片机驱动W5100以太网接口芯片
- 格式:doc
- 大小:45.50 KB
- 文档页数:11
单片网络接口芯片W5100的原理与应用
王计元
【期刊名称】《上海电力学院学报》
【年(卷),期】2011(027)002
【摘要】W5100是WIZnet公司推出的一款TCP/IP硬件协议栈的升级产品,是一种多功能的单片网络接口芯片.它除了集成TCP/IP协议栈外,还集成以太网MAC 层和物理层.介绍了W5100芯片的性能特点和内部结构,分析了其软硬件应用设计方法.
【总页数】7页(P153-159)
【作者】王计元
【作者单位】上海电力学院计算机与信息工程学院,上海,200090
【正文语种】中文
【中图分类】TN915.04
【相关文献】
1.基于SPI总线和W5100的医疗仪器网络接口设计 [J], 刘关德;余学飞
2.单片射频收发芯片TRF6901的原理与应用 [J], 霍修坤
3.单片专用PABX芯片SC11390的原理与应用 [J], 马宗龙;吕亚林
4.基于W5100芯片的网络通信电路设计 [J], 王勇;孙立功;张立文;李娜;刘博;孙孟方
5.74HC595芯片对单片机IO口的扩展原理与应用 [J], 杨恒敏
因版权原因,仅展示原文概要,查看原文内容请购买。
W5100单片网络接口芯片简单介绍
W5100是一款多功能的单片网络接口芯片,内部集成有10/100以太网控制器,主要应用于高集成、高稳定、高性能和低成本的嵌入式系统中。
使用W5100可以实现没有操作系统的Internet连接。
W5100与IEEE802.310BASE-T和802.3u100BASE-TX兼容。
W5100内部集成了全硬件的、且经过多年市场验证的TCP/IP协议栈、以太网介质传输层(MAC)和物理层(PHY)。
硬件TCP/IP协议栈支持TCP,UDP,IPv4,ICMP,ARP,IGMP和PPPoE,这些协议已经在很多领域经过了多年的验证。
W5100内部还集成有16KB 存储器用于数据传输。
使用W5100不需要考虑以太网的控制,只需要进行简单的端口编程。
W5100提供3种接口:直接并行总线、间接并行总线和SPI总线。
W5100与MCU接口非常简单,就像访问外部存储器一样。
应用产品W5100可用于多种嵌入式应用产品,包括:
-家用网络设备:机顶盒,PVRs,数字媒体适配器
-串口转以太网:访问控制,LED显示器,无线AP等
-并行转以太网:POS/Mini打印机,复印机
-USB转以太网:存储设备,网络打印机
-GPIO转以太网:家用网络传感器
-安防系统:DVRs,网络照相机,终端机
-工业和楼宇自动化
-医用检测设备
-嵌入式服务器
特点-支持全硬件TCP/IP协议:TCP,UDP,ICMP,IPv4ARP,IGMP,PPPoE,Ethernet
-内嵌10BaseT/100BaseTX以太网物理层
-支持自动应答(全双工/半双工模式)。
51系列单片机与外围接口芯片的实验和技巧51系列单片机是一种常用的微控制器,具有广泛的应用领域。
为了提高单片机的功能和扩展其外围接口,常常需要使用外围接口芯片。
本文将介绍一些与51系列单片机配合使用的外围接口芯片的实验和技巧。
一、LCD液晶显示屏LCD液晶显示屏是一种常见的外围接口设备,可以用来显示各种信息。
与51系列单片机配合使用时,需要通过IO口进行数据和控制信号的交互。
在使用LCD液晶显示屏时,需要注意以下几点:1. 配置IO口的工作模式:将IO口设置为输出模式,以便向液晶显示屏发送控制信号和数据。
2. 使用延时函数:由于LCD液晶显示屏的响应速度较慢,需要在发送完数据后进行适当的延时,以确保数据能够被正确接收和显示。
3. 熟悉液晶显示屏的命令和数据格式:LCD液晶显示屏有自己的一套命令和数据格式,需要根据具体型号的要求进行设置。
二、ADC模数转换芯片ADC模数转换芯片可以将模拟信号转换为数字信号,常用于采集和处理模拟信号。
与51系列单片机配合使用时,需要注意以下几点:1. 配置IO口的工作模式:将IO口设置为输入模式,以便接收来自ADC芯片的模拟信号。
2. 设置ADC模数转换的精度:根据需要,可以调整ADC芯片的工作精度,以获得更高的准确性或更快的转换速度。
3. 调用ADC转换函数:通过调用相应的函数,可以启动ADC芯片进行模数转换,并获取转换结果。
三、DAC数模转换芯片DAC数模转换芯片可以将数字信号转换为模拟信号,常用于控制模拟设备的输出。
与51系列单片机配合使用时,需要注意以下几点:1. 配置IO口的工作模式:将IO口设置为输出模式,以便向DAC芯片发送数字信号。
2. 设置DAC数模转换的精度:根据需要,可以调整DAC芯片的工作精度,以获得更高的准确性或更大的输出范围。
3. 调用DAC转换函数:通过调用相应的函数,可以向DAC芯片发送数字信号,并控制其输出模拟信号的大小。
四、串口通信芯片串口通信芯片可以实现与其他设备的串口通信,常用于数据传输和远程控制。
W5100 数据手册Version 1.1.8谢氏电子2009-03谢氏电子在线技术支持如果你有技术或产品方面的问题,请访问深圳谢氏电子网站:http://www.cise.hk电话:+86-755-88823277传真:+86-755-83343747简介W5100 是一款多功能的单片网络接口芯片,内部集成有10/100 以太网控制器,主要应用于高集成、高稳定、高性能和低成本的嵌入式系统中。
使用W5100 可以实现没有操作系统的Internet 连接。
W5100 与IEEE802.3 10BASE-T 和802.3u 100BASE-TX 兼容。
W5100 内部集成了全硬件的、且经过多年市场验证的TCP/IP 协议栈、以太网介质传输层(MAC) 和物理层(PHY)。
硬件TCP/IP 协议栈支持TCP,UDP,IPv4,ICMP,ARP,IGMP 和PPPoE,这些协议已经在很多领域经过了多年的验证。
W5100 内部还集成有16KB 存储器用于数据传输。
使用W5100 不需要考虑以太网的控制,只需要进行简单的端口(Socket)编程。
W5100 提供3 种接口:直接并行总线、间接并行总线和SPI 总线。
W5100 与MCU 接口非常简单,就像访问外部存储器一样。
特点:结构图z 支持硬件化TCP/IP 协议:TCP,UDP,ICMP,IPv4 ARP,IGMP,PPPoE ,以太网z 内嵌10BaseT/100BaseTX 以太网物理层z 支持自动通信握手(全双工和半双工)z 支持自动MDI/MDIX,自动校正信号极性z 支持ADSL 连接(支持PPPoE 协议中的PAP/CHAP 认证模式)z 支持4 个独立端口同时运行z 不支持IP 的分片处理z 内部16KB 存储器用于数据发送/接收缓存0.18µm CMOS 工艺3.3V 工作电压,I/O 口可承受5V 电压80 脚LQFP 小型封装z 环保无铅封装z 支持SPI 接口(SPI 模式0)z 多功能LED 信号输出(TX、RX、全双工/半双工、地址冲突、连接、速度等)1. 管脚定义1.1 MCU 接口信号符号 管脚 I/O 说明/RESET 59 I 复置输入,低电平有效低电平初始化或重新初始化W5100低电平持续时间不小于2µs,所有内部寄存器均置为默认状态ADDR[14~0]38,39,40,41,42,45,46,47,48,49,50,51,52,53,54I 地址总线这些引脚用来选择寄存器或存储器,地址总线内部下拉为低电平DATA[7-0] 19,20,21,22,23,24,25,26I/O 数据总线这些引脚用来读/写W5100 内部寄存或存储器谢氏电子http://www.cise.hk/CS 55 I 片选,低电平有效片选是用于MCU 访问W5100 内部寄存器或存储器,/WR 和/RD 选择数据传输方向/INT 56 O 中断输出,低电平有效当W5100 在端口(Socket)产生连接、断开、接收数据、数据发送完成以及通信超时等条件下,该引脚输出信号以指示MCU 。
W5100在嵌入式系统中实现TCP/IP网络通信的应用成都加联科技有限公司 黎明摘要:W5100是WIZnet公司最新推出的固件网络芯片,它是在W3150A+的基础上,集成了以太网物理层RTL8201CP核,因此W5100集TCP/IP协议栈、以太网MAC和PHY为一体。
W5100支持TCP,UDP,ICMP,IGMP,IPv4,ARP,PPPoE,Ethernet等网络协议;支持4个独立的Socket通信,内部16K字节的发送/接收缓冲区可快速进行数据交换,最大通信速率达到25Mbps;提供多种总线(两种并行总线和SPI总线)接口方式,可以很方便地与各种单片机连接。
关键词: W5100,TCP/IP协议,以太网,单片机引言我们原来介绍过W3150A网络芯片,由于W3150A使用时还必需要在外面接一个以太网物理层接口器件(RTL8201CP),增加了使用时的硬件难度,因此Wiznet公司最新推出了W5100,将TCP/IP协议栈、以太网的MAC和PHY三种功能集为一体。
W5100不仅保留了原来与MCU接口的并行总线接口,还增加了SPI串行总线接口。
W5100器件的推出,大大简化了硬件电路设计,使单片机系统在没有操作系统的支持下,真正实现了单芯片接入Internet的理想。
芯片介绍W5100有如下特性:与MCU多种接口选择,直接总线接口、间接总线接口和SPI总线;支持硬件TCP/IP协议:TCP, UDP, ICMP, IGMP, IPv4, ARP, PPPoE, Ethernet;支持ADSL连接(支持PPPOE协议,带PAP/CHAP验证);支持4个独立的端口(Sockets)连接;内部16K字节存储器作TX/RX缓存;内嵌10BaseT/100BaseTX以太网物理层,支持自动应答(全双工/半双工模式);支持自动极性变换(MDI/MDIX);多种指示灯输出(Tx,Rx,Full/Duplex,Collision,Link,Speed);0.18µm CMOS工艺;3.3V工作电压,I/O口可承受5V电压;LQFP80无铅封装,符合环保要求。
W5100学习之功能描述
W5 1 0 0芯片的推出,大大简化了硬件电路设计,使单片机系统在没有操作系统支持下,真正使单芯片接人I n t e r ac t成为现实。
W5100在以往的网络接口芯片基础上,将T C P/ I P协议栈、以太网MA C和P H Y集成在一块芯片上,大大简化了硬件设计难度。
而且通过内部嵌入硬件协议栈,省去了传统繁琐的以太网协议编写和调试步骤,加快了系统开发速度,因此该芯片应用前景良好。
1.功能描述
通过设置寄存器和存储器,W5100就可以进行Internet连接。
这一章叙述操作过程。
1.1初始化
n 基本设置
对于1100的操作需要设置以下寄存器的参数:。
基于ARM和W5100的嵌入式以太网通信接口设计
王广维;张浩然
【期刊名称】《微型机与应用》
【年(卷),期】2011(030)005
【摘要】设计了一种基于以太网控制器W5100和32 bit ARM微处理器
STM32F105V的嵌入式以太网通信接口.介绍了W5100的工作原理、接口硬件设计及软件设计方案.硬件部分采用SPI总线接口模式实现STM32F105V与W5100连接,软件部分着重对网络控制器的4个独立端口编程,实现以太网数据快速收发功能.本接口设计可直接应用于工业数据采集系统开发.
【总页数】4页(P55-58)
【作者】王广维;张浩然
【作者单位】浙江师范大学,数理与信息工程学院,浙江,金华,321004;浙江师范大学,数理与信息工程学院,浙江,金华,321004
【正文语种】中文
【中图分类】TP311
【相关文献】
1.基于ARM和Linux嵌入式平台的故障录波器通信接口设计 [J], 王晓兰;朱烜伟
2.基于ARM的嵌入式以太网通信的实现 [J], 段海龙;彭辉俊;程健
3.基于ARM920T的嵌入式GPS接口设计与实现 [J], 张雪峰;罗洪霞
4.基于ARM和LwIP的嵌入式以太网接口设计 [J], 向远明;胡健生
5.基于ARM的嵌入式系统中FLASH接口设计 [J], 赵苏宇
因版权原因,仅展示原文概要,查看原文内容请购买。
51单片机驱动W5100以太网接口芯片****************************************************************************** * @file W5100.c* 本文件包括5个部分:* 1. W5100初始化* 2. W5100的Socket初始化* 3. Socket连接* 如果Socket设置为TCP服务器模式,则调用Socket_Listen()函数,W5100处于侦听状态,直到远程客户端与它连接。
* 如果Socket设置为TCP客户端模式,则调用Socket_Connect()函数,* 每调用一次Socket_Connect(s)函数,产生一次连接,* 如果连接不成功,则产生超时中断,然后可以再调用该函数进行连接。
* 如果Socket设置为UDP模式,则调用Socket_UDP函数* 4. Socket数据接收和发送* 5. W5100中断处理** 置W5100为服务器模式的调用过程:W5100_Init()-->Socket_Init(s)-->Socket_Listen(s),设置过程即完成,等待客户端的连接。
* 置W5100为客户端模式的调用过程:W5100_Init()-->Socket_Init(s)-->Socket_Connect(s),设置过程即完成,并与远程服务器连接。
* 置W5100为UDP模式的调用过程:W5100_Init()-->Socket_Init(s)-->Socket_UDP(s),设置过程即完成,可以与远程主机UDP通信。
** W5100产生的连接成功、终止连接、接收数据、发送数据、超时等事件,都可以从中断状态中获得。
****************************************************************************** */#include"W5100.h" /* 定义W5100的寄存器地址、状态*/#include"REG51.h"typedef unsigned char SOCKET;sbit SPI_CS= P1^0;sbit SPI_SCK= P1^1;sbit SPI_SO= P1^2;sbit SPI_SI= P1^3;sbit SPI_EN= P1^4;sbit KEY= P1^5;/* 端口数据缓冲区*/unsigned char Rx_Buffer[20]; /* 端口接收数据缓冲区*/unsigned char Tx_Buffer[20]; /* 端口发送数据缓冲区*//* 网络参数寄存器*/unsigned char Gateway_IP[4]={192,168,2,254}; /* Gateway IP Address */unsigned char Sub_Mask[4]={255,255,255,0}; /* Subnet Mask */unsigned char Phy_Addr[6]={0x00,0x08,0xDC,0x01,0x02,0x03}; /* Physical Address */ unsigned char IP_Addr[4]={192,168,2,1}; /* Loacal IP Address */unsigned char S0_Port[2]={0x13,0x88}; /* Socket0 Port number 5000 */unsigned char S0_DIP[4]={192,168,2,43}; /* Socket0 Destination IP Address */ unsigned char S0_DPort[2]={0x13,0x88}; /* Socket0 Destination Port number 5000*/ unsigned char S0_State=0; /* Socket0 state recorder */unsigned char S0_Data; /* Socket0 receive data and transmit OK */unsigned char W5100_Interrupt;/* UDP Destionation IP address and Port number */unsigned char UDP_DIPR[4];unsigned char UDP_DPORT[2];void Delay(unsigned int x){unsigned int i;for(i=0;i<x;i++){SPI_EN=1;}}unsigned char SPI_ReadByte(void){unsigned char i,rByte=0;for(i=0;i<8;i++){rByte<<=1;rByte|=SPI_SO;SPI_SCK=0;Delay(10);SPI_SCK=1;SPI_SCK=0;}return rByte;}void SPI_SendByte(unsigned char dt){unsigned char i;for(i=0;i<8;i++){if((dt<<i)&0x80){SPI_SI=1;}else{SPI_SI=0;}SPI_SCK=0;Delay(10);SPI_SCK=1;SPI_SCK=0;}}unsigned char Read_W5100(unsigned short addr){unsigned char i;/* 置W5100的CS为低电平*/SPI_CS=0;/* 发送读命令*/SPI_SendByte(0x0f);/* 发送地址*/SPI_SendByte(addr/256);SPI_SendByte(addr);/* 读取数据*/i=SPI_ReadByte();/* 置W5100的CS为高电平*/SPI_CS=1;return i;}void Write_W5100(unsigned short addr, unsigned char dat){/* 置W5100的CS为低电平*/SPI_CS=0;Delay(100);/* 发送写命令*/SPI_SendByte(0xf0);/* 发送地址*/SPI_SendByte(addr/256);SPI_SendByte(addr);/* 写入数据*/SPI_SendByte(dat);Delay(100);/* 置W5100的CS为高电平*/SPI_CS=1;}void W5100_Init(void){unsigned char i;SPI_EN=1;SPI_SCK=0;SPI_CS=1;SPI_SO=1;Write_W5100(W5100_MODE,MODE_RST); /*软复位W5100*/ Delay(100);///Write_W5100(W5100_MODE,0); /*软复位W5100*/Delay(100); /*延时100ms,自己定义该函数*//*设置网关(Gateway)的IP地址,4字节*//*使用网关可以使通信突破子网的局限,通过网关可以访问到其它子网或进入Internet*/ for(i=0;i<4;i++)Write_W5100(W5100_GAR+i,Gateway_IP); /*Gateway_IP为4字节unsigned char数组,自己定义*/for(i=0;i<4;i++)Gateway_IP=Read_W5100(W5100_GAR+i);/*设置子网掩码(MASK)值,4字节。
子网掩码用于子网运算*/for(i=0;i<4;i++)Write_W5100(W5100_SUBR+i,Sub_Mask); /*SUB_MASK为4字节unsigned char数组,自己定义*//*设置物理地址,6字节,用于唯一标识网络设备的物理地址值该地址值需要到IEEE申请,按照OUI的规定,前3个字节为厂商代码,后三个字节为产品序号如果自己定义物理地址,注意第一个字节必须为偶数*/for(i=0;i<6;i++)Write_W5100(W5100_SHAR+i,Phy_Addr); /*PHY_ADDR6字节unsigned char数组,自己定义*//*设置本机的IP地址,4个字节注意,网关IP必须与本机IP属于同一个子网,否则本机将无法找到网关*/for(i=0;i<4;i++)Write_W5100(W5100_SIPR+i,IP_Addr); /*IP_ADDR为4字节unsigned char数组,自己定义*/ /*设置发送缓冲区和接收缓冲区的大小,参考W5100数据手册*/Write_W5100(W5100_RMSR,0x55); /*Socket Rx memory size=2k*/Write_W5100(W5100_TMSR,0x55); /*Socket Tx mempry size=2k*//* 设置重试时间,默认为2000(200ms) */Write_W5100(W5100_RTR,0x07);Write_W5100(W5100_RTR+1,0xd0);/* 设置重试次数,默认为8次*/Write_W5100(W5100_RCR,8);/* 启动中断,参考W5100数据手册确定自己需要的中断类型IMR_CONFLICT是IP地址冲突异常中断IMR_UNREACH是UDP通信时,地址无法到达的异常中断其它是Socket事件中断,根据需要添加*/Write_W5100(W5100_IMR,(IMR_CONFLICT|IMR_UNREACH|IMR_S0_INT));}unsigned char Detect_Gateway(void){unsigned char i;Write_W5100((W5100_S0_MR),S_MR_TCP); /*设置socket0为TCP模式*/Write_W5100((W5100_S0_CR),S_CR_OPEN); /*打开socket0*/if(Read_W5100(W5100_S0_SSR)!=S_SSR_INIT){Write_W5100((W5100_S0_CR),S_CR_CLOSE); /*打开不成功,关闭Socket,然后返回*/ return FALSE;/*检查网关及获取网关的物理地址*/for(i=0;i<4;i++)Write_W5100((W5100_S0_DIPR+i),IP_Addr+1); /*向目的地址寄存器写入与本机IP不同的IP 值*/Write_W5100((W5100_S0_CR),S_CR_CONNECT); /*打开socket0的TCP连接*/Delay(20); /* 延时20ms */i=Read_W5100(W5100_S0_DHAR); /*读取目的主机的物理地址,该地址就是网关地址*/ Write_W5100((W5100_S0_CR),S_CR_CLOSE); /*关闭socket0*/if(i==0xff){/**********没有找到网关服务器,或没有与网关服务器成功连接***********//********** 自己添加处理代码***********/return FALSE;}return TRUE;}void Socket_Init(SOCKET s){unsigned int i;/*设置分片长度,参考W5100数据手册,该值可以不修改*/Write_W5100((W5100_S0_MSS+s*0x100),0x00); /*最大分片字节数=16*/Write_W5100((W5100_S0_MSS+s*0x100+1),0x10);/* Set Socket Port number */switch(s){case 0:Write_W5100(W5100_S0_PORT,S0_Port[0]); /* Set Local Socket Port number */Write_W5100(W5100_S0_PORT+1,S0_Port[1]);Write_W5100(W5100_S0_DPORT,S0_DPort[0]); /* Set Destination port number */Write_W5100(W5100_S0_DPORT+1,S0_DPort[1]);for(i=0;i<4;i++)Write_W5100(W5100_S0_DIPR+i,S0_DIP); /* Set Destination IP Address */break;case 1:break;case 2:break;case 3:break;default:break;}}* @brief 设置Socket为客户端与远程服务器连接*当本机Socket工作在客户端模式时,引用该程序,与远程服务器建立连接**如果启动连接后出现超时中断,则与服务器连接失败,需要重新调用该程序连接*该程序每调用一次,就与服务器产生一次连接**/unsigned char Socket_Connect(SOCKET s){Write_W5100((W5100_S0_MR+s*0x100), S_MR_TCP); /*设置socket为TCP模式*/Write_W5100((W5100_S0_CR+s*0x100), S_CR_OPEN); /*打开Socket*/if(Read_W5100(W5100_S0_SSR+s*0x100)!=S_SSR_INIT){Write_W5100(W5100_S0_CR+s*0x100,S_CR_CLOSE); /*打开不成功,关闭Socket,然后返回*/return FALSE;}Write_W5100((W5100_S0_CR+s*0x100),S_CR_CONNECT); /*设置Socket为Connect模式*/ return TRUE;/*至此完成了Socket的打开连接工作,至于它是否与远程服务器建立连接,则需要等待Socket中断,以判断Socket的连接是否成功。