WIZnet高性能以太网模块

WIZnet高性能以太网模块

Uncategorized, WIZnet 产品应用小例全系列, 串口转以太网, 博客, 应用
WIZnet高性能以太网模块有以下几个系列: - W5500S2E 系列 • W5500S2E-S1, W5500S2E-Z1, W5500S2E-R1 - W7500S2E 系列 • W7500S2E-Z1, W7500S2E-R1, W7500S2E-C1 高性能以太网模块特点: W5500S2E系列 • 支持Modbus RTU/ASCII转Modbus TCP/UDP • 支持Modbus over TCP/UDP • 波特率可设置为1.2Kbps~1.152Mbps • 支持NetBIOS功能,方便用户为其设备命名 • 支持本地和远程固件升级 • 支持数据/AT 模式通信 • 特设Socket连接状态管脚,确保用户每包数据不丢失 • 支持连接密码校验功能,提高通信安全性 • 智能网线侦测及Keep Alive功能,保证网络链路实时畅通 • 配置方式:上位机、Web浏览器、串口AT命令 W7500S2E系列 - W7500S2E 系列 • 波特率可设置为300bps~460,800bps • 支持NetBIOS功能,方便用户为其设备命名 • 支持数据/AT 模式通信 • 特设Socket连接状态管脚,确保用户每包数据不丢失 • 支持连接密码校验功能,提高通信安全性 • 智能网线侦测及Keep Alive功能,保证网络链路实时畅通 • 配置方式:上位机、Web浏览器、串口AT命令 通用型RJ45/网络变压器 - HanRun • HRW5500RE - 工业级RJ45 • HRW5500TE -工业级网络变压器 WIFI模块 - WizFi360 • GB15629.11-2006、IEEE802.11 b/g/n/e/i/d/k/r/s/w • 集成32位嵌入式Cortex-M3处理器,工作频率80MHz • 集成通用加密硬件加速器,支持PRNG/SHA1/MD5/RC4/DES/3DES/ AES/CRC/RSA等多种加解密协议 • 集成2.4G射频收发器,满足IEEE802.11规范 • 支持Wi-Fi WMM/WMM-PS/WPA/WPA2/WPS • 支持20/40M带宽工作模式 • 支持STA/AP/STA+AP工作模式 • 支持AT远程升级 • 支持Smart Config功能(包括Android和IOS设备) • HSPI、UART、I2C、I2S、SDIO2.0、7816接口、PWM、GPIO • 集成电源管理电路 • 睡眠模式电流小于10uA • 2ms之内唤醒、连接并传输数据包 • 工作温度范围:-40℃~85℃ 服务器: - CAN转以太网 • 10/100M自适应以太网接口 • 支持双CAN口收发 • 支持DHCP自动获取IP地址 • CAN口波特率为60kbps~1Mbps • 支持本地和远程固件升级 • 灵活的CAN口数据分包设置 • 网络端支持TCP、UDP传输方式 • 支持DNS功能 • 支持AT命令、Web浏览器、上位机方式配置 •…
Read More

WIZnet-W5500S2E系列,你了解多少?

Uncategorized, 串口转以太网, 博客, 应用
- - - WIZnetS2E产品已经发布有一段时间了,S2E产品有W5500S2E和W7500S2E两个系列产品,那么大家对于S2E产品到底了解多少呢,下面就跟着我一起去解密一下吧! 首先,我们先从W5500S2E系列开始,先了解一下W5500S2E的基本情况: W5500S2E是一系列工业级S2E串口转以太网模块,支持TCPServer、TCP Client和UDP三种工作模式,串口波特率最高可达1.152Mbps,并提供配套的上位机配置软件,也可通过网页或AT命令等方式轻松配置。 W5500S2E集成了全硬件TCP/IP 协议栈以太网接口芯片W5500,网络通信更加快速、稳定、安全。用户只需根据手册中推荐的参考设计原理图,即可快速完成硬件电路的设计,降低开发难度,节省开发时间。 W5500S2E系列S2E模块根据其尺寸和接口不同分为以下型号: 型号 产品图片 特点 W5500S2E-S1 尺寸:34.00×24.00×12.40 (mm) 网口类型:网络变压器 W5500S2E-Z1 尺寸:44.45×31.75×15.75 (mm) 网口类型:网络变压器 W5500S2E-R1 尺寸:44.45×31.75×23.00 (mm) 网口类型:RJ-45 功能特点 W5500S2E模块具有以下主要功能特点: 波特率可设置为1.2Kbps~1.152Mbps之间的任一标准值 10/100M自适应以太网 支持TCP Server、TCP Client和UDP三种工作模式 灵活的串口数据分包设置,满足用户多样化的分包需求 智能网线侦测及Keep Alive功能,保证网络链路实时畅通 支持DHCP自动获取IP地址 支持DNS功能,满足用户通过域名实现通讯的需求 支持Modbus RTU/ASCII转Modbus TCP/UDP 支持Modbus over TCP/UDP 支持NetBIOS功能,方便用户为其设备命名 支持连接密码校验功能,提高通信安全性 支持串口AT命令配置方式 内置Web服务器,方便客户进行远程设备管理 支持上位机配置工具配置方式 支持本地和远程固件升级 产品特性 LAN 10/100Mbps自适应以太网 串口 3.3V TTL×1:TXD、RXD、CTS、RTS、GND 串口通信参数 波特率:1.2Kbps至1.152Mbps 数据位:7,8 停止位:0.5,1,1.5,2 校验:None,Even,Odd 流控:None,CTS/RTS 软件 工具:WIZS2E ConfigTool上位机软件 配置方式:上位机、Web浏览器、串口AT命令 电源 输入电源:DC 3.3V 尺寸(长×宽×高) W5500S2E-S1:34.00×24.00×12.40 (mm) W5500S2E-Z1:44.45×31.75×15.75 (mm) W5500S2E-R1:44.45×31.75×23.00 (mm) 工作温度 工业级:-40 ~ +85 ℃ 保存环境 -45 ~ +95 ℃,5 ~ 95% RH 参数配置方式 W5500S2E提供了三种常用的参数配置方式供用户选择: WIZS2E ConfigTool上位机软件配置,用户可在Windows操作系统的计算机上安装该软件进行配置; Web浏览器配置,方便用户在本地或者远程通过Web浏览器进行配置; AT命令配置,用户可将W5500S2E集成于自己嵌入式产品的主板上,通过AT命令进行参数配置,也可直接通过串口工具使用AT命令配置。 具体参数及工具下载请到S2E官方网站:https://zh.wizse.com/
Read More

新品 !首款支持IPv4/IPv6双协议栈的网络接口芯片!

W6100, 博客, 新闻
W6100是WIZnet 2019年推出最新技术的网络接口芯片,内含IPv4/IPv6双协议栈。其中新增IPv6是其最大特点,同时在硬件引脚上与W5100S全兼容(Pin to Pin),Socket则支持8个,具体情况如下: Hardwired Dual TCP/IP Stak Controller W6100是一款全硬件互联网控制器芯片,并在WIZnet的全硬件TCP / IP核心技术的基础上增加了IPv6功能,支持IPv4 / IPv6双协议栈。W6100支持TCP/IP协议,如TCP,UDP,IPv6,IPv4,ICMPv6,ICMPv4,IGMP,ARP和PPPoE。其内部还集成了以太网数据链路层(MAC)和10Base-T / 10Base-Te / 100Base-TX以太网物理层(PHY),使其适用于嵌入式互联网设备。 W6100具有8个独立的硬件SOCKET,支持各种SOCKET-less命令,用于通过ARP,PINGv4和PINGv6进行IPv6自动配置,监控和管理网络。 W6100支持两种HOST接口; SPI和并行系统总线。它具有32KB内部存储器,用于发送和接收数据。W6100专为低功耗和低热量设计,提供WOL(局域网唤醒),以太网PHY断电模式等。 W6100有两种封装类型; 48 LQFP和48 QFN无铅。两个版本均与W5100S兼容PIN-2-PIN。 特征 支持硬件TCP / IP协议:TCP,UDP,IPv6,IPv4,ICMPv6,ICMPv4,IGMP,MLDv1,ARP,PPPoE 支持IPv4 / IPv6双协议栈 支持8个独立的SOCKET,同时支持32KB内存 支持SOCKET-less命令:ARP,PING,ICMPv6(PING,ARP,DAD,NA,RS)命令,用于IPv6自动配置和网络监控 支持WOL(局域网唤醒  )和掉电模式,实现省电 支持UDP 上的LAN唤醒 支持串行和并行主机接口:高速SPI(MODE 0/3),8位并行总线 内部16K字节存储器用于TX / RX缓冲器 10BaseT /10BaseTe / 100BaseTX以太网PHY集成 支持自动协商(全双工和半双工,基于10和100) 仅在自动协商模式下支持Auto-MDIX 不支持IP分片 3V工作,具有5V I / O信号容差 网络指示灯LED(全/半双工,链路,10/100速度,有效) 48引脚LQFP和QFN无铅封装(7x7mm,0.5mm间距)  W5100S PIN-2-PIN兼容 目标应用 家庭网络设备:机顶盒,PVR,数字媒体适配器 串口转以太网:门禁控制,LED显示,无线AP继电器等 并行到以太网:POS /迷你打印机,复印机 USB转以太网:存储设备,网络打印机 GPIO到以太网:家庭网络传感器 安全系统:DVR,网络摄像机,信息亭 工厂,建筑,家庭自动化 医疗监控设备 嵌入式服务器 物联网(IoT)设备 物联网云设备
Read More

基于STM32和W5500实现AirPlay音频播放

博客, 物聯網
※已刊登在“无线电”1月刊上  基于STM32和W5500实现AirPlay音频播放 作者:常席正,魏文龙   AirPlay是苹果公司推出的一套无线音视频解决方案,我们手里的iPhone、iPad甚至是Apple Watch等设备还有电脑上的iTunes都支持AirPlay。使用AirPlay可以方便的使移动设备的音频流,视频流可以投射到音箱和显示设备上,而无需蓝牙设备的配对过程。但是支持AirPlay功能的音响设备普遍都比较昂贵,而且家里的3.5毫米的插口的老音箱也没有利用起来,本着“喜新不厌旧,改造旧物发挥余热”的精神,我开始了新一轮的折腾。 我的想法是用嵌入式方案STM32+W5500的方式实现AirPlay协议,并使用I2S接口接PCM5102A音频模块来实现音频播放。于是马上上网查资料,发现成熟的方案还不太多,现有的方案都是在linux或者windows上运行的,精挑细选之后选择了https://github.com/juhovh/shAirPlay这个AirPlay开源项目作为参考,主要是该代码是用C语言实现移植到stm32比较方便。 在开始之前我们有必要先了解一下AirPlay, AirPlay是苹果公司收购airtunes后,在airtunes协议的基础上增加了视频,照片的传输,从而变为完整的AirPlay协议。AirPlay可以将iPhone 、iPad、iPod touch 等iOS 设备上的包括图片、音频、视频及镜像传输到支持AirPlay协议的设备中播放,实现随时随地的无线流媒体传输。在我们的这个项目中,我们只需要实现AirPlay协议中的音频流部分。AirPlay的实现过程中包含多个子协议,其中有的协议是完全标准的,有一部分协议苹果公司进行了一些修改,有的则是完全私有的。 Multicast DNS:用于发布服务,启动后,在iOS的控制中心菜单中就能看到支持AirPlay的设备列表; HTTP / RTSP / RTP:用于流媒体服务,传输音视频数据,进行播放控制等; NTP:网络时间协议,用于时间同步; FAirPlay DRM加密协议:用于进行数据加密,这个是完全私有的加密协议。 开始工作前我们需要进行一些前期准备,如下图: 图1 硬件框图及接线 iPhone用来播放音乐,并通过Airplay协议发送音频流。W5500EVB是WIZnet的W5500开发板,其中的W5500除了包含以太网的MAC和PHY外,还内置了硬件的TCP/IP协议栈,是目前比较常用的以太网方案。我们使用W5500EVB作为服务器接收并解码音频数据,开发板的操作可以参考http://www.w5500.com中的例程。PCM5102A音频模块可以将解码后的音频数据进行播放。经过分析后我们要实现AirPlay音频播放主要是实现以下三个方面: iPhone在网络中发现Airplay设备(W5500EVB)并建立连接; W5500EVB接收并解码音频数据; W5500EVB通过I2S接口将音频传送到PCM5102A音频模块; 接下来我们将分别实现这三个步骤: 1、发现Airplay设备并建立连接 AirPlay发现设备是基于mDNS协议(Multicast DNS)实现,iPhone与W5500EVB需要连入同一网络且W5500EVB要加入组播组224.0.0.251:5353才可以接收mDNS报文。W5500EVB收到iPhone发出的Querry查询报文后回复Response报文,报文的内容可以参考文档《Unofficial AirPlay Protocol Specification》(http://nto.github.io/AirPlay.html),下方为mDNS设备发现和设备注册代码: 1 uint8 mdns_query(uint8 s, uint8 * name,uint8* rname) 2 { 3     uint8 ip[4]; 4     uint16 len, port; 5     switch (getSn_SR(s)) { 6     case SOCK_CLOSED:/*打开SOCKET并加入组播组224.0.0.251*/ 7         setDIPR(s,DIP);/* 设置目标IP 224.0.0.251*/ 8         setDHAR(s,DHAR);/*设置目标MAC 01:00:5e:00:00:FB */ 9         setDPORT(s,DPORT);/*设置目标端口5353*/ 10         socket(s, Sn_MR_UDP, 5353,Sn_MR_MULTI);/*打开SOCKET并加入组播组*/ 11         break; 12     case SOCK_UDP: 13         if ((len = getSn_RX_RSR(s)) > 0) { 14             if (len > MAX_DNS_BUF_SIZE) { 15                 len = MAX_DNS_BUF_SIZE; 16             } 17             len = recvfrom(s, BUFPUB, len, ip, &port); 18             /*检查收到报文的flag确定报文是否为查询报文*/ 19             if ((BUFPUB[2]&0x80)==0) { 20                 len = mdns_makeresponse(0,name,rname,BUFPUB,MAX_DNS_BUF_SIZE); 21                 sendto(s, BUFPUB, len, DIP,DPORT); 22             } 23         } 24         break; 25…
Read More

轻松实现Lua脚本控制W5500

Uncategorized, 博客, 应用, 物聯網
※已刊登在“无线电”12月刊上轻松实现Lua脚本控制W5500 作者:孔东明,张博 1、引言 Lua是巴西里约热内卢天主教大学里的一个研究小组于1993年基于标准C开发的一个轻量级的嵌入式脚本语言,其设计目的是为了将传统嵌入式程序“编写→编译→链接→运行”的复杂过程简化为“编写→运行”两个环节,从而为嵌入应用程序提供灵活的扩展和定制功能。 Lua脚本可以很容易的被C/C++ 代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,ini等文件格式,并且更容易理解和维护。一个完整的Lua解释器不过200K,在目前所有脚本引擎中,Lua的速度是最快的。这一切都决定了Lua是作为嵌入式脚本的最佳选择。 2、项目背景 随着物联网的快速发展,传统的工控、电力、银行机、闸机甚至家电等设备也纷纷加入了连接互联网大军。工厂的车床需要把运行数据实时上传至PLC,水表、电表、燃气表实现了远程抄录,点验钞机可以实时将RMB的冠字号上传至银行数据库,停车场无人值守,家里的窗帘用某猫精灵很方便的进行语音控制…… 小编在一家做网络通信设备的公司上班,领导要求基于现有的串口转以太网模块开发出一款支持用户使用Lua语言进行二次开发的串口转以太网模块,项目工期1个月。小编刚刚毕业4个月,没有多少项目经验,只是在学校玩过ARM M3的开发板,C语言自我感觉勉强及格,以太网技术基本小白一枚,对如何实现用户使用Lua语言“二次开发”更是一窍不通。但是任务时间紧迫,再难也要搞定,要不然没有奖金就要勒紧裤腰带了。 接到项目当晚就去找度娘商讨对策。经过一番搜索,方才大致了解了什么是Lua,什么是脚本语言,为什么客户要二次开发。用户在使用串口转以太网模块时,由于应用场景的不同及嵌入式产品资源的限制,需要灵活的调用模块的各项功能去实现差异化应用,而传统的模块只能实现既定的功能,因此支持二次开发的产品应用范围将大为拓展。而用户二次开发输入的代码肯定是无法执行传统的“编写→编译→链接→运行”这整个过程,脚本语言将这个过程简化为“编写→运行”就可以完美的解决了这个问题,Lua便是一款最佳的嵌入式脚本语言。 原理理顺了,如何落实便成了当务之急,我需要先做一个Demo来模拟整个过程。我找来了之前开发串口转以太网模块用到的以太网开发板W5500EVB,如下图。W5500EVB是由ST的STM32F103RC+W5500网络芯片构成,STM32F103内部256K的Flash足以容纳最大200K的Lua驱动。W5500是一颗以太网接口芯片,它用全硬件逻辑门电路搭建了一整套全硬件TCP/IP协议栈,发送数据时单片机只需将用户数据通过SPI发送至W5500,W5500内部会自动完成数据TCP/IP封包,并发送至网口,接收数据时W5500内部自动完成解包,仅将MCU关心的用户数据提交。W5500内含8路完全独立的硬件Socket,这意味着W5500可以同时运行8个上层应用程序,而且传输速率互不影响,不会像软件协议栈那样线程增加,速度明显降下来。W5500内部还集成了MAC和PHY,符合了接入以太网的所有条件,对于刚刚接触以太网的攻城狮来说,是一款简单易上手的网络接口芯片。 图 1 W5500EVB 我想象中的Demo是这样的:用户通过Web网页向W5500EVB提交一段能让W5500EVB连接到TCP服务器的Lua脚本代码,W5500EVB解析出来这段代码后通过已经运行的Lua虚拟机中的Lua接口函数来解释用户代码要实现的功能,最后 W5500EVB按照用户代码中的参数连接到一个指定的TCP服务器实现以太网数据通信。这个过程可以参考W5500官网提供的HTTP Server和TCP Client的例程。 图 2 实施方案原理图 3、准备工作 (1)安装编译环境:Keil V5.11 (2)硬件:W5500EVB、Jlink调试器 (3)驱动:Lua最新驱动V5.3.2 4、宿主C部分 4.1 加载驱动 驱动包括STM32F103RC的单片机驱动、W5500以太网部分驱动以及Lua驱动。STM32F103RC驱动不必多说,W5500驱动和Lua驱动如下图所示,均可以在对应官网下载到。                                           图 3 W5500驱动                                                                                    图 4 Lua驱动-V5.3.2 4.2 初始化部分 初始化部分包括STM32初始化及W5500初始化,Lua在用的时候才需要初始化。 01 /******* STM32初始化********/ 02 Systick_Init(72); 03 RCC_Configuration(); 04 GPIO_Configuration(); 05 Timer_Configuration(); 06 NVIC_Configuration(); 07 USART1_Init(); 08 at24c16_init(); 09 10 /******* W5500初始化********/ 11 printf("W5500 Config....\r\n"); 12 Reset_W5500();                  //重启W5500 13…
Read More

郑重声明

博客, 新闻
郑 重 声 明 Statement 近期,我司发现有公司冒充我司代理销售WIZnet 产品。在此,我司郑重声明:WIZnet 所有产 品仅通过官方代理进行销售,有关代理信息可在我司网站上查询,望广大客户正确识别。 Recently, we have been informed that there were businesses pretending to be WIZnet’s distributor and selling counterfeiting items with our trademark on. Hereby we declared that the only source of WIZnet goods is sourcing through our official distributors which are listed in our website. 经我司调查,市面上有不法经销商销售翻新或伪造的WIZnet 芯片产品,严重损害了客户的利益。 为确保用户利益,我司强烈建议客户通过我司官方代理渠道采购WIZnet 产品,任何使用非我司官方 渠道之产品造成的一切问题,我司不承担任何责任。同时,我司法律部门已采取法律途径,严厉打击 销售伪造WIZnet 产品之不法公司或个人,以保护广大WIZnet 客户利益。 Through our investigation, there were illegal businesses remarking and resurfacing ICs with counterfeit WIZnet logos on the market, which severely prejudice the interests of our customers. Therefore, we strongly recommend our customers purchase WIZnet products through our official distributors, since we assume no responsibility for any problem caused if the products are not from our authorized distributing channels. At the same time, in order to protect the interest of…
Read More

RT-Thread SAL+W5500,带你走进全硬件TCP/IP协议栈世界

博客, 新闻
原文链接:HTTPS://mp.weixin.qq.com/s/we8GZS-P4_GmqUxL3egfGw场景= 25#wechat_redirect 随着嵌入式系统功能的多样化以及网络在各个领域中的广泛应用,具备网络功能的嵌入式设备拥有更高的使用价值和更强的通用性。我们在嵌入式开发中常用的网络接入方式为软件TCP / IP协议栈接入方式,如lwIP协议栈。今天,为大家介绍一种全新的网络接入方式,基于SAL的全硬件TCP / IP协议栈接入方式。 SAL 介绍 SAL,即套接字抽象层,位于网络硬件层于应用层之间,用于抽象,统一多种网络协议栈接口,并且应用层提供标准的BSD套接字APIs.SAL可以让RT-Thread系统目前SAL支持的网络接入方式主要有三种:软件TCP / IP协议栈(lwIP),自定义串口网络实现(ATSocket),以及下面带来的第三种接入方式,全硬件TCP / IP协议栈(W5500)。 W5500介绍 W5500是WIZnet 推出的高性能以太网接口芯片系列之一,内部实现了全硬件TCP/IP 协议栈+MAC+PHY,芯片有如下几个特点: 8 个独立的硬件 Socket,各路通信互不影响 32K bytes 片上缓冲用于处理收发数据 集成 802.3 以太网MAC 主机接口为 SPI 高速串行外设接口(最高 80 Mhz) 什么是全硬件TCP/IP 协议栈? 传统的单片机(MCU)实现网络功能,需要连接外设物理层以太网控制芯片(MAC+PHY),还要主控芯片中移植软件TCP/IP 协议代码实现通信及上层应用。 所谓全硬件TCP/IP 协议栈是将传统的软件协议TCP/IP 协议栈用硬件化的逻辑门电路来实现。芯片内部完成TCP、UDP、ICMP等多种应用层协议,以及IP 、ARP等网络层协议,并且实现了物理层以太网控制(MAC+PHY)、内存管理等功能,完成了一整套硬件化得以太网解决方案。 相比于lwIP 软件协议栈的资源占用(RAM50K+,ROM80K+),在MCU 上使用硬件协议栈芯片(例如:W5500)的资源占用(RAM1K,ROM20K)得到了很大程度的降低。 另一方面,硬件协议栈芯片将会降低MCU 对于庞大网络数据的负荷,使MCU 可以高效的处理其他业务逻辑。同时也避免了MCU 主程序受到网络攻击的危险,大大优化了MCU 的网络连接功能。 WIZnet软件包介绍 WIZnet软件包是RT-Thread 基于WIZnet 官方 ioLibrary_Driver 设备驱动代码库的移植实现,支持W5500 芯片。原官方代码库虽然实现了多种网络协议支持,并且提供自定义Socket 接口用于网络编程,但是其接口并不是标准BSD 接口,这样不利于兼容多种网络软件包,增加了网络开发的难度。 RT-Thread推出的WIZnet 软件包在原代码库功能的基础上,封装实现一套标准 BSD Socket APIs,并且对接RT-Thread SAL 套接字抽象层,完成SAL 对全硬件协议栈的支持。 WIZnet 软件包特点如下: 1、极简的设备接入方式 传统WIZnet 设备接入,需要实现 SPI 设备初始化、网络初始化、寄存器配置、中断处理等多个功能,才能正常连接网络。使用 WIZnet 软件包,只需要在 ENV 中正确配置 SPI 设备名称、复位引脚号和中断引脚号并下载软件包,即可快速初始化设备并接入网络。 2、提供标准网络编程接口 相比于原官方代码库,WIZnet 软件包提供标准 BSD Socket APIs,可以完美的兼容 RT-Thread 系统中多种网络软件包或者网络功能实现,如 MQTT、HTTP、NTP、MbedTLS、Iperf 等,极大的简化了开发者网络接入和网络协议移植的过程。 3、自定义网络接入参数设置 软件包提供动态和静态两种获取 IP 地址的方式,静态模式下可以在 ENV 中自定义配置设备 IP 地址、网关、子网掩码等网络参数。对于 MAC 地址,软件包提供设置 MAC 地址接口,用于设置设备唯一的 MAC 地址,防止网络冲突。 4、提供网络状态查询方式 软件包提供wiz_ifconfig 命令用于查询当前网络参数,提供 wiz_ping 命令用于查询网络连接状态。 WIZnet的软件包的推出,使得RT-主题SAL支持的更加全面,这也进一步提升了RT-线程系统在物联网领域对于不同网络软硬件的兼容性,简化了用户网络接入的流程。当前WIZnet的软件包已经完成对W5500的移植,其他热门WIZnet设备,RT-Thread将会根据用户反馈优先选择支持。 WIZnet的软件包获取 使用WIZnet软件包需要在RT-Thread的包管理中选中它,具体路径如下:RT-Thread在线包→物联网 - 物联网→WIZnet:WIZnet TCP / IP芯片SAL框架实现 可通过一下二维码查看更详细信息: 也可通过外部链接打开: https://github.com/RT-Thread-packages/wiznet/blob/master/README.md
Read More

W5500问题集锦

博客, 应用
        1、 如何确认W5500网络芯片物理连接是否正常? 使用W5500网络协议芯片,对其进行可靠的硬件复位(网络协议芯片的RESET或RST引脚)后可能出现下列现象: (1)  芯片的LINKLED引脚输出低电平,LINKLED指示灯会被点亮(未接,接错或灯坏除外). (2)  如果是通过网线直连电脑,电脑上本地连接显示本地连接已连接状态。如果是网线连到路由等设备,路由等相应指示灯提示连接成功。 如果出现上述现象,表明物理连接已经成功并且芯片工作,否则需要排查相关问题。   2、 如何检测W5500物理连接是否成功与芯片是否工作及相关线路是否正常有关系? (1)   因芯片焊反或关键位置虚焊,短路等问题导致芯片不能正常工作。 (2)   因芯片的供电,接地等不正常或连接芯片,导致芯片不能正常工作。 (3)   因芯片引脚外接的用于隔离数字电源与模拟电源的1uH电感损坏开路,导致不能工作。 (4)  因芯片的晶振不按要求连接,而导致芯片不能工作。使用有源振荡器的,线路连接错误,或者有源振荡器的电压不是1.8V,请参考原理图进行正确设计 。 (5)  因复位引脚连接错误,使得芯片不能完成可靠复位。 (6)  因线路中RXIP、RXIN、TXOP、TXON与变压器的连接错误,导致与电脑等无法建立连接。 (7)  因采用与线路不匹配的或坏的RJ45模块和变压器导致与电脑等无法连接。这里需要特别补充一下的是,W5500变压器连接上与W5100、W5200、W5300大不一样,如直接把他们的连接照搬过来可能不能工作,具体参考原理图。 (8)  因网线或电脑路由器等不正常而无法连接。 (9)  因某些MCU只需电压2.7V就可工作,MCU在电压还未上升到3V就对需要3V以上才能运行的网络协议芯片进行复位操作必然失败,最终导致不能连接。(可程序解决) (10) 如果是使用的W5300芯片,当不使用外部PHY时,TEST_MODE[3:0](19~22引脚),必须全部为低电平,可全接地,否则可能因没有PHY导致不能连接。   3、 W5500连接正常却PING不通,怎么办? W5500芯片是否可以ping通,不仅与物理连接等有关系,还和相关电路以及网关、子网掩码、MAC地址、IP地址配置有关系,可以从以下方面进行排除: (1)  W5500的EXRES1引脚(10脚)所接12.4K参考电阻,均接地且要求误差必须控制在1%以内。 (2)  RXIP、RXIN、TXOP、TXON接口,信号长度必须小于 25cm,越短越好,且尽量走等 长线,各差分信号相差不能超过2.5cm。RXIP,RXIN应尽量靠近,TXOP,TXON应尽量靠 近,有条件的应走平行线。 (3)  必须保证被操作的寄存器地址配置正确。 (4)  可以对寄存器进行读写操作,判断读写是否一样,采用SPI接口的可以以此判断SPI部分的程序以及电路有无问题。使用并行接口的,则可以判断程序以及地址线、数据线的连接有无问题。 (5)  MAC地址的第一个字节必须为偶数。 (6)  必须正确设置子网掩码,且电脑IP地址与网络芯片的IP地址必须设置在同一个子网。   4、 为什么W5500芯片可以PING通,但无法发送数据? W5500芯片可以ping通,说明相关电路以及网关、子网掩码、MAC地址、IP地址配置均正常, 如果不能建立连接发送接收数据,需要从从SOCKET配置,SOCKET状态,中断寄存器,发送接收程序,或是上位机软件的设置等进行排查 。 具体配置参考W5500数据手册   5、 W5500在配置时需要检查网关吗?为什么? 其实只要不访问外网,完全可以不做这个检测,如果要访问外网,必须经过网关,做这步就是为提前知道网关是否存在,是否正常工作。   6、 为什么检测网关时要将目的IP地址每位加‘1’? 在正确设置网关的情况下,去连接一个不在同一子网(外网)的目的IP,就可找到网关,而将目的IP每位加1,正好造就一个不在同一子网的目的IP,如果愿意你加2加3都可以。   7、 为什么检测网关要判断目的MAC地址首位不为0xff? 因为未找到网关以前,读出目的MAC地址所有位全为0xff, 至于为什么判断首位,因为找到的目的MAC地址首位应该是偶数,因此绝不可能是0xff(255)   8、 WIZnet网络芯片TCP模式下的客户端与服务器有什么异同? 不同点: 客户端起启动连接(CONNECT)的作用,主动连接必须要知道连接目标,因此要正确设置SOCKET的目的(服务器)IP和目的(服务器)端口号。 服务器则是侦听的作用(LISTEN),等待连接不需要设置目的IP 和目的端口号,客户端来连接时,服务器自然知道客户端的IP地址与端口号。   相同点: 客户端服务器SOCKET 分片长度最大均为1460字节,即每次发送最大为1460字节 客户端服务器均要先配置为TCP模式 客户端服务器连接成功均为SOCK_ESTABLISHED状态(Sn_SR 寄存器) 详细内容可查看各芯片的《数据手册》   9、 TCP模式下,通过路由器,对方拔掉网线后,再插上后不能建立通讯怎么办? WIZnet芯片可以在发送过数据后,空闲既未发送也未接收达的情况,到一定时间(3秒,5秒,10秒自定义)后,发送SEND_KEEP命令,如对方正常就保持连接,如果对方在一定时间内未回应,则发出超时中断,自动关闭SOCKET端口,就可以自动重新连接,这样就能连接上了。但此命令只能用于TCP模式,如果是UDP模式下如果也想查看对方状态就需要从程序想办法了。   10、    请问,官方例程为什么不提供中断模式控制W5500的数据收发呢 因为中断读了数据后,然后还是要去读寄存器,去判断是什么中断,有可能在判断的过程中又来了N 个中断,增加中断就增加了很多不确定因素。 中断必然有响应时间,当上次中断还没结束,又产生新的中断甚至连续产生多次新的中断时,或者中断标志未及时清除,必然不能响应所有中断,此时以中断标志位来判断是否该接收,必然丢失数据。   11、    同一块芯片,同时使用多个SOCKET工作,应该注意什么问题 WIZnet目前每款网络协议芯片都可以支持多个SOCKET同时工作,但每个SOCKET可以且必须以不同的端口号做为区分。   12、    多块网络协议芯片同时使用,端口号可以设置成一样吗? 多块网络协议芯片在同一个子网中使用,应具备唯一的MAC地址,唯一的IP地址,因为不在同一块网络芯片,IP地址、MAC地址不一样,因此可以设置成一样的端口号。   13、    W5500设备,在同一网段存在多台设备的情况,运行不正常 问题描述:单个设备在局域网中的时候能够正常Ping通,而且TCP连接也使用正常没有任何问题; 解答:首先检查程序中IP地址、MAC地址是否有冲突,如果地址都没有冲突,可检查程序中配置的问题。   14、    同一块网络芯片的多个SOCKET,可以同时设置成客户端去连接电脑服务器的一个端口吗,怎么实现? 当然可以,WIZnet每款网络协议芯片都可以支持多个SOCKET同时工作,只需将芯片内每个SOCKET设置成不同端口号,分别设置成客户端去连接服务器就行, 前提是服务器的上位机软件需支持多任务,否则不能成功。   15、    用dhcp模式,插在电脑上能捕捉到discover,一插到路由器上就捕捉不到了,更别提offer了,是为什么? 首先,需要检查discover的内容,最简单的就是,你把电脑设置成固定IP,再设置成DHCP,抓一下电脑的内容,然后再对比一下   16、    将w5500的RST引到电源上面 这样软件就不用配置RST了 可行吗? 这样是不可行的,复位必须有可靠操作,让芯片满足工作条件; RST那里只是保险,但绝大多数问题是其他原因造成的,如果没有反应,先看一下W5500回的信息,有没有正确的初始化,再去找其他问题的原因。  …
Read More

基于W5500实现的考勤系统

WIZnet 产品应用小例全系列, 博客, 物聯網
概述 工具:W5500EVB,RC-522射频模块,蜂鸣器模块 编译环境:keil5 目的:通过W5500EVB讲读取到的IC卡信息上传到后台数据库,后台处理后实现浏览器端登录浏览用户打卡信息。 后台接收到相应的数据后开始处理数据并实现在浏览器端显示IC卡的ID以及绑定客户的用户名,打卡时间,签到状态等信息。该系统还添加有用户注册,登录,密码找回等功能。 过程 整个系统的实现主要分为以下两部分: 如图1所示,模块驱动及数据上传; 2,后台数据处理及前端显示; 整个系统的前端显示可通过浏览器注册,登录,添加和查询用户信息,密码找回,生产用户的Excel表格等。下面分别介绍两个部分的实现过程。   模块驱动及数据上传 该部分的实现相对简单,网上有很多关于RC-522的驱动代码,我就不在赘述了。这里主要说一下读取到卡的ID以后的操作。在这之前还要先讲一下单片机的网络连接方案。 网络连接方案有很多,例如传统的软件TCP / IP协议栈方案;较新的硬件的TCP / IP协议栈方案;软件协议栈代码量较大,对工程师来说工作量也相对较大硬件协议栈较为简单,只需要将要发送的数据交给网络芯片处理就行了。数据的发送和接收都有该芯片来实现。我们只需在应用层传输/读取数据就行了。 硬件协议栈的方案是由WIZnet的首次提出,并成功推出以太网芯片系列.W5500EVB就是采用以STM32RCT6为主控芯片加W5500以太网芯片的方案来实现网络接入的功能。 设备在读取到卡的ID以后将ID数据封装打包以后交给W5500,W5500将数据通过HTTP协议将数据发送给后台服务器并接收服务器返回的响应报文。成功发送和响应后蜂鸣器会发出50ms的响声来提示数据上传成功。如不成功则会发出100ms的响声来提示数据上传错误。数据上传的代码如下: 其中post_data_to_server()函数是将ID数据打包成HTTP报文的格式。Send函数是W5500的官方库函数用来执行数据的发送。getSn_RX_RSR()函数是读取SOCKET的接收缓存来判断是否有数据需要接收,这里是来接收HTTP服务器的响应报文。 以上就实现了IC卡数据读取和上传的功能,下面说一下后台服务器和前端实现的部分。   后台数据处理及前端显示  2、后台数据处理及前端显示 该系统的后台服务器的环境搭建采用的是 该系统的后台服务器的环境搭建采用的是Apache + php+ MySQL组合,该组合非常适合开发中小型的web应用,开发的速度比较快。本系统中在硬件设备将卡的ID数据上传到服务器以后,服务器接收并将数据与数据库中的数据进行对比,然后更新与此ID对应的用户信息。浏览器再向服务器发出请求报文,服务器将数据库中的数据发送给浏览器并显示。 根据上面说的在设备上传数据之前我们需要先将卡的ID插入到数据库中,而且还要在已登录的状态下插入、查看、删除数据。再加上权限设置,这样才算是一个相对较完整的系统设置。 首先我们在phpMyAdmin中新建自己的数据库,如图: 其中company是注册用户是所填写的用户信息; Record是用来存储用户所添加的员工打卡签到的信息; Register是用来存储用户添加的员工信息; Test是存储用户员工的签到状态; Time是存储签到时间; Uaccount是存储用户的账户信息; 以上字段是用来存储用户的各项数据和信息的,浏览器在向服务器请求数据的时候服务器会从这里将对应的数据取出交给浏览器并显示。 服务器部分的功能是由服务器脚本语言PHP来编写实现的。首先我们要写一个系统注册和登陆的页面,然后将注册信息存储在数据库,这样下次登陆就可以直接比对数据库来判断是否为有效用户。如图为注册登陆界面: 注册登陆成功以后就可进入签到信息列表界面,该界面用来显示用户所添加的员工信息的签到状态。因为刚注册所以我们要先添加员工信息。 如图点击用户管理中心进入员工信息界面: 在该界面我们可查看、添加、修改、删除员工信息以及添加上下班时间。在完善这些信息后浏览器将这些数据信息发送给服务器,服务器再将这些数据插入到数据库中。上图中的信息列表、员工列表都是在完善员工信息和签到信息以后服务器从数据库中拿出发送到浏览器显示的结果。 这些工作完成以后服务器就可以接受来自设备上传的卡ID数据并将改数据与数据库中的已记录数据进行对比进而执行相应的操作。 此外该系统还有密码找回、生产Excel报表、用户搜索等功能。关于密码找回在登陆界面点击忘记密码然后填写注册时的邮箱就可通过邮件来重新设置自己的登陆密码;如图: 关于生产报表点击了信息列表页面的生成报表就可以直接下载系统自动生成的员工信息列表;该过程是由服务器自动完成,服务器向数据库索要用户员工信息然后生成Excel表格;如图: 关于用户搜索是在浏览器部分输入用户员工姓名信息,浏览器将这些数据提交给服务器,服务器再将这些数据与数据库中的数据进行对比然后将该员工的信息以表格的形式显示在浏览器页面,如图: 以上就是关于后台处理数据及前端浏览器显示的全部过程,到此整个系统的后台处理就完成了,我们可以通过浏览器登陆查看相关数据信息。 关于考勤系统的总结: 该系统主要有注册,登陆,密码找回,添加员工信息,设置签到时间,查看/修改/删除员工信息,查看员工签到信息以及搜索的功能。在实现这些功能的开发过程中主要运用PHP服务器脚本语言和MySQL的数据库语言以及HTML浏览器脚本语言来完成数据在数据库和服务器以及浏览器之间的传输。在浏览器显示的代码中还添加了CSS代码来修改HTML标签的样式以增强浏览器端显示的可视性。
Read More

教你如何通过MCU配置S2E为TCP Client的工作模式

串口转以太网, 博客, 物聯網
在上两篇文章中分别讲述了通过MCU配置S2E为UDP、TCP Server的工作模式”,相信小伙伴们已经对S2E的基本功能了解了一些,现在就让我们再接再厉、更上一层楼吧: 首先我们先了解一下MCU与S2E的接线方式: 1、接线方式: 2、例程说明: 打开“通过MCU配置S2E为TCP Client例程”,主程序中第一部分TIM3_Init();是设定一个帧中断的时间定时器,这是因为该例程MCU的串口是通过帧中断来接收AT命令配置S2E后返回的数据的。 第二部分USARTX_Init();初始化MCU用到的串口,这里用USART1_Config();是printf功能,用于查看调试信息。USART2_Config();用于配置S2E,需要注意的是该串口的配置参数需要同S2E的串口配置参数一致,否则配置失败。 第三部分主循环中的TCP_Client_Mode();用于配置S2E为TCP Client模式。S2E的AT命令列表详见各个S2E型号的用户手册AT命令章节介绍。配置成功,串口打印“TCP Client Config Success!”,配置失败串口打印“TCP Client Config Fail!”。 /**************************************************** 函数名:TCP_Client_Mode 形参:无 返回值:无 函数功能:通过串口发送AT命令配置S2E模块 ****************************************************/ volatile uint8_t SendFlag = 0; void TCP_Client_Mode(void) { uint8_t RecvFlag = 1; char *state; switch (SendFlag) { case 0: { Usart_Send(USART2, "AT\r\n"); //终端检测命令 while (RecvFlag) { if (RX2_Point & FRAME_LEN) { //如果接收到数据 state = strstr((char*) RecvBuff, "OK"); //判断回复的数据中是否有“OK” if (state != NULL) { //有 RX2_Point = 0; //接收缓冲区指针置零 RecvFlag = 0; //接收标致位置零 SendFlag = 1; //发送标志位置零 printf("Recv:%s\r\n", RecvBuff); memset(RecvBuff, 0, RECV_LEN); //接收缓存清零 } else { //无 SendFlag = 100; //配置失败 RecvFlag = 0; } } } } break; case 1: { Usart_Send(USART2, "AT+ECHO=0\r\n"); //开启(1)/关闭(0)回显命令 RecvFlag = 1; while (RecvFlag) { if (RX2_Point & FRAME_LEN) { state = strstr((char*) RecvBuff, "OK"); if (state != NULL) { RX2_Point = 0;…
Read More