tag 标签: w5100e01-avr

相关博文
  • 热度 17
    2013-5-30 10:48
    902 次阅读|
    0 个评论
    W5100E01-AVR是为AVR开发者提供的W5100评估板。今天给大家继续介绍W5100E01-AVR演示手册的第二部分! 9)  若 W5100E01-AVR  显 示 信 息 已 是 所 要 设 置 的 信 息 , 则 跳 过 以 下 W5100E01-AVR 设置步骤,直接进入 11)演示步骤。 10) W5100E01-AVR 设置步骤 注意事项: a)    输入不区分英文大小写; b)    在发送框中输入信息,敲击回车只是表示发送,不能代表命令输入。若想表示 命令输入,须在所发信息后加上回车符号的十六位进制表示“0d0x”,支持回 格键修改; c)    在输入框输入信息,敲击回车则表示命令输入,无需在填入“0d0x”。另外, 在输入框中每输入一个字符都代表字符已经发送,故不支持回格键修改。 设置步骤 重启 W5100E01-AVR,当 Terminal 中显示如下时,输入“m”或“M”(7 秒钟 之内)。进入 W5100E01-AVR 的配置模式。 i.       在输入框输入 1  进入网络设置(Network Config)页 各个设置菜单功能: 默认的出厂设置为: 例如:修改 Source IP Address 在输入框中输入 1,进入 Source IP Address 配置模式,在输入框中输入想要设 定的参数,如:192.168.11.50  。 在输入框中按级输入“e”,退出配置模式,查看是否设置成功。 设置成功! ii.       在输入框输入 2  进入信道设置(Channel Config)页 各个设置菜单功能: 信道的工作方式设置: 工作方式配置菜单: 默认的出厂设置为: 例如:设置 1st Channel 为 TCP Loopback Client (Port 4000) 在 1st Channel 配置界面的输入框中输入 2: 在输入框中接着输入想要设定的端口值 4000: 在输入框中按级输入“e”退出设置,查看是否设置成功。 设置成功! iii.       在输入框中输入 5 进入 Web Server 模式 注意: a)    IE 浏览器的内置默认端口号为 80,故若已经在配置模式中将端口号设置 为 80,则直接在 IE 浏览器中输入 W5100E01-AVR 的 IP 地址(缺省为:192.168.0.2)就可以进入片内 Web 页进行配置。 b)   若在配置模式中没有将端口号设置为 80,而是其他值(比如:100),则 要想进入片内 Web 页进行配置则需输入 W5100E01-AVR 的 IP 地址和端 口号。(如:http://192.168.0.2:100) Web Server 模式 11) 设置完成后按级输入“E”退出 W5100E01-AVR 设置 12) 打开传递测试程序 AX1 (按上述 W5100E01-AVR 设置方法,将 W5100E01-AVR 的 1st  Channel 设为 TCP Loopback Server (Port 4000))IP:192.168.11.50) a)     进入 TCP 选项卡 b)     点击 Connect 连接,  输入 W5100E01-AVR 的 IP 地址以及端口号 c)      链接成功后,点击 CPUTICK 同步计算机与 W5100E01-AVR 时钟。 d)      点击 File 选项卡,选择要传输的测试文件。 e)    点击∞进入 Loopback 循环传输。 注:这里是 W5100E01-AVR 将电脑传输给的数据再传输回去,故实际传输速 度应为显示传输速度的 2 倍。 5.  演示完成祝您使用愉快! 感谢您的阅读!   与我们更多交流: WIZnet邮箱:wiznetbj@wiznettechnology.com WIZnet中文主页:http://www.iwiznet.cn WIZnet中文博客:http://blog.iwiznet.cn WIZnet企业微博:http://e.weibo.com/wiznet2012
  • 热度 21
    2013-5-29 16:19
    1092 次阅读|
    0 个评论
    W5100E01-AVR是为AVR开发者提供的W5100评估板。本文给大家介绍一下如何使用W5100E01-AVR,为您提供简单快速的方法。 1. 产品介绍  特点 -  使用了 Atmega128 (8MHz)数据传输速度高于 6Mbps。 -  通过使用外部 96 引脚连接件, AVRrsquos  的所有引脚都能使用。 -  有效的 SPI 接口测试程序。 -  提供各种应用程序源代码 Loopback, Webserver, Ping -  支持 ISP JTAG  接口。 规格 开发环境 -所有源代码是由 GCC 编译器编译的。 - ISP 电缆固件编程 内容 2. 演示软件 串口控制设置软件:  Terminal 传递测试程序:           AX1         3. 工作过程图 注:切记需将用户机与 W5100E01-AVR 须连接到同一网段内才能实现通信。 4. 演示过程 1)  正确的使用线材将 W5100E01-AVR 与用户机连接(参考工作过程图)。 a)   使用串口电缆/串口转 USB 电缆将用户机与 W5100E01-AVR 串行借口连接; b)   使用 UTP 电缆(网线)将 AP 与 W5100E01-AVR 的 RJ-45 网口连接; c)    用户机使用 UTP 电缆(网线)与 AP 相连。用户机与 W5100E01-AVR 连接到同一台 AP 上才能实现通信; d)   将电源适配器接到 W5100E01-AVR 的电源借口上,并接通电源; 2)  若使用了串口转 USB 线材需要安装相关驱动(详见驱动光盘)。 3)  成功安装线材驱动,打开设备管理器查看串口信息。 4)   打开串口配置软件—- Terminal 。查看 Terminal  端口信息,尤其注意Terminal 端口号与设备管理器中显示的相同。其他信息(波特率,数据位, 停止位,奇偶校验,流量控制)都可以从 Terminal 直接配置。 注:若 Terminal 未能成功的读取串口       a)    检查是否重复打开 Terminal 程序,或者检查是否有其他程序占用串口。若没              有则执行下一步;       b)    点击 ReScan  重新扫描;若还是无法成功读取串口则执行下一步;      c)    关闭 Terminal,修改设备管理器中串口的端口号(不能修改成已使用的端口), 确定之后,重启Terminal 程序,点击 ReScan  重新扫描端口。 d)    若还是未能读取串口,关闭 Terminal,拔下串口线,再重新插入,修改设备管 理器中串口的端口号(不能修改成已使用的端口),确定之后,重启 Terminal。 5)  成功读取端口后,使用 Terminal 程序配置串口信息如下: 6)  点击 Connect 建立串口通信链接。 7)   查看本机 IP 地址信息  DOS 命令查看 a)    点击运行,输入 cmd,启动 dos 命令控制程序 b)    输入“ ipconfig –all ”查看本机 IP 信息。 网络邻居查看 a)    右击网络邻居图标,点击属性。 b)      选中 Internet  协议版本 4  (TCP/IPv4),点击属性。 c)   进入 IP 属性配置页面后,查看信息,若想了解更高级信息,点击高级。 d)   进入 IP 高级配置页面,可以添加不同的网段。 8)  重启 W5100E01-AVR,查看 Terminal 中显示信息。 下篇继续~ 感谢阅读!   更多与我们交流: WIZnet邮箱:wiznetbj@wiznettechnology.com WIZnet中文主页:http://www.iwiznet.cn WIZnet中文博客:http://blog.iwiznet.cn WIZnet企业微博:http://e.weibo.com/wiznet2012
  • 热度 19
    2012-8-31 10:06
    1001 次阅读|
    0 个评论
      W5100E01-AVR是为AVR开发者提供的W5100评估板。本文是W5100E01-AVR的用户手册,希望对大家有所帮助。今天我们介绍最后一部分: 第七部分在这里:W5100E01-AVR是什么?怎么用?(六)(用户手册V1.0版) http://blog.iwiznet.cn/?p=811   4. 硬件设计向导 4.1 方块图 图4‑1: 评估板方块图 4.2 模块描述 评估板由W5100E01-AVR(EVB底板)和PM-A1(AVR模块)组成。 以下9个块组成了评估板。 -PM-A1 -字符LCD(LCD) -PAL -SRAM -RS232端口 -扩充板接口 -功率调节器 -用于系统复位的3.3V电源 4.2.1. PM-A1 ................阅读全文请进入这里: W5100E01-AVR是什么?怎么用?(八)(用户手册V1.0版) http://blog.iwiznet.cn/?p=840   更多有关W5100的博文请看这里: http://blog.iwiznet.cn/?page_id=329 全硬件TCP/IP嵌入式以太网控制器——W5100E01-AVR http://blog.iwiznet.cn/?p=432 开源硬件-开源思潮到了? http://blog.iwiznet.cn/?p=316 WIZnet员工Richard培训笔记: WIZnet核心技术和产品对比 http://blog.iwiznet.cn/?p=29   也可进入我们的官方网站或博客查看更多。 如果您对WIZnet的产品或是技术感兴趣,请随时与我们联系。 可以直接留言或登录WIZnet官方网站:http://www.iwiznet.cn 公司微博是: http://weibo.com/wiznet2012 公司博客是:http://blog.iwiznet.cn/  
  • 热度 26
    2012-8-30 09:28
    972 次阅读|
    0 个评论
      W5100E01-AVR是为AVR开发者提供的W5100评估板。本文是W5100E01-AVR的用户手册,希望对大家有所帮助。今天我们接着前天的博文继续介绍: 第六部分在这里:W5100E01-AVR是什么?怎么用?(六)(用户手册V1.0版) http://blog.iwiznet.cn/?p=811   3.2.6.6.6 DNS客户端 在介绍DNS客户端设置之前,让我们简要的看一下DNS(域名系统)。 DNS系统用于将因特网域名转换成因特网IP地址,反之亦然。DNS由域名服务器和域名解析模块组成,域名服务器包含IP地址与域名之间的映射图,域名解析模块通过给域名服务器传输查询接收查询结果。 域名解析模块查询转换成本地域名服务器的IP地址或域名。本地域名服务器通过搜索DB(数据库)接收查询,并响应解析模块。如果域名解析模块找不到需要的信息,本地域名服务器就将接收到的查询发送给上一级域名服务器,接收到的响应就可以发送给域名解析模块。 如图3.33所示,DNS查询与DNS响应信息在域名解析系统和域名服务器之间的传送包括5部分,如图3.34所示。 Header部分包含固定12字节长度,其他4部分的长度是可变的。除了Header和Question部分,Answer、Authority和Additional部分被称为资源记录(RRs)。每一个Header、Question和RRs都有不同的格式。 DNS信息的Header部分保存信息类型、DNS查询类型和可变长度部分的统计信息。 在图3.35:Header部分格式中,当DNS信息是域名解析器到域名服务器的请求,QR字段值为0;反之,QR字段得值为1。当DNS信息为查询域名IP地址时,Opcode字段值为0;当它查询域名服务器状态时,Opcode字段值为2。 QDCOUNT、ANCOUNT、NSCOUNT与ARCOUNT字段统计可变长度的信息、由Question部分组成的代表区块数、Answer、Authority以及additional部分。组成Question部分的块如图3.36:Question部分格式所示,组成Answer、Authority和Additional部分的块如图3.37所示。 举例来说,如果QDCOUNT是1,ANCOUNT是0,NSCOUNT是10,ARCOUNT是10,那么组成Question部分的块如图3.36:Question部分格式所示。Answer、Authority和Additional部分由10块组成,如图3.37所示。 图3.37的NAME字段、图3.36的QNAME字段与RDDATA字段也可以得到可变长度。QNAME与NAME字段是可变长度字段,组成的格式和他们处理的每一个字段如图3.36所示。RDDATA可变长度字段和进程使用RDLENGTH字段的数据长度。 想了解更多,参见RFC1034和RFC1035。 DNS信息由表3-38所定义的数据类型操作,参见“inet/dns.h”。 如图3.33所示,DNS查询与DNS响应信息在域名解析系统和域名服务器之间的传送包括5部分,如图3.34所示。 域名解析模块基于gethostbyaddr()函数和gethostbyname()函数运作。gethostbyaddr()函数负责将因特网IP地址转换成因特网域名,gethostbyname()的功能正好相反。gethostbyaddr()函数和gethostbyname()函数测试域名服务器IP地址的设置和搜索W5100连接域名服务器所需信道。如果W5100的闲置信道存在,gethostbyaddr()函数和gethostbyname()函数用‘BYNAME’或‘BYIP’元素调用dns_query()。 更多gethostbyaddr() 函数和gethostbyname()函数的例子,参见3.2.5.3.章——Ping请求程序。 实际与域名服务器的连接是通过dns_query()函数执行的,gethostbyaddr()函数和gethostbyname()函数只负责报告dns_query()函数的结果。 dns_query()函数用于初始化域名服务器间的工作缓存区并基于‘BYNAME’和‘BYIP’查询类型创建Question部分的QNAME。如果查询类型是‘BYNAME’,那么当使用IP地址查询域名时,域名可以当成QNAME使用而不需要转换。 当查询类型是‘BYIP’时,那么当使用IP地址查询域名时,需要将IP地址转换成IP地址字符串,并在改变的IP地址字符串添加“in-addr.arpa”后使用QNAME。创建完QNAME后,需要为域名服务器间的工作创建UDP Socket,并通过调用dns_make_query()函数创建DNS请求信息。如果DNS请求信息被成功创建,就通过UDP Socket发送给域名服务器。发送完DNS请求信息后,它就接收DNS响应信息或等待,直到等待时间结束。 如果在等待期间从域名服务器接收到DNS响应信息,就使用dns_parse_response()函数分析接收到的DNS响应信息,dns_query()函数会基于查询类型返回IP地址或域名。 图3.39是dns_query()函数的流程图。 图3‑39: dns_query()函数 图3‑40: dns_makequery()函数 dns_makequery()函数创建需要发送给域名服务器的DNS请求信息。因为DNS请求信息只能通过Header和Question部分查询,dns_makequery()函数不需要创建RRs部分。如果你在dns_makequery()函数中查看Header部分,首先它将ID字段值与在域名服务期间工作的信息设置相同,这里ID设置成0x1122。为进一步实现域名服务器间的工作,ID值加1。QR、Opcode、AA、TC和RD字段通过MAKE_FLAG0()函数分别设置成QR_QUERY、OP_QUERY/OP_IQUERY、0、0、1,RA、Z和RCODE字段通过MAKE_FLAG1()函数分别设置成0、0、0。 因为count字段中,QDCOUNT、ANCOUNT、NSCOUNT和ARCOUNT都只有一个question,因此分别设置成1、0、0、0。 让我们来看一下Question部分,QNAME字段用于设置IP地址字符串。域名和IP地址字符串由1 byte的标签和最大可达63 byte的标签组成。为了识别QNAME的可变长度,QNAME字段通常以0作为结尾。图3.41所示是QNAME字段中,域名为www.wiznet.co.kr的实际传输例子。 因为count字段中,QDCOUNT、ANCOUNT、NSCOUNT和ARCOUNT都只有一个question,因此分别设置成1、0、0、0。 让我们来看一下Question部分,QNAME字段用于设置IP地址字符串。域名和IP地址字符串由1 byte的标签和最大可达63 byte的标签组成。为了识别QNAME的可变长度,QNAME字段通常以0作为结尾。图3.41所示是QNAME字段中,域名为www.wiznet.co.kr的实际传输例子。 Question部分的QTYPE字段需要设置成‘TYPE_PTR’,当它保存的域名认为是QNAME时,它的IP地址设置成‘TYPE_A’时,因为它包含在网络中,因此QCLASS字段需要设置成‘CLASS_IN’。 表3-41 是在QTYPE QCLASS字段使用的常量定义。 图3‑42: dns_parse_response()函数 图3.42 所示的dns_parse_response()函数分析了通过域名服务器接收的响应信息。dns_parse_response()函数检查发送给域名服务器的ID与响应信息的ID是否相同,它也检测接收到的响应信息是否为通过检查Header部分的QR字段的响应信息。如果接收到的信息是域名服务器的响应,改变的成功与否决定于检查Header部分的RCODE字段。 表3-42所示为RCODE字段使用的常量定义。 如果RCODE是RC_NO_ERROR,可变长度部分,例如Question、Answer、Authority和Additional部分被解析,因为在Answer部分设置了必要信息被分析和处理,而其他部分没有。如果你需要Authority和Additional部分的信息,你可以通过自己很轻松的获取。 Question部分通过调用dns_parse_question()函数处理Header部分的次数与QDCOUNT一样。Answer部分通过调用dns_parse_question()函数处理部分的次数与ANCOUNT一样多。 图3‑43: dns_parse_question()函数和dns_answer()函数 dns_parse_question()函数分析和处理Question部分。在DNS请求信息的Question部分并没有实际的信息,但是它必须被处理以获取Answer部分的开始位置。因为Question 部分的QNAME字段得到可变长度,parse_name()函数跳过了处理QNAME字段可变长度的过程、QTYPE和QCLASS字段。dns_answer()函数分析和处理Answer部分。Answer部分在转换确实产生作用时,在Answer部分的TYPE字段执行适当的程序。Answer部分的TYPE字段只有一种值,而不是来自TYPE_A 或TYPE_PTR,如表3-41 : QTYPE QCLASS字段的常量定义所示。如果域名变成IP地址,它可以从TYPE中得到改变的IP地址,域名可以从TYPE_PTR中获取,改变的域名或IP地址也可以通过parse_name()函数加工和提取。 图3‑44: parse_name()函数 parse_name()函数处理Question部分的QNAME字段或RRs部分的NAME、RDDATA字段。QNAME、NAME、RDDATA字段大多数的组成如图3.41:Question 部分的QNAME 字段传输实例所示,但是,它可以被压缩从而减少DNS信息的大小。压缩方法为2字节压缩,如果第1个字节——高字节的2位是‘11’,这就描述标签被压缩了。它包含第1个字节的偏移量,除了高字节的2位和第2个字节。这个偏移量是DNS信息的偏移量,表示从DNS信息的起点到标签存放位置的实际偏移量。如果压缩方案尝试重新使用已经在DNS信息中使用过的域名,就需要间接设置在DNS信息中的相关域名偏移量。图3.45所示为DNS信息压缩方案和应用实例。 图3.45的压缩方案实例是为了防止“F.ISI.ARPA”、“FOO.F.ISI.ARPA”、“ARPA”和ROOT. “F.ISI.ARPA” 没有压缩的情况下,在图3.41:Question部分的QNAME字段传输实例的格式中产生20的偏移量。在“FOO.F.ISI.ARPA,”中,因为剩下的除了“FOO”,都和先前处理的Name字段一样。“FOO”在没有压缩的情况下的处理流程如图3.41:Question部分的QNAME字段传输实例所示格式,剩下的名称做位移26处理。ROOT是最高级的域名,它使用0的Label Length字段处理。parse_name()函数在分析Name字段之前,检测Label Length Byte的高字节2位是否为11。如果是‘11’,相关Label就分析DNS信息中Lable所在的偏移量;如果不存在,Label的分析和处理过程如图3.41:Question部分的QNAME字段传输实例所示。 这是本文的第七部分内容,剩余的内容我们将会在今后的博文介绍,希望对大家有所帮助。欢迎大家的留言讨论。 更多有关W5100的博文请看这里: http://blog.iwiznet.cn/?page_id=329 全硬件TCP/IP嵌入式以太网控制器——W5100E01-AVR http://blog.iwiznet.cn/?p=432 开源硬件-开源思潮到了? http://blog.iwiznet.cn/?p=316 WIZnet员工Richard培训笔记: WIZnet核心技术和产品对比 http://blog.iwiznet.cn/?p=29 也可进入我们的官方网站或博客查看更多。 如果您对WIZnet的产品或是技术感兴趣,请随时与我们联系。 可以直接留言或登录WIZnet官方网站:http://www.iwiznet.cn 公司微博是: http://weibo.com/wiznet2012 公司博客是:http://blog.iwiznet.cn/
  • 热度 18
    2012-8-29 09:56
    1015 次阅读|
    0 个评论
      W5100E01-AVR是为AVR开发者提供的W5100评估板。本文是W5100E01-AVR的用户手册,希望对大家有所帮助。今天我们接着前天的博文继续介绍: 第一部分在这里:W5100E01-AVR是什么?怎么用?(用户手册V1.0版) http://blog.iwiznet.cn/?p=663 第二部分在这里:W5100E01-AVR是什么?怎么用?(二)(用户手册V1.0版) http://blog.iwiznet.cn/?p=696 第三部分在这里:W5100E01-AVR是什么?怎么用?(三)(用户手册V1.0版) http://blog.iwiznet.cn/?p=719 第四部分在这里:W5100E01-AVR是什么?怎么用?(四)(用户手册V1.0版) http://blog.iwiznet.cn/?p=736 第五部分在这里:W5100E01-AVR是什么?怎么用?(五)(用户手册V1.0版) http://blog.iwiznet.cn/?p=765   表3-34所示为在“inet/dhcp.h”中定义成枚举数据类型,显示了许多DHCP客户端程序普遍使用的Option代码段。 其他没有在表3-34定义的代码段在DHCP客户端程序中跳过。 DHCP客户端程序的操作在评估板’s main()函数执行,参见图3.3。 第一,在初始化阶段设置DHCP客户端使用的MAC地址,MAC地址时网络中唯一标识设备的地址,是网络通信中最基本的地址,用于在DHCP服务器中识别DHCP客户。对于DHCP客户端程序的MAC地址,使用评估板的MAC地址设置DHCP客户的全局变量SRC_MAC_ADDR。在设置完SRC_MAC_ADDR后,通过调用init_dhcp_client()函数可以对从DHCP服务器接收的IP进行收集时,注册两个函数,防止DHCP服务器端的IP地址更新。 当调用init_dhcp_client()函数时,如果每个函数未指定,DHCP客户端程序的set_DHCP_network()函数和proc_ip_conflict()函数分别被调用。 当更新网络信息或发生IP冲突,注册evb_soft_reset()函数来自动重置评估板。 第二,可以通过getIP_DHCPS()函数获取网络信息。 getIP_DHCPS()函数使用setIP(),setMACAddr()等函数初始化W5100,并初始化DHCP客户端程序的‘dhcp_state’的变量状态为‘STATE_DHCP_DISCOVER’。 初始化结束后,它调用send_DHCP_DISCOVER()函数发送DHCP DISCOVERY消息给DHCP服务器。 发送DHCP DISCOVERY消息后,通过调用reset_DHCP_time()函数初始化定时器为才DHCP服务器端接收的网络信息中的租约期限,并使用set_timer() 函数将‘DHCP定时器’时间间隔设为1秒。在初始化DHCP_Timeout为0后,等待接收从DHCP服务器端的DHCP信息,并将DHCP_Timeout定义为‘DHCP_WAIT_TIME’与‘MAX_DHCP_RETRY’定义的时间。在等待‘DHCP_WAIT_TIME MAX_DHCP_RETRY’时间中,它会检测dhcp_state是否通过check_DHCP_state()函数改为STATE_DHCP_LEASED状态。 STATE_DHCP_LEASED状态代表网络信息,并意味着getIP_DHCP()函数成功执行。如果在等待接收‘DHCP_WAIT_TIME MAX_DHCP_RETRY’的过程中没有从DHCP服务器获取网络信息,调用check_DHCP_state()函数将DHCP_Timeout改为1,。当DHCP_Timeout等于1时,getIP_DHCPS()函数在释放DHCP计时器后返回失败信息。 当无法从DHCP服务器获取网络信息时,评估板使用默认网络信息或先前获取的网络信息进行网络配置。 表3-35所示为定义的状态、超时和重新连接DHCP客户端。 在getIP_DHCP()函数中,‘DHCP_XID’是可变的,可用于设置DHCP信息的xid字段,如图3.26:DHCP信息格式所示。它的值必需是唯一的,而且在网络信息中规定的租约期限内它值不变。这里DHCP_XID与‘0x12345678’固定,但建议使用随机值。 当初始化W5100与DHCP服务器进行通信时,建议设置源IP地址为‘0.0.0.0.’你可以使用任何IP地址设置W5100的源IP地址,但是使用‘0.0.0.0’会更好,因为‘0.0.0.0’相当于IPv4的A类地址,它是一个无效的IP地址,实际上并不使用。因此,它不可能与其他网络产生冲突。 对于DHCP服务器发送的UDP广播封包,注意DHCP信息的MSB的Flag字段必须设置成1,参见图3.19:DHCP信息格式 表3-36是设置Flag字段的部分代码。 第三,从DHCP服务器获取的网络信息管理可以通过check_DHCP_state()函数执行,图3.30所示为在check_DHCP_state()中改变DHCP客户端状态的DHCP信息流。 check_DHCP_state()函数检测是否有从DHCP服务器传来DHCP信息。它接收和分析DHCP信息。根据DHCP信息的类型,如果DHCP信息可接收,他再DHCP客户端状态改变后进入下一个状态显示DHCP信息流,如图3.30所示。 check_DHCP_state()函数的每一个进程都对应一个DHCP客户端状态,如图3.31所示。如果我们简要看一下在check_DHCP_state()函数中的DHCP_STATE_LEASED状态,我们会发现从DHCP服务器接收的租约期限是有限的。因此,当经过租约期限的一半后,check_DHCP_state()函数就擦送DHCP_REQEUST消息给DHCP服务器,并在服务器返回IP地址后变成DHCP_STATE_REREQUEST状态。因为它持续给服务器发送DHCP_REQUEST消息,因此网络信息得以持续。 图3‑32: parse_DHCPMSG()函数与check_DHCP_Timeout()函数 parseDHCPMSG()函数负责接收DHCP服务器的DHCP信息,管理DHCP信息及保存网络信息。当执行check_DHCP_state()函数时,如果在DHCP_WAIT_TIME时间内没有接收到DHCP信息,或接收到的不是期望的DHCP信息,就重新发送DHCP信息给DHCP服务器。如果重新发送DHCP信息的重复次数达到MAX_DHCP_RETRY,check_DHCP_state()函数就在它初始化所有变量尝试连接DHCP服务器和DHCP客户后,发送DHCP_DISCOVER消息给DHCP服务器。   这是本文的第六部分内容,后面的内容我们将会在今后的博文一一介绍,希望对大家有所帮助。欢迎大家的留言讨论。   更多有关W5100的博文请看这里: http://blog.iwiznet.cn/?page_id=329 全硬件TCP/IP嵌入式以太网控制器——W5100E01-AVR http://blog.iwiznet.cn/?p=432 开源硬件-开源思潮到了? http://blog.iwiznet.cn/?p=316 WIZnet员工Richard培训笔记: WIZnet核心技术和产品对比 http://blog.iwiznet.cn/?p=29   也可进入我们的官方网站或博客查看更多。 如果您对WIZnet的产品或是技术感兴趣,请随时与我们联系。 可以直接留言或登录WIZnet官方网站:http://www.iwiznet.cn 公司微博是: http://weibo.com/wiznet2012 公司博客是:http://blog.iwiznet.cn/