基于STM32+W5500的UPnP协议应用

博客
来自:阿莫电子论坛 1. 概述 工具: PC  W5500EVB 路由器 串口调试工具 编译环境:Keil4 &IAR 功能:通过SNMP协议实现内网与外网的端口映射以及连接。PC连接路由器,PC和路由器在同一个网段。本文主要把路由器IP模拟为外网IP,W5500EVB的IP作为内网IP,从以下几个方面来验证此功能的可实施性。 TCP Server回环测试 UDP回环测试 外网设备发送指令控制W5500EVB上LED 2. UPnP协议即通用即插即用英文是Universal Plug and Play,缩写为UPnP,下面主要说一下基本的实现过程。 UPnP定义了设备之间、设备和控制点、控制点之间通信的协议。完整的UPnP有设备寻址、设备发现、设备描述、设备控制、事件通知和基于Html的描述等几部分构成。 1)寻址 首先寻址是通过控制点和设备取得网络地址的过程,控制点和设备都先获取IP地址后才能进行下一步的工作; 2 ) 发现 控制点首先要寻找整个网络上的UPnP设备,同时网络上的设备也要宣告自身的存在,本篇中W5500将作为控制点; 3 ) 描述 控制点要取得设备的描述,包括这些设备提供什么样的服务;控制点可以从发现消息中得到设备描述的URL,通过URL取回设备描述的信息; 4)控制 控制点发出动作信息给设备; 5)事件 控制点监听设备的状态,当状态改变时作出相应的处理动作; 在控制点发现设备和取得设备描述之后,展示也就开始了。具体的讲解内容大家可以在网上搜集资料学习。 3.操作过程 注意:本篇实例并没有真正在外网测试,是在一个内网中再搭建一个内网,相对最内层的网络来说,外面的一层是“外网”,但是并不违背端口映射的原理。W5500EVB通过网线连接到路由器,PC应该和路由器在同一网段内。 编译程序无误以后下载到开发板里,复位以后查看串口的打印信息如下。 在执行DHCP、SSDP、获得描述和设置事件后,如果正常则显示以上信息。之后打印一个菜单页面,大家可以根据提示选择相应的应用功能。如下图所示。 按照菜单提示,我们首先添加一个TCP端口映射,外网端口为是随意的,由于本人能力有限,内网端口为固定的5000,添加成功后会提示AddPortSuccess。那么是否真的添加成功了呢,我们可以查看路由器的端口映射表。添加成功以后可以看到如下图所示信息。 ID 1的信息就是成功映射后的端口信息。 成功以后可以选择5 TCP 回环测试来验证效果如何。 首先检查下路由器在外网中的IP地址,登陆路由器在 WAN口设置 项可以找到路由器IP地址为192.168.10.135,可见路由器的网段与W5500 EVB(IP地址是192.168.1.110)的网段不是一样的,这正是“外网”和内网的区别。 我们在与路由器同一网段的PC(IP地址是192.168.10.116)上建立TCP client,连接到路由器的12222端口,并发送测试字符串,在接收区看到收到了loopback的回复,如下图所示。端口映射成功! 在测试完添加端口映射后,我们可以按照菜单提示将刚才添加的端口删除掉,然后在PC上重新连接刚才删除的外网端口,会发现已经连接不上,这与预期结果相符。 UPnP 的应用范围非常大,可以实现许多现成的、新的及令人兴奋的方案,包括家庭自动化、打印、图片处理、音频 / 视频娱乐、厨房设备、汽车网络和公共集会场所的类似网络。它可以充分发挥 TCP/IP 和网络技术的功能,不但能对类似网络进行无缝连接,而且还能够控制网络设备及在它们之间传输信息。一个 UPnP 设备能够自动跟一个网络连接上、并自动获得一个 IP 地址、传送出自己的权能并获悉其它已经连接上的设备及其权能。最后,此设备能自动顺利地切断网络连接,并且不会引起意想不到的问题。   程序下载:http://pan.baidu.com/s/1B7BCM 感谢阅读! 更多WIZnet相关信息: WIZnet中文官方网站:http://www.iwiznet.cn WIZnet官方微博:http://weibo.com/wiznet2012 WIZnet公众平台二维码:
Read More

如何使用 WIZnet 开源硬件封装库

博客
“WIZnet Open-source Hardware Library”中直接集成了所有WIZnet系列芯片的原理图封装,PCB封装以及3D封装,大家可以在硬件设计时直接在我们的“WIZnet Open-source Hardware Library”中选用相应的芯片就可以,当前的库是基于Altium Designer,并提供使用指南,方便大家使用。 如何使用 WIZnet 开源硬件封装库 1, 双击库文件图标; 2, 点击“Install Library”; “WIZnet Open-source Hardware Library” 就会出现在Altium Designer的 “libraries” 窗口中; 3, 在这个库中选择器件,会看到相应的原理图和PCB封装; 4, 在PCB窗口中选择 “3d” 选项; 器件就会以3D 形式显示出来。   5, 例,如果在你硬件设计中需要使用W5500, 只需要选择并点击 “place W5500”选项, 就可以直接调用W5500。 封装库下载:http://pan.baidu.com/s/1nttAs7R  感谢阅读! 更多WIZnet相关信息: WIZnet中文官方网站:http://www.iwiznet.cn WIZnet官方微博:http://weibo.com/wiznet2012 WIZnet公众平台二维码:
Read More

网关模块WIZ550S2E用户指南(二)

博客
今天继续给大家介绍网关模块WIZ550S2E用户指南的下半部分,有关WIZ550S2E的详细介绍请参看网关模块WIZ550S2E用户指南(一),或者登陆Wizwiki查看相应产品。 B.网络配置部分   1、IP 这个功能用来建立WIZ550S2E模块的IP信息。 IP地址信息: IP: WIZ550S2E的IP 地址 Gateway:WIZ550S2E的网关地址 Subnet:WIZ550S2E的子网掩码 Host IP :远程主机IP 地址   2、Port Local Port:本地端口号,在WIZ550S2E中建立网络端口号。 Remote Port:远程端口,在远程装置上建立网络端口号。 3、Working Mode运行模式 WIZ550S2E支持TCP Client(TCP客户端)、TCP Server(TCP服务器)、TCP Mixed(TCP混合模式)以及UDP(广播模式)。 4、Timer计时器 Inactivity暂停:当这没有数据传输时,连接将会在指定的静止时间之后自动关闭。如果把默认值‘0’设置为静止时间,即使没有数据传输网络连接也在维持。关闭连接,你可以使用‘close’命令。当你有两个或以上的系统连接到WIZ550S2E模块时,这个功能就起了作用。当一个系统连接到WIZ550S2E时,其他的系统不能同时连接到这个模块。如果你把一个时间定义为暂停时间,在暂停时间过去之后其他的系统可以连接到这个模块。当服务器系统意外关闭时,暂停时间也可以被使用。在这种情况下,这里将不会有任何的数据通讯。在被定义的暂停时间过去之后,WIZ550S2E将会关闭连接并进入到等待状态。 Reconnection重连:连接重试间隔。(仅在客户端模式下)   C.串口配置部分 1、USART 用来配置串口信息: Baud Rate:配置WIZ550S2E的波特率为11520; Data Bits:配置WIZ550S2E的数据位为8; Parity:配置WIZ550S2E的校验位为NONE; Stop Bits:配置WIZ550S2E的停止位为1; Flow:配置WIZ550S2E的流控为NONE(RS232为例)。 2、AT Command AT命令使能选项,这个是定义在数据传输模式下是否可以通过串口输入特定退出字符从而退出数据透传模式回到指令模式。Enable,使生效;Trigger Code(in HEX)是定义退出字符的16进制ASCII值。例如,默认的退出字符为16进制的“2B、2B、2B”,那么在数据模式下连续发送“+++”半角字符,就可回到命令模式。若不勾选此项,则串口接收到任何字符也不会回到指令模式。 3、Packing Conditions打包情况 通常来讲,从UART接收的数据会被立即传送到以太网。但在很多情况下,客户想把整体作为一个大块来传送数据,就不必一个个地传送了。这个选项是把数据打包成一个帧。 Time:这个位置是用来指定时间值来判断是否一个帧完全被接收。在接收一个字节之后这个位置的时间设定是无效的,然后WIZ550S2E通知一个数据帧已经完成了,用串行缓冲区里的所有数据做一个以太网数据包并通过以太网把它发送到同级系统。如果WIZ550S2E在指定时间失效以前接收来自UART的另一个字节,它将重新启动计时器并把接收到的这个字节添加到串行数据缓冲区的尾部。(‘0’: 功能禁用) Size:这个位置是用来指定大小值来判断是否一个帧都被完全接收了。如果在这个位置的指定的大小被接收了,然后WIZ550S2E会通知一个数据帧完成了,用串行缓冲区里的指定大小的数据做一个以太网数据包并通过以太网把它发送到同级系统。(‘0’: 功能禁用) Char(in HEX)16进制分隔符:这个位置是用来指定分隔符值来判断是否一个帧都被完全接收了。如果在这个位置的指定的分隔符被接收了,然后WIZ550S2E会通知一个数据帧完成了,用串行缓冲区里所有的数据(包括分隔符)做一个以太网数据包并通过以太网把它发送到同级系统。   D.选择配置部分 1、Module Name模组名称。 2、Password加密 Setting Password设置密码:给配置工具加密,重新设置时需要键入,默认为“WIZnet”,可不设置密码; Connection Password连接密码:当WIZ550S2E做TCP服务器时,客户端为了连接它需要“连接口令”,客户端连上之后,一定要在三秒内从客户端给服务器发送“连接密码”,否则连接会自动关闭,出厂值为“WIZnet”,可不设置口令。 3、DHCP 选择是否使用DHCP,默认情况下DHCP模式是禁用的。 4、DNS 选择是否使用DNS,默认情况下DNS模式是禁用的。   2 使用Configuration Tool配置WIZ550S2E 2.1 配置WIZ550S2E为TCP Server及静态IP 1、正确连接模块,SW3置于“OFF”,在配置工具中点击“Search”搜索设备。此时搜索窗会出现WIZ550S2E的设备MAC信息,同时默认的IP、串口、密码、版本等信息也会显示在配置工具界面。   2、按需要修改服务器及客户端IP与端口信息、工作模式选“TCP Server”、串口设置信息、配置工具密码和连接密码等,此处以出厂设置信息为例,点击“Setting”--->输入配置工具密码“WIZnet”--->OK--->显示设置成功。     3、按一下SW1复位按钮,再点击“Search”发现设备,配置完成。 4、配置远程PC的IP,使之与WIZ550S2E在同一网段,此处以“192.168.11.101”为例。   5、在PC端建立TCP Client。输入TCP Server的IP地址和端口号,并进行连接,如下图显示连接成功后应在3秒内发送给服务器连接口令(此处以系统默认值“WIZnet”为例说明),实现数据传输。下图显示已经连接成功。 若未发送连接口令,则连接在3秒后自动关闭: (注:若在Configuration Tool中不设置连接口令,此处便不用发送连接口令。) 6、用串口配置工具配置并打开WIZ550S2E的串口,进行数据收发测试。 a.WIZ550S2E发送数据“Hello World!”给TCP Client   b.TCP Client接收到来自WIZ550S2E发送的数据“Hello World!” 3 使用AT命令配置WIZ550S2E 3.1 配置WIZ550S2E为TCP Server及静态IP 1、正确连接模块,SW3置于“OFF”。 2、用串口配置工具配置并打开串口,输入法置于半角模式,在命令框中连续输入“+++”,进入命令模式。回复[W,0] [S,0],“W”表示等待响应,“S”表示相应成功,数字“0”为系统网络接口号(0~n)。 3、配置WIZ550S2E为静态IP,命令为“AT+NSET=<DHCP>,<IP>,<SN>,<GW>”,DHCP的参数为“S”(静态IP)和“D”(动态IP),IP、SN、GW为设置WIZ550S2E的IP信息,此处可省略。回复[S]表示设置成功。另外下图介绍了如何在串口助手软件中发送AT命令。 可以通过“AT+NSTAT”命令查询状态,如下图,回复[S,,S,IP,SN,GW,DNS],第一个“S”表示设置成功,第二个“S”表示静态IP。 4、配置WIZ550S2E为TCP Server,端口号为6000,命令为“AT+NOPEN=<SocketType>,<SrcPort>,<DstIP>,<DstPort>”,“SocketType”Socket类型参数为“S”(TCP Server)、“C”(TCP Client)和“U”(UDP);“SrcPort”为本地端口号,“DstIP”和“DstPort”为目标IP和端口号,此处可省略。如下图,响应为[S,,0]设置成功,其中“0”为SockID。查询设置命令为“AT+NSOCK”查询Socket状态,回复[S,,S,6000]。其中第二个“S”表示运行在TCP Server模式,“6000”为本地端口号。 5、PC端建立TCP Client去连接WIZ550S2E,IP和Port均为WIZ550S2E的。下图表示连接成功。 此时串口会显示[V,0,0],其中“V”表示事件响应,第一个“0”为系统网络接口号,第二个“0”是事件代码表示已连接,即Socket从侦听状态转换到建立连接状态。 6、WIZ550S2E向TCP Client发数据。命令格式为“AT+NSEND=<SockID>,<size>,<DstIP>,<DstPort>”,其中“size”表示要发数据的字节数,“DstIP”和“DstPort”此处可省略,回复[W,0]表示等待Socket0发数据,当发送5个字节后系统回复[S,0]发送成功。 此时,TCP Client便可收到这5个字节: 7、同时,WIZ550S2E也能接收来自TCP Client的数据。例如,TCP Client发送“Hi”: 串口回复[R,0,2]和Hi,其中“R”为数据接受响应,“0”为SockID,“2”为接收的字节数。 8、中断TCP连接,命令为“AT+NCLOSE=SockID”,回复[W,0][S,0]关闭成功。 TCP Client显示连接关闭: 可以查询Socket连接状态,命令为“AT+NSOCK=SockID”,回复[S,,I]:  …
Read More

网关模块WIZ550S2E用户指南(一)

博客
WIZ550S2E是一个网关模块,基于以太网芯片W5500 & Cortex-M0内核,板载RJ45,排针引脚接口。同时提供W550S2E-RS232 I/F EVB,可以将RS-232协议转换成TCP/协议。模块基于以太网及TCP/IP,通过连接现有设备的RS-232串口,实现设备的远程测量及管理。换言说,WIZ550S2E是一个协议转换器,可以将TCP/IP数据类型通过串口设备传送出去,反之亦然。   1 概述 本文简单介绍了WIZ550S2E模块的结构、配置工具安装方法及使用方法,并且以RS232 EVB为例,给WIZ550S2E用户提供了两种配置方法,分别是配置工具Configuration Tool配置以及AT命令配置方法。 1.1 WIZ550S2E结构图 - MCU LPC11E36FHN33 - TCP/IP硬件协议栈芯片W5500 - RJ45以太网接口 1.2 RS232 I/F EVB结构图   - Factory Reset(SW2):长按5秒恢复出厂设置按钮 - Power LED(D1):电源指示灯 - Status1 LED(D2):状态指示灯1 - Status2 LED(D3):状态指示灯2 - System Reset(SW1):系统复位按钮 - HW-TRIG(SW4):硬件触发模式开关 1.3 RS485/422 I/F EVB结构图 - Factory Reset(SW2):长按5秒恢复出厂设置按钮 - Power LED(D1):电源指示灯 - Status1 LED(D2):状态指示灯1 - Status2 LED(D3):状态指示灯2 - System Reset(SW1):系统复位按钮 - Reserved Switch(SW4):预留开关 - HW-TRIG(SW3):硬件触发模式开关 1.4 接线说明 以RS232 I/F EVB为例,J3接5V直流电源,串口接PC串口,RJ45接PC网口,硬件触发开关SW3置于“OFF”。 2 软件介绍 2.1 Configuration Tool Ver 1.02下载安装 1)首先要设置软件运行环境,下载并安装Java JDK。 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2)下载Configuration Tool Ver 1.02。 http://wizwiki.net/wiki/doku.php?id=products:wiz550s2e:wiz550s2e_download   3)下载完成后免安装,直接打开。 2.2 Configuration Tool Ver 1.02介绍 Configuration Tool Ver 1.02界面如下图所示。   A.搜索窗 B.网络配置部分 C.串口配置部分 D.选择配置部分   A.搜索窗   1)Search搜寻 搜寻功能用来搜寻局域网中所有的存在模块。通过使用UDP 广播找到同一个子网上的所有模块,并且已经建立的装置将和它的MAC地址一起被列入“串口转以太网”树(搜索窗)上。 2)Setting设置 这个功能是来应用您的配置的。 当你从搜索窗选择MAC 地址,将会显示这个模块的默认值。修改您的配置,然后单击“设置”按钮来应用您的设备。模块将会重新初始化并保存更改配置。 您可以通过下列步骤修改您的配置: (1)在“搜索窗”里选择你想要修改的设备的MAC 地址。 (2)根据你的需要修改设备。 (3)单击“设置”按钮来应用您的设置。 (4)这个模块将在重启过程中被初始化 (5)请单击“搜索”按钮,查看新设置来检验你的设备。 注:每次改变设置后都需要点击设置按钮,再重新搜索设备。 3)F/W Uploading固件上传 固件将通过TFTP 上传。单击“F/W Uploading”按钮,然后弹出窗口下面内容。   (1)服务器IP: TFTP服务器IP (2)服务器端口:TFTP服务器端口(TFTP 默认端口:69) (3)文件名:固件文件名称 (4)密码 注:WIZ550S2E…
Read More

智能家居自动化(Android+Ethernet Internet+Arduino)

博客
家居自动化越来越受欢迎,吸引人之余也让大家买得起了。网络上提供了很多可以实现的想法,这都是之前未曾见的。在智能手机上展示给你的朋友:你可以离公寓几公里之外开关公寓里的灯,同时可以通过一个摄像头来控制开门。Cool! 步骤1:材料 带有Android+ Ethernet Internet + Arduino 的智能家居自动化 智能手机(Android 2.3系统) 线路以太网 + 路由器(我用的是 TP-link(TL-WR740N) Arduino Mega2560 或 Arduino Uno + W5100 插板(Ethernet) Led IP(可选) 步骤2:APP Invertor(一个完全在线开发的Android编程环境)(App通过网络控制Arduino)   首先,你需要创建一个app android,而后我使用了一个 app invertor 2 链接: http://ai2.appinventor.mit.edu/ 参考: https://www.youtube.com/watch?v=rwsKzyEpgoE (教程: AppEthernet - App inventor 2 / Channel: Android e Arduino) 如果你需要变为英文,下载 .aia 到我的工程中(因为我用的是葡萄牙语) http://www.mediafire.com/download/pbcepmryegczdpb/SmartHouseApp.aia(Project .aia) 在Andoid环境下,下载安装App: http://www.mediafire.com/download/v2yk79xk91eaw57/SmartHouseApp.apk   步骤3:下载例程到Arduino Mega -- 代码链接下载 你需要更改: byte ip[] = { 192, 168, 0, 00 }; // IP the arduino EthernetServer server(80); // Port acess 注意: 01 - 你需要 IDE 1.0.5 版本- 由于IRremote库的原因,代码不能在IDE 1.0.6下工作 02 - 页面每4秒钟会自动刷新一次,如果你需要更改: client.println('<'MET A HTTP-EQUIV='refresh' CONTENT='4; URL=http://seudominio.no-ip.org/'>"); 03 - 在 "SmartHomeAPP" 应用中,你需要改成一个 URL=http://seudominio.no-ip.org/' 04 - 更改你的LED IR 代码,来开/关你的电视或立体声音响 Lindo Download Sketch Arduino INO http://www.mediafire.com/view/v2y3ztk5uhex2ij/APP_ETHERNET_INVENTOR_WAKE.ino 如何创建一个 http://seudominio.no-ip.org/ 访问链接: https://www.youtube.com/watch?v=1FWGt5gnnYs orhttps://www.youtube.com/watch?v=ZPvvoEDjSww 步骤4:理解代码及主要特征 方法“Get”,用来给Arfduino发送变量,你可以看到如下代码: if (c == '\n') { if (readString.indexOf("lampada1") > 0) { digitalWrite(lampada1,!digitalRead(lampada1)); } //--------- send the…
Read More

Arduino Ethernet入门——构建简易的Web Server教程

博客
网络上关于Arduino Ethernet的教程不多,刚刚入门的伙伴们,先给大家提供一篇:官方Arduino Ethernet中文介绍,以便快速了解它的参数及用法。而后可以学习一下这篇构建简易Web Server教程。Arduino官方的以太网板采用的是WIZnet-W5100,而目前市场上也有很多结合最新的W5500的Arduino Ethernet板。如下例程都是适用的。 转自:Arduino中文社区 作者:奈何Col 本教程适用于使用WIZnet w5100/w5500的Arduino控制器。   程序一 这里我们使用Arduino Ethernet建立一个简单网页服务器,当Arduino服务器接收到浏览器访问请求时,即会发送响应消息,浏览器接收到响应消息,会将其中包含的HTML文本转换为网页显示出来。 这样就可以将传感器获取到的信息显示到网页上,每个在该网络范围内的计算机或其他移动设备,无论什么平台都可以通过网页浏览器了解到各传感器的数据。 /* OpenJumper WebServer Example 建立一个显示传感器信息的Arduino服务器 [url=http://www.openjumper.com/]http://www.openjumper.com/[/url] [url=http://x.openjumper.com/ethernet/]http://x.openjumper.com/ethernet/[/url] */ #include <SPI.h> #include <Ethernet.h> // 设定MAC地址、IP地址 // IP地址需要参考你的本地网络设置 byte mac[] = {   0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress ip(192,168,1,177); // 初始化Ethernet库 // HTTP默认端口为80 EthernetServer server(80); void setup() { // 初始化串口通信   Serial.begin(9600);   // 开始ethernet连接,并作为服务器初始化   Ethernet.begin(mac, ip);   server.begin();   Serial.print("server is at ");   Serial.println(Ethernet.localIP()); } void loop() {   // 监听客户端传来的数据   EthernetClient client = server.available();   if (client) {     Serial.println("new client");     // 一个Http请求结尾必须带有回车换行     boolean currentLineIsBlank = true;     while (client.connected()) {       if (client.available()) {         char c = client.read();         Serial.write(c);         // 如果收到空白行,说明http请求结束,并发送响应消息         if (c == '\n' && currentLineIsBlank) {           // 发送标准的HTTP响应           client.println("HTTP/1.1 200 OK");           client.println("Content-Type: text/html");           client.println("Connection: close");           client.println();           client.println("<!DOCTYPE HTML>");           client.println("<html>");           // 添加一个meta刷新标签, 浏览器会每5秒刷新一次           // 如果此处刷新频率设置过高,可能会出现网页的卡死的状况           client.println("<meta http-equiv=\"refresh\" content=\"5\">");           // 输出每个模拟口读到的值           for…
Read More

W3100A到W3150A+的移植笔记(二)

博客
今天继续为大家介绍W3100A到W3150A+的移植过程中需要注意的问题,以及W3100A与W3150A+间的比较。 2.6.1 功能兼容寄存器 表3 为兼容寄存器。在两芯片组中这些功能兼容的寄存器可能有不同的偏移地址和名字。 表3 功能兼容寄存器 2.6.2 功能不同的寄存器 IR: 表4. W3100A和W3150A+ 的IR之间的比较   从W3100A到W3150A+移植过程中,无论WIZnet芯片是否接收数据位7~4 都不能使用。 位7~4的功能已经由Sn_IR(0~3)的第二位代替。   IMR: 表5. W3100A和W3150A+ IMR之间的比较 W3150A+的IMR寄存器中,不管WIZnet芯片是否接收数据,位7~4不能用于禁用中断。 Cn_CR/Sn_CR: 表6. W3100A 和W3150A+之间的命令寄存器比较 另外,W3150A+ 增加了一些新的命令:DISCON/SEND_MAC/SEND_KEEP. 如果用户对这些命令感兴趣,请参考W3150A+用户手册中的Sn_CR描述。 Cn_ISR/Sn_IR: 表7. W3100A和W3150A+的Socket终端寄存器之间的比较 Bit Recv_OK 只是指示的Recv command命令完成的表达。它不指示着WIZnet芯片是否已经收到数据。RECV才是WIZnet芯片收到数据与否的标志。 Bit Established被重命名为CON。 Bit Closed 被重命名并升级为DISCON。 IDM_OR/MR: 表8. W3100A和W3150A+ 的模式寄存器之间的比较 Bit IND_EN 被重命名为IND,而且被放在了在MR寄存器的第0位. Bit L/B被移除。W3150A+只支持 big-endian. 因此,如果用户使用little-endian来访问间接寄存器,它们必须在W3100A到W3150A+移植过程中使用big-endian。 Bit AUTO_INC 被重命名为AI,并放在MR寄存器的bit1. Cn_TW_PR/Sn_TX_WR: 大小: 大小:Cn_TA_PR 是一个4-byte寄存器, Sn_TX_RD 是一个2-byte寄存器。 功能:无变化;请参见图4. 图4. TCP传输过程中的指针管理 Cn_RW_PR/Sn_RX_WR: 大小:Cn_RW_PR 是一个4-byte寄存器, Sn_RX_WR是一个2-byte寄存器。 功能:无变化。 Cn_RR_PR/Sn_RX_RD: 大小:Cn_RR_PR 是一个4-byte寄存器, Sn_RX_RD是一个2-byte寄存器。 功能:无变化。 Cn_SSR/Sn_SR: 请见下图,检查W3100A和W3150A+socket状态的区别   图5. Socket状态比较 Cn_SOPR/Sn_MR: 表9. W3100A和W3150A+的Socket模式寄存器之间的比较(a) 表10. W3100A和W3150A+的Socket模式寄存器之间的区别(b) 2.6.3 新寄存器和新功能 W3150A+ 有一些新的寄存器和新功能: PPPoE模式使能位:MR寄存器中的第3位 PPPoE 认证寄存器(PATR) PPPoE LCP 请求计时器寄存器(PTIMEG) PPPoE LCP魔数寄存器(PMAGIC) 多播使能位:Sn_MR寄存器第7位 多播协议版本选择:Sn_MR寄存器第5位 不可达IP地址和端口寄存器(UIPR和UPORT) Socket n TX 空闲大小寄存器(Sn_TX_FSR) Socket n RX 接收已大小寄存器(Sn_RX_RSR) Socket n TTL寄存器(Sn_TTL) 如果使用对这些寄存器和功能感兴趣,请参见W3150A+用户手册。 这个文档重点在于W3100A到W3150A+的移植。 3 软件注意事项 3.1软件库 W3100A和W3150A+都提供用户驱动。通过使用驱动中的API函数,用户可以简易开发他们的例程。 在这部分,我们重点关心的是W3100A到W3150A+的驱动移植 3.1.1 如何移植 用户应该首先更新驱动文件,然后将旧的API函数(那些在应用相关的文件中,例如main.c, dhcp.c, dns.c, http.c and target_application.c)一个一个更改为新的API函数。 1>     驱动更新 移除所有W3100A驱动文件,并替换为W3150A+驱动。 图6…
Read More

W3100A到W3150A+的移植笔记(一)

博客
最近很多用户咨询 W3100A,由于W3100A已经停产。在此希望给大家介绍一下,W3100A可移植到其他芯片的方式及途径,供大家更好的拓展您项目的沿用性,期待能对您有所帮助。今天先为大家介绍第一部分的内容。 此移植笔记描述了设计者及程序员应在 W3100A到W3150A+的移植 过程中注意的问题。更多关于W3150A+的信息,请参考W3150A+用户手册。 1 对比 1.1 移植的优势及挑战 这部分强调了W3100A到W3150A+过程中涉及的多方面优势及问题。在维持很多W3100A的特性方面,W3150A+提供了更高级别的性能。下面是移植到W3150A+的优势: 性价比更高 更高级别的集成度 增加TX 空闲大小寄存器 及RX已接收大小寄存器。用户可以直接读取,不再需要计算其值。 TCPSeq和ACK码是自动处理的。用户不再需要计算其值。 新功能(PPPoE/IGMP/SPI接口/心跳包 等) 使用标准的驱动库便于未来移植W5100需要。W3150A+ 和W5100的驱动库完全兼容。因此,用户在从W3150A+到W5100移植过程中不需要考虑固件变化。 下面列出了一些差异,可能在W3100A到W3150A+移植过程中带来问题: 引脚分配不同。见第二部分,“硬件注意事项”。 库移植。W3100A和W3150A+驱动库之间有一定的差异,见第三部分“软件注意事项”。 1.2 总结和及特征比较表 表1 包含了W3100A和W3150A+的一些特征比较信息 表1 W3100A和W3150A+比较 2 硬件注意事项 2.1 电压 都为3.3V。 2.2 TCP/IP 核 两款芯片都使用了WIZnet全球唯一的硬件IPv4核。然而,W3150A+内核有所更新并且弥补了W3100A勘误及缺陷”中的弱点,“W3100A勘误及缺陷”中。使用可以点击如下链接: W5100 2.3 封装及引脚分布 a)  两个芯片都是LQPF64 b)  引脚分布: 图1 展示了W3100A和W3150A+的引脚分布。不同部分请参见红色注释。   图1 移植W3100A到W3150A+时引脚分配注意事项 “       ”意为“移除功能” “√” 意为“不变” “<-+注释” 意为“替代部分” 在W3150A+的引脚分配中,引脚28,37,和57 是1.8 v电源有关引脚。请参见图2 图2.  1.8v电源输入下的参考电路图 2.4  接口 2.4.1 主机接口 W3100A 支持 MCU总线接口 和 I2C接口, 然而W3150A+ 支持MCU 总线接口 和SPI接口。 因此,如果你之前使用I2C接口通信,现在你可以使用你的主MCU的SPI接W3150A+。SPI是一个4线接口,如今已非常易用普遍。SPI接口也可以通过GPIO模拟出来。如果你使用MCU 总线接口,除了几个硬件的修改,剩下的工作只是非常简单的驱动移植。请参见表2. 表2 主接口注意事项 2.4.2 MII接口 W3100A支持两种MII。一种是串行MII,另一种是半位元MII;但是W3150A+仅支持半位元MII。因此,如果你目前使用的是串行MII模式,你就要调整你的PHY芯片为半位元类型。另外,W3150A+有两个独立引脚:RXDV和CRS。用户应连接引脚RXDV(No.44)与引脚RXDV(PHY芯片端)连接,以及引脚CRS(No.47)与引脚CRS(PHY芯片端)连接。 2.5  系统特征 2.5.1 时钟 W3100A 有两个时钟引脚(4号引脚及33号引脚。但是W3150A+移除了外部时钟模式。因此,W3150A+只有一个时钟来源:25MHz(No.35 引脚)。 2.5.2 系统重启 两个芯片都支持 硬件和软件重启。 硬件重启信号,W3100A 是高点平有效,但W3150A+是低电平有效 软件重启,都是通过在指定的寄存器中写“1”到第7位,来实现此功能。 W3100A是在C0_CR寄存器中(偏移地址0x00)。W3150A+是在MR寄存器中(偏移地址0x00)。 2.5.3 寄存器读/写定时 W3100A包括直接&间接模式的话支持6种MCU 总线接口模式,然而W3150A+只支持2种MCU总线接口模式。既然这样,读写时序就有着巨大的不同。 从W3100A到W3150A+移植时,用户应该使用W3150A+ 的时序。更多信息请参见W3150A+的用户手册:7.4.2 寄存器/内存读时序&寄存器/内存写时序。 2.5.4 Tx/Rx 缓存 两个芯片都有16Kbytes 的Tx/Rx 缓存。因此,不用考虑在移植中的缓存限制。 2.6 寄存器地址映射 W3100A 由一个控制寄存器,指针寄存器,系统寄存器,信道寄存器和 Tx/Rx缓存组成,然而,W3150A+由一个通用寄存器,Socket寄存器和Tx/Rx缓存组成。 图3. 为W3100A和W3150A+ 的寄存器映射   图3. W3100A和W3150A+的寄存器映射 我们明天继续,感谢阅读! WIZnet中文官方网站:http://www.iwizne.cn WIZnet官方微博:http://weibo.com/wiznet2012 WIZnet微信公众平台:
Read More

PubNub 物联网房子模型(简易Internet)

博客
该房子模型是由激光切割而成的,然后用电动工具修饰,以促进四个灯和两个伺服电机。 原型电路板焊接到提供电阻给LED,提供外接电源伺服电机,​​并提供了一个共同的接地。 该项目原型以Arduino Uno(Rev 3)和 **Seeed Studio Ethernet Shield (v2)**  。 它已经被更新为一个Arduino云,其中包括无线网络。 Arduino通过USB电池供电,并从一个WiFi热点上网获取互联网。 伺服电机是由四节AA电池供电,从而使整个项目完全无线运作。 当房子模型连接到互联网,它会打开PubNub一个连接并开始等待信息。 当有人在电话点击“Open Garage”,电话通知PubNub和PubNub便告诉房子打开车库门。 了解更多: http://www.pubnub.com/blog/how-i-built-an-arduino-controlled-house-model-part-1/
Read More