tag 标签: 以太网控制器

相关博文
  • 热度 20
    2015-7-20 23:27
    1674 次阅读|
    0 个评论
            物联网的兴起让以太网控制器芯片充斥着市场,也让攻城师们在选型的时候多了更多的选择,而更多的是困惑,因为在这个市场上有譬如像TI(德州仪器,包括收购的NS国半),MICROCHIP(微芯,包括收购的SMSC史恩希和MICREL麦瑞),SILABS(芯科),MAXIM(美信),CIRRUS LOGIC(思睿逻辑)等国际品牌,也有像WIZnet(微知纳特),REALTEK(瑞昱),DAVICOM(联杰),ASIX(亚信),ICPLUS(九阳)等离我们很近的知名品牌,而且每个品牌都会有众多的产品系列可供选择,为了能让攻城师们在众多的型号中找到适合自己项目应用的,性价比又比较高的产品,我们对各大品牌的经典型号做了如下的梳理和对比,可以让我们更为直观和快速的方便的查询理想的结果。       首先我们对各大品牌单颗经典型号就技术指标进行对比如下:       接着我们对以太网控制器代表型号就性能指标测试对比如下:       为什么要说是代表型号呢?就以太网控制器市场而言,存在着硬件协议栈和软件协议栈之分,W5500和ENC28J60目前已是市场上比较普遍的两种以太网接入方案,这两种方案也可以说是硬件协议栈和软件协议栈的典型代表,都经历了很长时间的市场考验。除了在传统单片机的以太网接入中被广泛使用,也能看到他们在开源硬件的以太网扩展以及物联网应用等方面发挥的重要作用。 表中已经在协议实现方式、接口、功耗等关键功能参数上,做出了对比,这里给补充一下:代码量也是工程技术中需要考虑的一个重要因素,代码量的大小对单片机的FLASH大小及工作效率直接提出要求。小编特意测试了一下,用STM32f103VET6型号单片机为参考,其闪存为512KB,代码库采用3.5版本,实测ENC28J60和W5500作为TCP Server同样使用Keil4编译环境下生成的HEX文件进行比对,前者的代码量将近190KB,而后者的代码量不到60KB,这点也体现出硬件协议栈采用硬件逻辑门电路实现TCP/IP协议的优势。根据以上对比数据,W5500的确在很多环节较ENC28J60有明显的优势,当然ENC28J60价格的确要低一点,这就主要取决产品在研发的时候是更看重器件的简单易用和性能,还是更看重产品的价格而自己花时间去琢磨软件协议栈。         最后在以太网控制器的应用市场,也充满着各种各样的应用,根据自己的项目需求,站在宏观和全局的层面上和角度上,选择适合自己的器件产品来完成想要的功能,这才是智慧和聪明的选择,因为选择大于努力,选择也有可能决定成败。
  • 热度 24
    2014-10-28 10:38
    1455 次阅读|
    0 个评论
    之前的博文中已经介绍过W5500EVB 在TCP模式下的两种(Server及Client)数据传输的实现过程,那么传输控制协议中,UDP也是非常常用的,这种无连接的协议在更多场合为用户提供了便捷,比如发电子邮件,QQ聊天发收消息等…好,那今天就学习一下,UDP模式在W5500EVB上的简单实现。 一 实验硬件及其连接 二 UDP实验相关知识 W5500是一款全硬件TCP/IP嵌入式以太网控制器,为嵌入式系统提供了更加简易的互联网连接方案。W5500集成了TCP/IP协议栈,10/100M以太网数据链路层(MAC)及物理层(PHY),用户无需特别关注TCP 和 UDP的实现过程,只需最好相应配置和查询工作即可。下面主要讲解TCP和UDP区别,供参考 1 基于连接与无连接 TCP—传输控制协议提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。 每个数据包的传输过程是:先建立链路、数据传输、然后清除链路。数据包不包含目的地址。受端和发端不但顺序一致,而且内容相同。它的可靠性高。 UDP—用户数据报协议是面向无连接的,每个数据包都有完整的源、目的地址及分组编号,各自在网络中独立传输,传输中不管其顺序,数据到达收端后再进行排序组装,遇有丢失、差错和失序等情况,通过请求重发来解决。它的效率比较高,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。 2、对系统资源的要求(TCP较多,UDP少) 3、UDP程序结构较简单 4、流模式与数据报模式 5、TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证 6、TCP是面可靠的字节流服务 ,UDP 并不提供对 IP协议的可靠机制、流控制以及错误恢复功能等 下图为TCP 和UDP应用 三 关键程序介绍 3.1编译工具为IAR5.4 3.2 1-5 UDP实验例程实现功能: 以UDP模式不断向 目标 IP地址 和端口 发送数据 test:ecountr,同时若收到 目标IP发来信息,将信息copy回复。本例中用网线直接和PC机相连接。PC机ip作为 目标ip ,注意PC机的IP与EVB IP处于同一网段内。 3.3 实验函数流程: Step 1 :初始化STM32时钟 GPIO USART 等 Step2: 初始化SPI 和W5500 Step3: 配置MAC地址 本机IP地址 子网掩码 默认网关等信息,配置完后再读取以上信息,并打印到串口 Step4:初始化8 个socket Step5 :实时读取socket 0状态,如果是socket 0是关闭的,则打开socket 0 作为UDP端口。如果读取 socket 0为UDP模式则向 目标 IP地址 和端口 发送数据 test:ecountr,同时若收到 目标IP发来信息,将信息copy回复。 3.4 部分子程序讲解 uint8 getSn_SR(SOCKET s)//获取SOCKET s状态 { return IINCHIP_READ(Sn_SR(s)); } /*W5500 SPI 通信协议的实现 W5500 SPI数据帧 有三种 依次为数据段 控制段 和数据段 */ uint8 IINCHIP_READ(uint32 addrbsb) { uint8 data = 0; IINCHIP_ISR_DISABLE();    //关闭中断 IINCHIP_CSoff();       // CS=0, SPI使能片选 IINCHIP_SpiSendData( (addrbsb 0x00FF0000)16);// 写入地址段高8位 Address byte 1 IINCHIP_SpiSendData( (addrbsb 0x0000FF00) 8);// 写入地址段低8位Address byte 2 IINCHIP_SpiSendData( (addrbsb 0x000000F8))    ;// 以读模式写入控制段 data = IINCHIP_SpiSendData(0×00);  // 写入数据段 /*SPI主从接口相当于一个循环串行移位寄存器,主机(STM32)发送数据 0×00,从机(W5500)就会接手0×00,并移数据到主机当中,该函数返回值就是读的数据*/ IINCHIP_CSon();      // CS=1,  SPI end  失能片选 IINCHIP_ISR_ENABLE();       // 打开关中断 return data; } Sn_SR(s)函数原型为  (0×000308 + (ch5)) 为目的是获取socket s的状态寄存器地址,类似函数还有很多,主要是获取寄存器绝对地址 其中0×0003为socket n的状态寄存器 16位偏移地址,就是SPI通信的地址段 08 + (ch5) 为控制段,指出偏移地址的归属,读写模式和 SPI工作模式 ,08 = 00001000 SPI 控制段: 继续阅读:http://www.iwiznet.cn/blog/?p=6519
  • 热度 22
    2014-1-3 17:26
    1130 次阅读|
    0 个评论
    今天我们要介绍主要内容是让设备自己发微博,不需像之前发微博的饮水机那样还需要电脑辅助;也就是说如何实现给饮水机一根网线就能让她发微博。工欲善其事,必先利其器。 我们先来看一下开发环境。开发板如图1所示。 图1.W5500开发板 USB线示例 1. 开发板基本情况 a) 单片机:STM32F103RC,256K字节Flash,48K字节SRAM,2K字节EEPROM b) 以太网控制器:W5500,SPI接口与单片机相连 c) 电源:USB供电 2. 开发工具: IAR for ARM v5.41,这是我们工程所使用的版本。如果使用不同版本的IAR,请对STM的库稍作调整。 3. 其他 a) 新浪微博用户名和密码;如若没有,就赶快给你的设备申请一个吧! b) 一根Mini接口的USB线,如图3所示。 c) 一根网线。 d) STM32芯片的串口程序烧录工具,STM官方提供的程序名为:Flash Loader Demo,运行界面如图2所示。 图2. 程序烧录工具运行界面 熟悉完了开发环境,我们就来看一下具体的代码实现。全部代码请下载附件。 CODE: SELECT ALL 1  #include "w5500/socket.h" 2  #include "w5500/w5500.h"    #include stdio.h    #include string.h 3  #define SOCK_WEIBO      2                     //the socket number is used for weibo; it can be a number between 0~7 4  #define WEIBO_SERVER    "61.109.255.136"      //weibo server IP address string 5  #define HTTP_PATH       "/wiznet/"            //HTTP path 6  #define WEIBO_ID        "xxxx@xxxx.xxx"   //your sina weibo ID 7  #define WEIBO_PWD       "******"             //your sina weibo password    char tmp_buf ={0x00,};                        //a temp buffer to store weibo content and HTTP header    unsigned char post_weibo(char* weibo)    { 8   unsigned char weibo_server_ip = {61,109,255,136};    //Weibo server IP address 9   static unsigned int any_local_port = 1000;              //TCP socket local port nubmer 10 char post_data ={0x00,};                             //weibo content (140 characters, but one Chinese character will be 2 Bytes!) + ID Password information. If your sina weibo ID Password are too long, please define a bigger buffer      unsigned char ret=0;      unsigned int len=0; 11 if(socket(SOCK_WEIBO,Sn_MR_TCP,any_local_port++,0)!=1)  //to initialize a TCP socket     {       printf("Socket initialization failed.\r\n");       return 0;     }     else     { 12  ret=connect(SOCK_WEIBO,weibo_server_ip,80);       //connect to the weibo server, default TCP port is 80       if(ret!=1)       {         printf("Connect Weibo server failed.\r\n");         return 0;       }       else       { 13  while(getSn_SR(SOCK_WEIBO)!=SOCK_ESTABLISHED);  //wait for the TCP connection established!       printf("Connected with Weibo server.\r\n"); 14  sprintf(post_data,"id=%spw=%scmd=updatestatus=%s",(char*)WEIBO_ID,(char*)WEIBO_PWD,weibo); 15  sprintf(tmp_buf,"POST %s HTTP/1.1\r\nHost: %s\r\nUser-Agent: w5500\r\nContent-Type: application/x-www-form-urlencoded; charset=gb2312\r\nContent-Length: %d\r\n\r\n%s",(char*)HTTP_PATH,(char*)WEIBO_SERVER,strlen(post_data),post_data); 16  len=send(SOCK_WEIBO,(unsigned char*)tmp_buf,strlen(tmp_buf)); //upload your weibo content       while(1)       { 17        len=getSn_RX_RSR(SOCK_WEIBO);         if(len0)         {           memset(tmp_buf,0x00,512); 18  len=recv(SOCK_WEIBO, (unsigned char*)tmp_buf, len);       //receive the return result from weibo server       char* p=strstr(tmp_buf,(char*)"\r\n\r\n")+4;              //get http payload without http header: return value       printf("%s\r\n",p); 19  disconnect(SOCK_WEIBO);     //disconnect with weibo server 20  close(SOCK_WEIBO);          //close the socket 21  return 1;                   //sucess! return 1         }       }     }   } } 我们从头看起,第1,2行,把W5500的库和Socket库文件引用过来。第3~7行为宏定义部分,第3行是给微博选一个Socket,鉴于W5500共有8个Socket可以同时通信,这里随便选取一个没有用到的Socket就可以了,这里选的是2。 第4、5行定义的是要访问的服务器地址和具体的HTTP路径,请不要更改! 第6、7行是你设备的新浪微博用户名和密码,请注意,我们仅支持新浪的微博!这里要填写正确的新浪微博用户名和密码,否则无法发送。 另外请放心,我们绝不会在后台保存你设备的微博密码!       第8行还是要连接的服务器IP地址,放到了一个数组里面;第9行为该Socket定义了一个本地端口号,这个数值0~65535中任取。这里我们所采用的服务器接受HTTP格式提交的数据,第10行定义的数组就是为了临时保存该格式的微博内容;你也许会问,微博最多能够接受140个字符,为什么这里要定义一个385字节的数组呢?因为这个数组不仅要保存微博内容,还有微博的账号和密码,还有,如果微博内容是汉字的话,那么一个汉字将占用2个字节,一个全是汉字的微博最大的长度将是280个字节,因此,如微博账号和密码过长的话,请适当调整该数组长度。       下面就是Socket的操作了,第11行初始化一个Socket,接着12行对服务器发出连接请求,第13行一直等待连接的建立,与服务器成功建立连接后,第14、15行负责组建带有微博的HTTP数据包,第16行负责发送。        然后接收服务器返回,第17行是读取W5500接收到的数据长度,当该长度大于零时,第18行从W5500的接收缓存中把接收到的数据读到tmp_buf中,由于接收到的数据包含了HTTP头,接下来的一行是把HTTP头去掉,我们只关心服务器的返回结果。收到了服务器的返回,说明我们和服务器的通信是成功的!但是,通信虽然成功,但是微博并不一定是百分之百发出去的,请看一下服务器返回结果的类型,如表1所示。 表1. 服务器返回值说明 最后,第19行断开与服务器的连接,之后第20行关闭Socket。与服务器通信成功,第21行返回1。 好了,代码就这么多。赶快编译,烧到单片机里面,上电,看串口调试信息:255: ok。大功告成!登陆到微博看看,刚才写进程序里面的那句话果然出现在了微博上面,如下图所示。 怎么样,是不是很简单?整合到饮水机上是不是更强大了?赶快连接到自己的设备上试一下吧! 完整文章: http://blog.iwiznet.cn/?p=5945  
  • 热度 31
    2013-6-17 17:39
    939 次阅读|
    0 个评论
         WIZnet的W5200以太网PICtail™ (Plus)板通过板上的WIZnet W5200以太网控制器提供了10/100Mbps、半/全双工的以太网连接,这个控制器具有全硬件的TCP/IP处理引擎。       这个开发板同时拥有PICtail™ headers和PICtail™ Plus侧边缘连接器,便于插入Explorer 16(DM240001), PIC32 I/O扩展板(DM320002), PICDEM.net 2 (DM163024), PIC18 Explorer (DM183032),和其他支持的开发板。      这个开发板具有高速SPI接口, 拥有EUI-48™节点身份(MAC address)的2K EEPROM,和RJ-45连接器. 它同时也提供自动协商, 自动MDI/MDIX, 掉电模式和唤醒LAN功能。      WIZnet的W5200以太网PICtail™ (Plus)板在PIC18, PIC24, dsPIC和PIC32平台上同时支持微芯片软件TCP/IP协议栈和WIZnet硬件TCP/IP协议栈。硬件TCP/IP协议栈适合于简单的互联网连接,尤其是对于程序存储器较小的PIC,如PIC16。 特性 具有全硬件TCP/IP协议栈的WIZnet W5200高速SPI以太网控制器 磁性RJ-45连接器 拥有EUI-48™节点身份的微芯片2K SPI总线串行EEPROM 支持自动协商, 自动MDIX, 10Base-T/100Base-TX PICtail™和PICtail™ Plus子板连接接口 与多种具有PICtail™和PICtail™ Plus接口的开发板兼容,包括Explorer 16开发板, 多种PICDEM™板   更多信息请参考:http://www.wiznet.co.kr/microchip/ 您可以在MicrochipDIRECT (www.microchipdirect.com)上购买TWIZW5200开发板 或联系我们WIZnet北京: wiznetbj@wiznettechnology.com   感谢您的关注!
  • 热度 17
    2012-12-5 14:52
    770 次阅读|
    0 个评论
      —-WIZnet产品应用小例13:信用卡读卡器 当每次刷银联卡信用卡消费时,您是否对它的可靠性感到些许的忐忑不安呢?是否遇到POS机通信断路造成你犹豫是否再次刷卡的窘境呢?基于全硬件TCP/IP协议栈的网络芯片能将您的消费明细稳定、迅速地与网络服务器完成信息交互。另外,其TCP/IP协议栈使用硬件逻辑电路实现,有效杜绝了恶意代码的嵌入及DDOS洪流攻击,全面保障您的账户信息安全,真正做到让你快乐购物,消费无忧! 更多产品应用小例,参见WIZnet产品应用小例全系列(http://blog.iwiznet.cn/?cat=686) ——————————————————– WIZnet专注全硬件TCP/IP协议栈,面向嵌入式开发应用,为物联网发展助力!
相关资源
  • 所需E币: 4
    时间: 2022-1-6 09:31
    大小: 2.53MB
    上传者: ZHUANG
    基于uCLinux嵌入式系统的工业以太网控制器开发
  • 所需E币: 1
    时间: 2021-4-25 17:14
    大小: 300.57KB
    上传者: box520
    基于DSP的新型以太网控制器的应用
  • 所需E币: 1
    时间: 2021-4-13 20:09
    大小: 296.83KB
    上传者: ZHUANG
    基于DSP的新型以太网控制器的应用
  • 所需E币: 1
    时间: 2021-3-16 11:50
    大小: 296.83KB
    上传者: ZHUANG
    基于DSP的新型以太网控制器的应用
  • 所需E币: 0
    时间: 2021-3-10 20:03
    大小: 49.55KB
    上传者: czd886
    8位单片机与以太网控制器RTL8029接口的VHDL设计
  • 所需E币: 1
    时间: 2021-3-12 16:25
    大小: 300.57KB
    上传者: ZHUANG
    基于DSP的新型以太网控制器的应用
  • 所需E币: 5
    时间: 2019-12-26 00:28
    大小: 565.02KB
    上传者: 2iot
    CrystalLANCS8900A以太网控制器技术参考手册……
  • 所需E币: 3
    时间: 2019-12-25 16:30
    大小: 1.23MB
    上传者: 238112554_qq
    嵌入式入门笔记……
  • 所需E币: 4
    时间: 2020-1-6 11:09
    大小: 251.32KB
    上传者: 16245458_qq.com
    RTL8019AS_中文.pdfREALTEK8019as芯片资料翻译目录1,芯片特性2,芯片概述3,芯片管脚结构4,管脚描述4.1电源管脚4.2ISA总线接口管脚4.3存储器接口管脚4.4多媒体接口管脚4.5LED输出管脚5,寄存器描述5.1组1:NE2000寄存器5.1.1寄存器列表5.1.2寄存器功能5.1.2.1NE2000兼容寄存器5.1.2.2RTL8019AS自定义寄存器5.2组2:即插即用寄存器5.2.1纸牌控制寄存器5.2.2逻辑装置控制寄存器5.2.3逻辑装置配置寄存器6,操作说明6.1RTL8019AS结构模式6.2即插即用6.2.1初始化6.2.2隔离协议6.2.3即插即用隔离次序6.2.4阅读资源数据6.2.5pnp自动检测方式6.39436内容6.4BOOTROM6.5LED特征6.6回路特性操作6.6.1loopback操作6.6.2执行loopback测试7,电路规格和计时7.1绝对最大额度7.2数据通道特性7.3A.C计时特性1,……