1、如何确认WIZnet网络芯片的物理连接是否正常?
使用WIZnet的W5100、W5200、W5300、W5500等网络协议芯片,对其进行可靠的硬件复位(网络协议芯片的RESET或RST引脚)后可能出现下列现象:
(1) 芯片的LINKLED引脚输出低电平,LINKLED指示灯会被点亮(未接,接错或灯坏除外).
(2) 如果是通过网线直连电脑,电脑上本地连接显示本地连接已连接状态。如果是网线连到
路由等设备,路由等相应指示灯提示连接成功。
如果出现上述现象,表明物理连接已经成功并且芯片工作,否则需要排查相关问题。为什么WIZnet网络芯片的物理连接不正常?
2、WIZnet的W5100、W5200、W5300、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导致不能连接。
(11) 其它原因。
经过上面排查物理连接就可以连接正常了。
3、WIZnet网络芯片物理连接正常却ping不通,怎么办?
WIZnet的W5100、W5200、W5300、W5500等网络芯片是否可以ping通,不仅与物理连接等有关系,还和相关电路以及网关、子网掩码、MAC地址、IP地址配置有关系,可以从以下方面进行排除:
(1) W5100和W5300的RSET_BG引脚(1脚)所接12.3K电阻,W5200的BIAS引脚(12脚)所接28.7K电阻, 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地址必须设置在同一个子网。
(7) 如果是W5100采用并行总线方式,其SEN(31脚)必须为低,否则为高。如果是W5300
采用16位数据总线接口,其BIT16EN(18脚)必须为高,否则为低。
(8) 如果用W5300采用16位数据总线,切记其地址ADDR0不起作用,有效地址为ADDR1~ADDR9。如果从ADDR1接单片机低位(比如A0)开始,接成ADDR0对应单片机的低位(A0),则ADDR1对应到单片机的A1,即相应的偏移地址都是原来的2倍,这是需要特别注意的地方。
(9) 其它原因。
4、为什么WIZnet网络芯片可以ping通,但无法发送接收数据?
WIZnet的W5100、W5200、W5300、W5500等网络芯片可以ping通,说明相关电路以及网关、子网掩码、MAC地址、IP地址配置均正常, 如果不能建立连接发送接收数据,需要从从SOCKET配置,SOCKET状态,中断寄存器,发送接收程序,或是上位机软件的设置等进行排查 。
5、关于WIZnet网络芯片检测网关的常见问题
有较多客户在查看关于WIZnet的W5100、W5200、W5300、W5500的程序时发现在配置SOCKET之前有段检测网关的程序,有如下疑问:
6.为什么要检测网关?
其实只要不访问外网,完全可以不做这个检测,如果要访问外网,必须经过网关,做这步就是为提前知道网关是否存在,是否正常工作。
7、为什么检测网关要将目的IP地址每位加1?
在正确设置网关的情况下,去连接一个不在同一子网(外网)的目的IP,就可找到网关,而将目的IP每位加1,正好造就一个不在同一子网的目的IP,如果愿意你加2加3都可以。
8、为什么明明是UDP模式,检测网关却配置成TCP模式?
这不仅要配置为TCP,而且要配置为TCP下的客户端模式,即使是TCP下的服务器这里也得配置成客户端,因为只有客户端发起启动连接才能找到网关。
9、为什么检测网关要判断目的MAC地址首位不为0xff?
因为未找到网关以前,读出目的MAC地址所有位全为0xff, 至于为什么判断首位,因为找到的目的MAC地址首位应该是偶数,因此绝不可能是0xff(255).
10、WIZnet网络芯片TCP模式下的客户端与服务器有什么异同?
不同点:
客户端起启动连接(CONNECT)的作用,主动连接必须要知道连接目标,因此要正确设置SOCKET的目的(服务器)IP和目的(服务器)端口号。
服务器则是侦听的作用(LISTEN),等待连接不需要设置目的IP 和目的端口号,客户端来连接时,服务器自然知道客户端的IP地址与端口号。
相同点:
客户端服务器SOCKET 分片长度最大均为1460字节,即每次发送最大为1460字节
客户端服务器均要先配置为TCP模式
客户端服务器连接成功均为SOCK_ESTABLISHED状态(Sn_SR 寄存器)
11、为什么程序在TCP模式配置客户端,端口号总加1?
比如端口号为5000,如果连接成功,其端口号就是5000,不必加1。 一旦失败,多次用同一端口,去连接时,很有可能被当恶意信息而屏蔽,因此需等待一段时间后,换个新的端口号可提高连接的成功率,下次连接前加1就是这个原因。
12、TCP模式下,通过路由器,对方拔掉网线后,再插上后不能建立通讯怎么办?
WIZnet芯片可以在发送过数据后,空闲既未发送也未接收达的情况,到一定时间(3秒,5秒,10秒自定义)后,发送SEND_KEEP命令,如对方正常就保持连接,如果对方在一定时间内未回应,则发出超时中断,自动关闭SOCKET端口,就可以自动重新连接,这样就能连接上了。但此命令只能用于TCP模式,如果是UDP模式下如果也想查看对方状态就需要从程序想办法了。
13、为什么用评估板将电脑作服务器不能成功建立通讯?
用TCP/UDP软件测试程序与评估板,电脑作为客户端可以成功连接,而作为服务器则不能连接成功?
原因是,电脑IP地址与网络芯片的目的IP不一样,电脑作为为客户端,只要在一个子网,你只需成功在TCP/UDP软件上设置了网络芯片(服务器)的IP地址与端口号,就可以连接到。而电脑作为服务器,网络芯片的目的IP与电脑IP不一致,网络芯片作为客户端找不到连接对象,因此不能连接成功,只要将电脑的IP地址与网络芯片的目的IP地址设置成一样就可以了。
14、UDP模式不设置目的端口与目的IP,会不会接收不到数据?
不会,因为在UDP接收数据中已经包含了对端的所有网络信息,共8字节的报头信息(目的IP 4字节,目的端口2字节,数据长度2字节)。如果只是接收数据可不必设置, 但要发送数据, 必须知道要发给谁,必须设置目的IP与目的端口号。
15、UDP模式下为什么有丢失数据的情况?
UDP是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送,在网络质量令人十分不满意的环境下,UDP协议数据包丢失甚至会比较严重,因此谨慎选择。优点是处理速度快资源消耗少。
16、为什么用中断方式调试WIZnet芯片时发现有丢失数据的情况?
建议使用查询法,中断必然有响应时间,当上次中断还没结束,又产生新的中断甚至连续产生多次新的中断时,或者中断标志未及时清除,必然不能响应所有中断,此时以中断标志位来判断是否该接收,必然丢失数据。
17、关于同时使用多个SOCKET的问题
同一块网络芯片,同时使用多个SOCKET工作,应注意什么问题?
WIZnet目前每款网络协议芯片都可以支持多个SOCKET同时工作,但每个SOCKET可以且必须以不同的端口号做为区分。
18、同一块网络芯片的多个SOCKET,可以同时设置成客户端去连接电脑服务器的一个端口吗,怎么实现?
当然可以,WIZnet每款网络协议芯片都可以支持多个SOCKET同时工作,只需将芯片内每个SOCKET设置成不同端口号,分别设置成客户端去连接服务器就行, 前提是服务器的上位机软件需支持多任务,否则不能成功。
19、多块网络协议芯片同时使用,端口号可以设置成一样吗?
多块网络协议芯片在同一个子网中使用,应具备唯一的MAC地址,唯一的IP地址,因为不在同一块网络芯片,IP地址、MAC地址不一样,因此可以设置成一样的端口号。
20、WIZnet的网络芯片经过交换机是否驱动有问题?
多个W5200用80米超5类网线与电脑直连或通用50米超5类网线过交换机连接到电脑可以全部连接成功,但用80米经过交换机有的不能连接成功,是不是网络协议芯片驱动能力问题?
我们做过测试,将包含W5200在内的目前所有WIZnet网络芯片和电脑通过100米超5类网线连接, 无论多少次都可以连接成功并将电脑传来的数据,成功传回电脑, 证明驱动能力没问题。
至于进入交换机后有的在80米就不能成功,说明和交换机有很大关系, 可以将成功连接的W5200和连接失败的W5200交换位置查看结果,如果失败的连接成功,或成功的又连接失败,说明交换机端口有差异。 如果失败的还是失败则只能说明你线路上的RJ45或网络变压器电路参数上有少许差异,如果仅误差1,2米也算正常范围。
对于经过交换机后在80米不能连接的,可以在将交换机到W5200的距离缩短至80米以内(比如70米),将电脑到交换机的距离增加,即将交换机尽量放在靠中间的位置,使交换机起中继器的作用。 如果已经布线完成,不方便改动,则只有在交换机与W5200之间再加一个中继器或交换机已保证连接通讯。