tag 标签: w5200

相关博文
  • 热度 33
    2015-5-6 14:24
    2615 次阅读|
    0 个评论
    在使用 W5200 和 W5500 的 TCP 通信过程中,有一个非常容易被问到的问题: (这里以 W5200 为例) W5200 作为服务器,假如客户端的网线断开   或   瞬间停电,服务器该怎样判断? 那么当客户端由于这些原因忽然断开,该怎样解决? 今天给大家介绍解决以上问题的办法,即如何使用 Keepalive 。 什么是 Keepalive ? Keepalive 即心跳检测,以下简称 KA ,之所以称之为心跳检测是因为它像心跳一样每隔一段时间发一次,以此来告诉对方自己是否存活。心跳检测用于 TCP 通讯过程中服务器检测客户端是处于长时间空闲(在线)还是已经断开,一般采用客户端定时发送简单的通讯包,一般是很小的包或者空包给服务器( W5200 的心跳包为 1 字节),如果在指定时间内没有收到该心跳包,则服务器会判断客户端已经断开,此时程序中的 Socket 状态机会转到 SOCKET_CLOSED 并重新打开 Socket 去连接服务器 / 监听客户端。 KeepAlive 怎么分类?        KA 根据发出方不同可以分为两种,一种是由客户端发给服务器的心跳包,一种是服务器发给客户端的心跳包,选择哪一种方式需要看哪一方实现起来方便合理。需要注意的是, W5200 根据合理的设计,其心跳包需要在 Socket TCP 连接建立之后,服务器和客户端至少进行一次数据交互,且在设定的时间内没有数据交互时发出。 W5200 KA 程序说明        下面我以 W5200 的 TCP Server 官方例程为例,用 PC 建立 TCP 客户端来连接 W5200 ,说明 KA 的实现方法。 定义和初始化部分: 程序中用到了定时器和中断函数,在 w5200_config.c 中做了定义:   void Timer_Configuration(void) {   TIM_TimeBaseInitTypeDef   TIM_TimeBaseStructure;   RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);   TIM_TimeBaseStructure.TIM_Period = 1000;             TIM_TimeBaseStructure.TIM_Prescaler = 0;         TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;       TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;   TIM_TimeBaseInit(TIM2, TIM_TimeBaseStructure);     TIM_PrescalerConfig(TIM2, 71, TIM_PSCReloadMode_Immediate);     TIM_Cmd(TIM2, ENABLE);   TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); void Timer2_ISR(void) {   ms++;                                                                   // 等待时间自增,单位为 ms   if((ms % 1000)==0)                                               // 当等待时间增加到某一秒   {     if(ka_tick_flag==1)ka_no_data_tick++;                  // 若 KA 定时器标志位为 1 ,无数据传输 时间计时器自增     if(ka_no_data_tick=NO_DATA_PERIOD)                  {    ka_send_tick++;                                // 当无数据传输时间计时器值大于 NO_DATA_PERIOD , KA 发送定时器开始自增     if(ka_send_tick=KA_SEND_PERIOD)       {         ka_sen       d_flag=1;                            / / 当 KA 发送定时器的大于 KA_SEND_PERIOD , KA 发送标志位置 1 ,发送一个 KA 包       }     }         printf(".");                             // 当时间没到整秒,发一个“ . ”   } }   在主程序中进行初始化: Timer_Configuration();                       // 定时器初始化 NVIC_Configuration();                        // 中断函数初始化   程序中定义了 ka_tick_flag ( KA 定时器开始计时标志位)、 ka_send_flag ( KA 发送标志位)、 ka_no_data_tick ( KA 无数据传输时间计时器)以及 ka_send_tick ( KA 发送定时器)。在 w5200_config.c 中对以上定义进行了初始化: uint32 ka_no_data_tick=0;                                   // 定义无数据传输时间计时器 uint8 ka_tick_flag=0;                                            // 定义 KA 定时器开始计时标志位 uint32 ka_send_tick=0;                                         // 定义 KA 发送定时器 uint8 ka_send_flag=0;                                           // 定义 KA 发送标志位 主循环部分: 当程序烧录后,按 Reset 键重启 W5200 后服务器打开一个 Socket ,此时 Socket 由 SOCK_CLOSED 变为 SOCK_INIT 并处于监听状态。 PC 建立客户端成功连接 W5200 后, Socket 处于 SOCK_ESTABLISHED ,下面是程序具体的操作过程:   case SOCK_ESTABLISHED:                                                        // Socket 处于连接建立状态 if(getSn_IR(0) Sn_IR_CON)          {            setSn_IR(0, Sn_IR_CON);                                             // Sn_IR 的第 0 位置 1            ka_tick_flag=0;                                                            // KA 定时器开始计时标志位清零 继续阅读: http://www.iwiznet.cn/blog/?p=7124  
  • 热度 31
    2015-3-31 15:51
    918 次阅读|
    0 个评论
      项目描述   佛罗里达大学学生 Miles Moody 使用WIZnet W5200以太网插板及Arduino Nano剖析了来自一个当地网页服务的HTML代码,并讲述了他每天带着公交车实时GPS坐标仪上学的经历:   正如下图所示,系统告知公交车还离车站多远。黄灯亮时,主人就跑到车站及时赶上了公交车。 这是一个非常好的例子,是让我们生活变得更便捷的好点子。 更多详细内容,请访问作者博客: http://randomhacksofboredom.blogspot.kr/2010/04/most-useful-mess-of-wires-gps-bus.html   感谢阅读: WIZnet中文官方网站:http://www.iwiznet.cn WIZnet官方微博:http://weibo.com/wiznet2012 WIZnet微信号:iWIZnet
  • 热度 35
    2014-3-14 10:16
    1075 次阅读|
    0 个评论
    2013年 10月,WIZnet北京办公室 联合 第九单片机开发网,在中国大陆地区 发起了 2013年首届”WIZnet”杯以太网技术设计竞赛,竞赛作品需基于WIZnet W5100、W5200和W5500这三款产品完成,并分为 方案设计类设计实现类 两类比赛进行,方案设计类无需提交代码,只需要概念实现;设计实现类需要代码等完整实现。经过5个月的时间,共超过100组选手参赛,最终评选出12部获奖作品: 方案设计类: 一等奖 : 作品名称:《基于W5500的智能楼宇控制》 作者:温韬 简介:本基于W5500的智能楼宇控制方案采用现场总线技术FCS(Fieldbus Control System,现场总线控制系统),同时结合智能楼宇先进控制系统以及该W5500芯片,设计出更加智能化的楼宇控制系统。 链接:http://www.9mcu.com/9mcubbs/foru … 1411extra=page%3D1 二等奖 : 1) 作品名称:《基于W5200的网络时间服务器设计》 , 作者:王烽 简介:本设计采用了基于ARM架构的控制器STM32F103RBT6作为硬件控制核心,配合时间源模块和单片网络接口芯片W5200,来完成NTP的百兆网络时间服务器的设计方案。 链接:http://www.9mcu.com/9mcubbs/foru … 2134extra=page%3D1 2) 作品名称:《基于W5200的包裹寄存系统》, 作者:丁鹏飞 简介:基于W5200的小区包裹寄存系统利用WIZnet公司先进的智能网关芯片W5200以及一套密码生成与识别系统设计的一种具有快递寄存、快递识别、远程快递签收、密码验证自取快递、电子计费等功能的具有很强实用性的快递寄存系统。 链接:http://www.9mcu.com/9mcubbs/foru … 2121extra=page%3D1 三等奖 : 1) 作品名称:《基于W5200车辆主动安全系统》, 作者:陈合山 简介:本系统主要是基于W5200的远程控制功能,在脑电波检测系统和视频监控系统,检测判断出驾驶员的驾车状态,在必要条件下经过远程控制车辆的车载电脑系统,远程接管汽车,避免车祸的发生。 链接:http://www.9mcu.com/9mcubbs/foru … 2135extra=page%3D1 2) 作品名称:《基于W5500的”SMART DORM”》, 作者:王其 简介:系统的设计基于“IOT”的思想,以互联网为媒介,借助Wiznet公司的单片网络接口芯片W5500,主要有自动和手动模式,自动模式分为三个情景进门、起床、离开,本设计创新性的加入了防火防盗功能,可以通过微博、微信进行报警触发。手动模式分为室内语言控制和远程监控、控制模式,语音控制包括三种情景模式:homework mode、sleep mode和normal mode。本系统可扩展性强,未来可以加入更多有趣实用智能的功能,如人体健康监控等。 链接:http://www.9mcu.com/9mcubbs/foru … 2138extra=page%3D1 3) 作品名称:《以太网接口点钞数据采集》, 作者:王礼 简介:点钞数据采集器主要是应用于银行安防系统,获取点钞机点钞数据,将获取到的数据通过视频叠加处理器。将当前客户在柜台的点钞数目实时的叠加到监控系统中,为以后纠纷的解决提供强有力的证据。要获取点钞机数据,绝对不能改变点钞机的硬件,经分析论证,从点钞机的外显获取数据是最好的方法. 点钞机主控芯片选择新唐M058SSAN,同时选择EPM240T100C5处理逻辑电路。采用W5500以太网控制器。 链接: http://www.9mcu.com/9mcubbs/foru … 2029extra=page%3D1 设计实现类: 一等奖 : 作品名称:《基于W5500计算机远程控制防盗系统》, 作者:文平、姜博、张易、郭洵 简介:本作品以W5500网络芯片和增强型8051内核单片机STC15F2K60S2为核心,设计了基于W5500以太网控制芯片的计算机远程控制防盗系统。 我们可以将此用在展览的展台,家庭保险箱等重要物品保存领域。通过网络,使得客户可以远程监控物品。通过扩展,系统在物品被盗的时候还可以自动拨打网络电话110。 链接:http://www.9mcu.com/9mcubbs/foru … 2126extra=page%3D1 二等奖 : 1)作品名称:《基于W5200远程智能交通灯系统》, 作者:唐茂、肖华汉、陈林森、吴辉杭 简介:本系统基于IAP15F2K61S2单片机和W5200以太网控制芯片来实现。W5200循环监听是否有控制信息从远端控制台发送,保证单片机上的交通灯模块的显示一直与远端控制台的交通灯显示模块的显示完全相同。实现了远程控制的即时性。 链接:http://www.9mcu.com/9mcubbs/foru … 2136extra=page%3D1 2)作品名称:《运用物联网实现远程用电管理》, 作者:吴汉清 简介:本作品能够通过乐联网远程对用户(比如学生宿舍)的用电情况进行监控。 主要功能: 1、对用电功率和用电量进行监测,可以通过手机或电脑查看。 2、通过手机或电脑远程对电源进行开关控制。 3、进一步可通过乐联网的设置实现定时开关电源、超功率、超用电量自动断电等功能。 系统组成: Arduino mega2560 R3 开发板;Arduino Ethernet W5100 网络扩展板;电子式电能表;固态继电器;小电路板 链接: http://www.9mcu.com/9mcubbs/foru … 2144extra=page%3D1 3)作品名称:《基于乐连网水质监测数据管理单元》, 作者:张波、王鹏、游赟周 简介:我们采用电极采集数据的方法,将采集到的信号传送到控制器中,再由控制器将数据发送到人机界面和通过W5500以太网芯片上传到乐联网平台。在整个系统中包含了MCU控制器、人机界面、数据采集设备和电源设备等组成。 链接:http://www.9mcu.com/9mcubbs/foru … 2132extra=page%3D1 三等奖 : 1)作品名称:《饮水机局域网预约系统的研制》, 作者:丁宁 简介:本次设计并实现了一套饮水机智能化预约式烧水系统,在局域网内各用户可以预约烧水、查询水是否煮开,实现了高效、节能、健康的理念。饮水机包括ARDUINO单片机系统、W5100芯片等,构成了下位机系统,负责接收并答复用户指令;用户的iOS上位机,包括iPhone、iPad等,负责发送指令并接收下位机反馈信息。饮水机以及用户iPhone、iPad等都接入同一个局域网,以UDP方式交互数据。 链接:http://www.9mcu.com/9mcubbs/foru … 2124extra=page%3D1 2)作品名称:《基于W5500的环境信息监测系统》, 作者:陈超航、武佳良、胡翔宇 简介:W5500EVB(包含有STM32单片机)+DHT11温湿度传感器+GY-30光照传感器+路由器+Yeelink网络平台,通过上述连接,轻松实现手机客户端、PC机实时监测环境信息。 链接:http://www.9mcu.com/9mcubbs/foru … 2143extra=page%3D1 籍WIZnet “Connect the Magic” 2014年全球设计挑战赛启幕,竞赛中的优秀作品主题希望给你带来更多思路,欢迎更多交流! 更多信息:http://www.9mcu.com/9mcubbs/foru … playfid=508page=1
  • 热度 27
    2013-12-24 13:47
    1068 次阅读|
    0 个评论
      Souliss 在三层结构上构建一个完整的网络,带有分布式逻辑和功能的节点,所有节点可以对等交换数据,不需要中心节点协调逻辑与通信。主要用C来编写,可以很容易的移植到任何微控制器和编译器,然而也可以直接用Arduino IDE来编译,并支持AVR(ATmega)平台 。如果你已经有一个兼容板,你可以任用一个 样例。 KMP 电子提出DINo II, 带有 WIZnet W5200的Arduino Leonardo兼容继电器板. DINo II 只需要在WIZnet库中小改动一下,就可以从W5100移到新的W5200上,如此Souliss(支持Android)会有充分电量供给DINo 更多信息: http://www.souliss.net/2013/11/the-new-dino-is-now-available.html   更多WIZnet动态,请关注WIZnet官方微博: http://weibo.com/WIZnet2012
  • 热度 22
    2013-12-17 17:44
    7153 次阅读|
    0 个评论
    说明,移植例程为我按照这个教程移植的例程,测试通过。工程模板为我经常使用的一个w5500模板,可以在里面直接添加文件编程。 将driver文件夹中W5500文件夹和所有.c文件复制到工程/source文件夹下,并覆盖原来的文件,删除W5200文件夹 2. 将driver/include文件夹中W5500文件夹和所有.h头文件复制到工程/include文件夹下,并覆盖原来的文件,删除W5200文件夹 3. 打开原来工程文件,删除工程目录/W5200下md5,socket,SPI2,w5200四个文件,在此目录下添加刚拷贝的source/W5500中对应的四个文件。 删除工程目录下util文件,在此目录下添加source中的at24c16.c, device.c, mcu_init.c, socketutil.c, util.c文件,其他的dhcp和dns文件如有需要自行添加。 4. 在IAR环境下打开main.c文件,使用工作栏(IAR上方)中Edit-Find and Replace-Replace进行字符更换,先将w5200替换为w5500,点击replace all即可,再将W5200替换为W5500。如果其他文件中有引用原来w5200.h,请自行查找替换,这里只是举例。 5. 打开main.c文件,如果在原来文件中有定义mac、gateway、ip、subnet的地址,可以删去,在新的驱动的device.c中的Set_default函数中集中做了定义,以前的可以删去。 6. 打开main.c文件,删去原来定义的GPIO、NVIC、RCC配置函数,在新的驱动的mcu_init.c中已经集中做了定义,可直接引用。 7. 在main()函数中,添加Systick_Iinit(72);函数,新驱动中延时使用systick计时,这里要做初始化配置,否则delay的相关函数不能使用。 8. 在main.c中,在函数WIZ_Config()中调用Set_default();函数,对W5500的ip等信息进行定义。 9. 在原来w5200的驱动中send()函数比现在的驱动多一个形参,所以在程序调用send函数的地方,去掉最后一个形参。 10. 至此驱动移植完成,请rebuild工程,如果有错误,不会是底层的问题了,请根据程序做相应声明修改就可以了。 By  Allen 程序参考:http://pan.baidu.com/s/15WTdG 感谢阅读! 更多信息请关注WIZnet官方博客: http://weibo.com/wiznet2012