你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

分享自己做的以太网W5500模块资料  

[复制链接]
kangxuebin 发布时间:2014-9-2 10:24
本帖最后由 kangxuebin 于 2017-11-8 17:28 编辑 : j% Q; n, |, d+ l, C6 A

6 e4 f- g( F/ R0 |; N$ E% [' ?+ l0 ?, Y& y

4 N( L- N* T5 ?! N; E- P4 z# d[资料]STM32以太网入门培训课件- [2 I* @- s0 c) `
' }5 ?6 n, q/ T* P
从零开始使用 CubeMX 创建以太网工程/ @8 W3 d( o. U& C9 {
TS-W5500模块特点:
, e- v# q6 l+ U& E5 h3 s1、尺寸小:5CM*3CM
7 n2 G: _3 t0 C4 ?6 @# P2、4层板设计并了TVS等保护IC,差分走线,保障了良好的EMC兼容性
- I1 g! X: `- `. t. |3、5V、3V单片机都兼容
# d1 ?' @4 E( s9 v, JW5500
* y9 w7 l7 @% b% D7 ZW5500是一款全硬件TCP/IP嵌入式以太网控制器,为嵌入式系统提供了更加简易
) Y' X  M& M& G+ [% L的互联网连接方案。W5500集成了TCP/IP协议栈,10/100M以太网数据链路层(MAC)- ?' c) g/ j  d1 D  o  b' D- E4 p
及物理层(PHY),使得用户使用单芯片就能够在他们的应用中拓展网络连接。
% Z, y) |' K% O% `5 w$ E) D久经市场考验的WIZnet全硬件TCP/IP协议栈支持TCP,UDP,IPv4,ICMP,ARP,IGMP 以( N$ P% x  V# C" }  i6 C6 T
及PPPoE协议。W5500内嵌32K字节片上缓存以供以太网包处理。如果你使用W5500,7 E5 F# b$ [( h; b' u
你只需要一些简单的Socket编程就能实现以太网应用。这将会比其他嵌入式以太网方案, L# m8 Y0 j8 K9 i
更加快捷、简便。用户可以同时使用8个硬件Socket独立通讯。
. A- h4 E0 k* ^# u3 R% eW5500提供了SPI(外设串行接口)从而能够更加容易与外设MCU整合。而且,. g3 |# L1 L" M8 r/ e6 d3 `
W5500的使用了新的高效SPI协议支持80MHz速率,从而能够更好的实现高速网络通讯。
0 W6 x; Z, c) A9 }7 ]为了减少系统能耗,W5500提供了网络唤醒模式(WOL)及掉电模式供客户选择使用。
9 h2 ^3 N* t# o6 R- Y" P# y" K特点
" `$ Y1 c& z4 t; V-  支持硬件TCP/IP协议:TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE. u: C/ K6 G1 V2 t0 f' m
-  支持8个独立端口(Socket)同时通讯
5 z, }) N5 m+ D- M* n-  支持掉电模式
. q: x: u6 U# J! i" l7 m-  支持网络唤醒
; z* V$ Y* K& ~% n3 l8 g-  支持高速串行外设接口(SPI模式0,3)
6 i6 B3 C6 `  o6 A! I-  内部32K字节收发缓存
" W: o1 i8 f7 V- f. }0 a" P5 ^-  内嵌10BaseT/100BaseTX 以太网物理层(PHY)
- x# b* J* v. i' H/ \-  支持自动协商(10/100-Based全双工/半双工)% ^9 E- o! U5 v  _0 G, [: h- y2 [. u
-  不支持IP分片
0 w" ~! P' x6 k: u' K/ @7 `. D-  3.3V工作电压,I/O信号口5V耐压;
1 E+ {' y" l3 G$ x! z; L2 M5 `: Y-  LED状态显示(全双工/半双工,网络连接,网络速度,活动状态). K# h& V7 i. K  }4 W
-  48引脚LQFP无铅封装(7x7mm, 0.5mm 间距)  s" b7 X5 n, x2 x
W5500 数据手册 版本1.0 (2013八月)    3 / 67
( y2 G* S' A6 y目标应用9 R8 [* q" W9 X( W& p
W5500适合于以下嵌入式应用:2 G9 v( ^0 G1 g
-  家庭网络设备: 机顶盒、个人录像机、数码媒体适配器
; g9 j, G. \  u& ^-  串行转以太网: 门禁控制、LED显示屏、无线AP继电器等* _* j) K& v# T3 l: [
-  并行转以太网: POS/微型打印机、复印机3 s3 }; f- m: v- V
-  USB转以太网: 存储设备、网络打印机9 T+ k. ~2 w- T+ t4 {
-  GPIO转以太网: 家庭网络传感器$ |7 a. z" _) {5 h) K7 D9 |
-  安全系统: 数字录像机、网络摄像机、信息亭' p, }$ n  R; m5 h0 t+ ~( ]3 n8 A9 v( \
-  工厂和楼宇自动化控制系统  g# _0 X& C3 N
-  医疗监测设备
0 ~& [' ?+ c9 s. }  r+ a* u-  嵌入式服务器
# R2 }- i$ `4 N( J TS-W5500.jpg
3 M3 `0 _; m6 d) h0 Q% C& | W5500模块原理图V1.0.pdf (42.72 KB, 下载次数: 2143)

评分

参与人数 1 ST金币 +1 收起 理由
shizongliang007 + 1 赞一个!

查看全部评分

1 收藏 17 评论101 发布时间:2014-9-2 10:24

举报

101个回答
kangxuebin 回答时间:2014-9-2 10:48:51

RE: 分享自己做的以太网W5500模块资料

自己顶下
Ace3500 回答时间:2017-1-3 16:45:11
楼主大大,我下了你的代码,做了些修改,有一些问题请教一下:主要是我的引脚用的跟你的不太一样,我把引脚改了,SPI也就由SPI1改为相应的SPI2了,然后按理说应该能ping通了,可是我在我电脑上还是ping不通代码中设置的IP:192.168.1.200.(我自己电脑IP我设置为192.168.1.250了,所以是在一个网段的)。跪求楼主大大帮我看看,非常感谢。2 k, o% U: ?% }  C& q
这是我做的一些修改内容:- M# B1 w' b& N
我看到你的引脚是这样连接的:(箭头后面是我改成了这些引脚)$ w) H; W. ]* ]5 d1 i9 g+ [5 t! y  x
*              PA8 -> W5500_RST        ---------->PA159 X& y8 ?* y8 y" v( C
*              PA9 -> W5500_INT          ---------->PA8   
; X* ]  N/ t% b: C! Y *              PA4 -> W5500_SCS          ---------->PB12   
1 N) u; ^( E3 y2 R! w *              PA5 -> W5500_SCK          ---------->PB13  ) Q, k7 k; Z' T
*              PA6 -> W5500_MISO         ---------->PB14   1 f9 n& p# @2 W4 C0 c
*              PA7 -> W5500_MOSI        ---------->PB15
. v# E- t. @9 e3 B+ S下面的引脚图是我摘出来的电路图。
5 v' b$ v, m: e6 b这是我改动代码的地方:5 o6 W+ `* N0 Z0 A
(1)初始化SPI1改为初始化SPI2(因为我用的是PB12、13、14、15,我看到数据手册里这几个引脚是SPI2)
- q/ ^( a. j9 q& A4 H' s
  1. /*4 U/ J% {8 E8 j+ @9 t$ g: p
  2.         //初始化SPI1
    8 d( q& W& d* q% w9 ?( v/ C
  3.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_SPI1 | RCC_APB2Periph_AFIO, ENABLE);        : b6 R4 m# z8 t9 y5 _' f9 g0 R
  4. */  \" _. v0 d8 Z" k( A
  5.         //初始化SPI2        +++++++
    . i! m  t( k; B$ `, q
  6.         RCC_APB1PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB1Periph_SPI2 | RCC_APB2Periph_AFIO, ENABLE);        ! A6 A& E$ l" s, i3 X
  7.        
复制代码
(2)初始化SCK、MISO、MOSI引脚,把你代码中的引脚改成了GPIOB_13/14/15
0 f1 m' C4 }- N
  1. /*初始化SCK、MISO、MOSI引脚 ++++++++*/
    1 g  z/ P% @, Y+ u
  2.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
    0 k1 i: |3 L# Q5 N1 Y' E7 W
  3.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    $ u3 e7 K8 `1 p  |( k  V+ x
  4.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    $ Q& X/ V/ @, c; m: |  r# H% I. e
  5.         GPIO_Init(GPIOB, &GPIO_InitStructure);
    ( j/ N" s; |. g- K1 w$ M
  6.         GPIO_SetBits(GPIOB,GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
复制代码
(3)初始化CS引脚,在这里我发现这些引脚使用宏定义的,而且我看到了相关的三个宏,所以我顺便吧这三个宏都改了:
8 _' ~( d9 a8 k6 r$ j4 x
  1. //初始化CS引脚
复制代码
  1. /***************----- W5500 GPIO定义 -----***************/- U2 o& V4 R) a3 P
  2. //#define W5500_SCS                GPIO_Pin_4     //定义w5500的cs引脚(PA4)
    & }; ?, P4 O1 j" v
  3. //#define W5500_SCS_PORT        GPIOA
    1 Y1 i0 _1 V0 j: b7 n# c
  4. //        3 q- @4 u9 ~$ a8 d
  5. //#define W5500_RST                GPIO_Pin_8     //定义w5500的RST引脚(PA8)
    % b9 U. W9 _6 X5 q6 D3 `+ k
  6. //#define W5500_RST_PORT        GPIOA
    8 E2 p1 x3 P$ p
  7.   Y& H: {6 f1 W
  8. //#define W5500_INT                GPIO_Pin_9     //定义w5500的INT引脚(P9A)
    ! Z3 e8 k- O% ~" O; ~
  9. //#define W5500_INT_PORT        GPIOA4 c) }) \  |" y0 U+ W: V9 t" C

  10. 1 U1 M* M- O3 z: n) I% l: X3 u5 W
  11. /**********  LSY ----- W5500 GPIO定义----- ************/
    ) _( T4 q/ d- M: ^5 e- H) _" E
  12. #define W5500_SCS                GPIO_Pin_12   //<span style="line-height: 1.5;">定义w5500的cs引脚</span><span style="line-height: 1.5;">    --->(PB12)</span>
复制代码
(4)初始化SPI,这里基本参数我都没变,只改了这个参数(由SPI1改为SPI2了)
9 E. K. g% i: V0 u6 M
  1. SPI_Init(SPI2,&SPI_InitStructure);   
复制代码
(5)使能SPI1也改为使能SPI2了:) _- ~& @/ `4 U& @* N6 y' j; I
  1. SPI_Cmd(SPI2,ENABLE);       
复制代码
就改了这些,我是漏改了什么吗?跪求楼主大大帮我看看,非常感谢。7 h0 G! T: ?3 O7 V5 Y8 f

8 U$ B& X4 O  u. D; F( Y* `7 \% @) E. g8 {3 f6 s3 K, |/ q2 p2 @+ v5 W0 M
' V* E9 o/ c/ V5 F& K

yinjiaotu

yinjiaotu
jzt2497871470 回答时间:2015-11-19 10:58:20
        if(Read_W5500_SOCK_1Byte(0,Sn_SR) != SOCK_INIT)//如果socket打开失败
8 M6 u+ }% d0 g- z0 m        {
" L1 L, G5 |8 {' ~6 T; e) _0 p+ z                Write_W5500_SOCK_1Byte(0,Sn_CR,CLOSE);//打开不成功,关闭Socket
. W# K/ V' p5 ~: Y" p2 M& ?, @) n                return FALSE;//返回FALSE(0x00)0 F% S2 Y+ U* S6 K$ m: {! a% A
        }
( Q( R& p! a3 y4 C4 p1 z$ D你好, 有人看看 socket一直打开失败是什么原因呢,  我查了一下,好像返回的是0x89
我爱下载 回答时间:2014-9-2 12:44:46

RE: 分享自己做的以太网W5500模块资料

看看楼上的大作
justloong 回答时间:2014-9-3 21:46:11

回复: 分享自己做的以太网W5500模块资料

 学习学习
tianyasu37 回答时间:2014-9-4 13:05:27

回复: 分享自己做的以太网W5500模块资料

学习学习,最近也要搞这个东西
青鱼-404845 回答时间:2014-9-4 13:44:15

RE: 分享自己做的以太网W5500模块资料

谢谢楼主分享
10-软件设计 回答时间:2014-9-6 21:37:53

RE: 分享自己做的以太网W5500模块资料

STM32F103-STK功能最全的例子源代码
dengxindieying 回答时间:2014-9-15 13:32:17

RE: 分享自己做的以太网W5500模块资料

学习学习,最近也要搞这个东西
lyong0704 回答时间:2014-9-17 09:00:34

回复: 分享自己做的以太网W5500模块资料

学习学习!
STM@1986 回答时间:2014-9-17 09:21:14

回复: 分享自己做的以太网W5500模块资料

谢谢分享
, |: T. m; p' Q$ [. E5 M 
tbbt 回答时间:2014-9-21 09:22:15

回复: 分享自己做的以太网W5500模块资料

回复: 分享自己做的以太网W5500模块资料
wzhansen-121214 回答时间:2014-9-22 14:53:52

回复: 分享自己做的以太网W5500模块资料

学习学习!
hbvictor2012 回答时间:2014-9-24 22:12:15

RE: 分享自己做的以太网W5500模块资料

好东西别错过~~~
wy2014 回答时间:2014-10-9 11:31:42

回复: 分享自己做的以太网W5500模块资料

 顶
candong521 回答时间:2014-10-16 14:56:12

回复: 分享自己做的以太网W5500模块资料

看看那先

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版