请选择 进入手机版 | 继续访问电脑版

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

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

[复制链接]
kangxuebin 发布时间:2014-9-2 10:24
本帖最后由 kangxuebin 于 2017-11-8 17:28 编辑 4 k5 f# [5 m1 f4 I

$ Z3 A/ }( ^+ _1 {# |- E4 h  N* @0 T( H. P& J# |

# g1 v! y* ?* m. ]0 w" h( S[资料]STM32以太网入门培训课件. w' V' G5 c5 z  V8 @+ m4 l
" }' g. G) @" N2 N
从零开始使用 CubeMX 创建以太网工程
% O6 t. Y7 C8 F7 Q/ [TS-W5500模块特点:
5 s5 B. G5 z/ ~# J' |' p& h1、尺寸小:5CM*3CM
0 P  o/ {' O7 S3 W2、4层板设计并了TVS等保护IC,差分走线,保障了良好的EMC兼容性
9 }( N4 E: ?# J% ?! I# Q7 x( O3、5V、3V单片机都兼容
3 c$ x( j( p# vW55004 C$ n8 o+ v/ v. v( S* }5 [! D
W5500是一款全硬件TCP/IP嵌入式以太网控制器,为嵌入式系统提供了更加简易% K/ H0 D9 T7 V9 Y" J7 u0 Z
的互联网连接方案。W5500集成了TCP/IP协议栈,10/100M以太网数据链路层(MAC)
/ t" R, l1 v5 p* n- F% l及物理层(PHY),使得用户使用单芯片就能够在他们的应用中拓展网络连接。
8 k9 i8 N: U8 A2 L久经市场考验的WIZnet全硬件TCP/IP协议栈支持TCP,UDP,IPv4,ICMP,ARP,IGMP 以6 B$ U7 ^7 \/ U: p7 |3 u5 d# `4 q
及PPPoE协议。W5500内嵌32K字节片上缓存以供以太网包处理。如果你使用W5500,! c, l; _: {0 w$ u
你只需要一些简单的Socket编程就能实现以太网应用。这将会比其他嵌入式以太网方案
( g+ t, M& C; w更加快捷、简便。用户可以同时使用8个硬件Socket独立通讯。
# a# S9 A* }) H4 t  }! mW5500提供了SPI(外设串行接口)从而能够更加容易与外设MCU整合。而且,, ], b; d* X6 ]" Z+ p$ ]' E
W5500的使用了新的高效SPI协议支持80MHz速率,从而能够更好的实现高速网络通讯。
5 M8 U5 y: ], \# A( o( E$ e为了减少系统能耗,W5500提供了网络唤醒模式(WOL)及掉电模式供客户选择使用。2 z5 S3 Y3 l! q5 N; \
特点
: ]( N/ Y2 ?+ l; I; G-  支持硬件TCP/IP协议:TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE
7 R3 ~  Q$ f: s- w& u/ a& j-  支持8个独立端口(Socket)同时通讯
8 x0 r) F& F3 Q3 y4 r* U-  支持掉电模式% ~- J  @  M2 a2 D; X5 t
-  支持网络唤醒+ T0 K1 Y7 P. Q8 q0 ]- M
-  支持高速串行外设接口(SPI模式0,3)
; Z7 k5 J% t3 E! l+ B-  内部32K字节收发缓存
% w7 ]& X3 k: q% q' f-  内嵌10BaseT/100BaseTX 以太网物理层(PHY)
* q; C1 T- T2 U" p-  支持自动协商(10/100-Based全双工/半双工)
2 n4 E/ |2 Q' y+ @3 h-  不支持IP分片
. p1 @. ?- \8 o4 C# d! \-  3.3V工作电压,I/O信号口5V耐压;5 b) W( s6 S2 U
-  LED状态显示(全双工/半双工,网络连接,网络速度,活动状态)( C- Y& A4 D9 |9 l4 U6 a
-  48引脚LQFP无铅封装(7x7mm, 0.5mm 间距)  a) A- N3 y8 H5 U& ]
W5500 数据手册 版本1.0 (2013八月)    3 / 67$ d1 c6 n+ Z/ F" B& c
目标应用( ~5 v, ?4 ~( |5 h+ p
W5500适合于以下嵌入式应用:8 U) ~9 f( X# Y# N, e3 o# h
-  家庭网络设备: 机顶盒、个人录像机、数码媒体适配器6 D0 w) s4 X+ ~; ]
-  串行转以太网: 门禁控制、LED显示屏、无线AP继电器等
# y( ^" C% }- K: ^5 d/ ?-  并行转以太网: POS/微型打印机、复印机( W: |9 m& q* j8 b& b
-  USB转以太网: 存储设备、网络打印机% v( A5 a$ Y# R. s( I# ]
-  GPIO转以太网: 家庭网络传感器
2 t9 m6 s+ i$ B3 p2 S-  安全系统: 数字录像机、网络摄像机、信息亭; l. I& W7 `$ d: c( _7 r9 `
-  工厂和楼宇自动化控制系统
! j1 h( |0 N1 C7 Q/ b2 Y% r4 c-  医疗监测设备
- j* p/ V) {4 m5 d( X( ?- L-  嵌入式服务器
$ S, B. }3 }* j TS-W5500.jpg
  ]' A. o: d6 X3 y1 b+ F 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了,所以是在一个网段的)。跪求楼主大大帮我看看,非常感谢。
; |$ A% R% w0 t( H; Q) _) y9 s. m这是我做的一些修改内容:" ]/ R- y  \# |
我看到你的引脚是这样连接的:(箭头后面是我改成了这些引脚)
4 I+ M6 Y1 E' L4 }! B: i *              PA8 -> W5500_RST        ---------->PA15% c) y5 [  b' V6 \( R- M2 n- G
*              PA9 -> W5500_INT          ---------->PA8   
0 f& D& y/ ?/ R3 W *              PA4 -> W5500_SCS          ---------->PB12    6 A* k  F" E9 A. X  |& [
*              PA5 -> W5500_SCK          ---------->PB13  
! Y" x8 }0 Q3 p6 w1 J *              PA6 -> W5500_MISO         ---------->PB14   ) I3 D4 N- C7 ^4 C; D" x
*              PA7 -> W5500_MOSI        ---------->PB15
/ \: o3 u  I5 z, k; B% q0 n1 K下面的引脚图是我摘出来的电路图。, R4 M/ ]) w: `% p8 n' j+ t0 Z
这是我改动代码的地方:- k( }9 N/ k) H4 d7 O/ @, d
(1)初始化SPI1改为初始化SPI2(因为我用的是PB12、13、14、15,我看到数据手册里这几个引脚是SPI2). b* n  D: c2 ^. [, O. S8 q
  1. /*
    5 B% x, I2 X+ L
  2.         //初始化SPI1 0 w- S2 i& `% ~, A2 Z: z
  3.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_SPI1 | RCC_APB2Periph_AFIO, ENABLE);       
    ! B4 t/ G$ o4 K
  4. */
    - v8 X  V6 k( @! u) B  t
  5.         //初始化SPI2        +++++++( a1 X" ~" U9 T
  6.         RCC_APB1PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB1Periph_SPI2 | RCC_APB2Periph_AFIO, ENABLE);       
    , B4 |( ~3 ?- ?+ v2 V) V
  7.        
复制代码
(2)初始化SCK、MISO、MOSI引脚,把你代码中的引脚改成了GPIOB_13/14/15/ m" S8 b+ e2 ]9 A4 A9 _; m: U
  1. /*初始化SCK、MISO、MOSI引脚 ++++++++*/5 {' q7 M7 A: I3 K" X
  2.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;. I: r5 m! i2 T  g* [
  3.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    , R% N) h. t3 h$ y. g( I8 F
  4.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    ! e! ^0 x) Z( A
  5.         GPIO_Init(GPIOB, &GPIO_InitStructure);
    ' ^' B2 n. f: r$ T' x, }9 c3 v
  6.         GPIO_SetBits(GPIOB,GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
复制代码
(3)初始化CS引脚,在这里我发现这些引脚使用宏定义的,而且我看到了相关的三个宏,所以我顺便吧这三个宏都改了:% b7 I& P# u0 \/ N* I& W2 }
  1. //初始化CS引脚
复制代码
  1. /***************----- W5500 GPIO定义 -----***************/
    - U2 \" T' B4 @8 U
  2. //#define W5500_SCS                GPIO_Pin_4     //定义w5500的cs引脚(PA4)
    9 C: g) }3 A. t; i8 u3 p/ L
  3. //#define W5500_SCS_PORT        GPIOA  d  K. P# u5 s( C! q# D9 F
  4. //       
    9 d  s* E' P3 G
  5. //#define W5500_RST                GPIO_Pin_8     //定义w5500的RST引脚(PA8)/ H3 J: k, r4 h: O  w
  6. //#define W5500_RST_PORT        GPIOA0 c  n& S! x/ b9 O6 Q. ]
  7. " g" O# c& ~# |0 ^
  8. //#define W5500_INT                GPIO_Pin_9     //定义w5500的INT引脚(P9A). ]; }3 [. e8 G, f
  9. //#define W5500_INT_PORT        GPIOA* H: n' u: q" Y4 y& C
  10. / O* M0 E% ?' R5 q: B
  11. /**********  LSY ----- W5500 GPIO定义----- ************/0 o1 V, H% K2 g* q$ P, e( I8 B
  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了)
. Q* V/ n/ q2 k9 `, M. h0 H
  1. SPI_Init(SPI2,&SPI_InitStructure);   
复制代码
(5)使能SPI1也改为使能SPI2了:5 r8 ], n+ O0 W2 j! R+ N- G: L& u, T
  1. SPI_Cmd(SPI2,ENABLE);       
复制代码
就改了这些,我是漏改了什么吗?跪求楼主大大帮我看看,非常感谢。  a/ d: ^$ w" Z1 K  c9 l2 u$ K
! ^; w* {" w. p5 v. P; R( s
8 _" \! [( L" B2 l
. V( n6 f1 r$ h( C

yinjiaotu

yinjiaotu
jzt2497871470 回答时间:2015-11-19 10:58:20
        if(Read_W5500_SOCK_1Byte(0,Sn_SR) != SOCK_INIT)//如果socket打开失败
- E: G& c: L! ?9 Z        {. C' n* i5 b: b4 H0 @
                Write_W5500_SOCK_1Byte(0,Sn_CR,CLOSE);//打开不成功,关闭Socket
8 ^3 w# g5 ]* A$ p, d8 |) U0 n% X                return FALSE;//返回FALSE(0x00)
4 Q+ R" D  i. e% R        }
5 B' {( P, y/ v5 j, j9 S. e你好, 有人看看 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模块资料

谢谢分享
& a/ o2 M3 U9 r( B3 y, |! e7 u" v 
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 手机版