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

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

[复制链接]
kangxuebin 发布时间:2014-9-2 10:24
本帖最后由 kangxuebin 于 2017-11-8 17:28 编辑
# o% A% p6 c3 G$ J9 B8 T2 q& l) ?. L2 \! m: [9 N/ ]
2 R8 l4 G8 \- R. U0 |! q" e  H. d" y

. w/ R' z% {% j: A/ D% O) z7 R[资料]STM32以太网入门培训课件
; J+ w, |( }& _* v- i3 R) N
) p; n: w. a. o- }# T' l' E! A
从零开始使用 CubeMX 创建以太网工程
; [7 u$ C8 \( T1 c* f( g8 S* J. {TS-W5500模块特点:7 X/ H, Z3 }" Q) C. Y7 i
1、尺寸小:5CM*3CM
1 J, \- B* z  A2 r0 K1 H( [7 @2、4层板设计并了TVS等保护IC,差分走线,保障了良好的EMC兼容性7 \# y, v9 I! P& u4 N
3、5V、3V单片机都兼容/ s: m, u$ ]% T
W5500
( k# ~' V1 n" ]. o9 gW5500是一款全硬件TCP/IP嵌入式以太网控制器,为嵌入式系统提供了更加简易
! N- h! @* K. w' d/ b6 [的互联网连接方案。W5500集成了TCP/IP协议栈,10/100M以太网数据链路层(MAC)
: `4 A. c5 w9 g1 i3 ?$ s6 ?及物理层(PHY),使得用户使用单芯片就能够在他们的应用中拓展网络连接。
7 x$ x5 |/ d% S) D4 J久经市场考验的WIZnet全硬件TCP/IP协议栈支持TCP,UDP,IPv4,ICMP,ARP,IGMP 以
! \5 e! o( S& i3 V$ m及PPPoE协议。W5500内嵌32K字节片上缓存以供以太网包处理。如果你使用W5500,
# l' D. T4 {6 y4 ]* ^你只需要一些简单的Socket编程就能实现以太网应用。这将会比其他嵌入式以太网方案; Y+ r- a! ]: s/ p7 S
更加快捷、简便。用户可以同时使用8个硬件Socket独立通讯。
1 A5 z- ?5 D; `0 T# |9 NW5500提供了SPI(外设串行接口)从而能够更加容易与外设MCU整合。而且,
. U4 M) s6 S- P0 ]9 vW5500的使用了新的高效SPI协议支持80MHz速率,从而能够更好的实现高速网络通讯。' Q' _5 b, J) [' r
为了减少系统能耗,W5500提供了网络唤醒模式(WOL)及掉电模式供客户选择使用。- S2 m5 V( n/ _/ K
特点# S' s; `$ f( T1 [' D; P% ?
-  支持硬件TCP/IP协议:TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE
; U8 c# l1 b6 j; g6 n% |-  支持8个独立端口(Socket)同时通讯1 i3 j: u& W, I& x4 O9 a
-  支持掉电模式% B" }, t1 i( ~1 A0 M9 h
-  支持网络唤醒+ G5 Y! c- {5 ~2 d3 k/ {* M
-  支持高速串行外设接口(SPI模式0,3)
9 t! R/ ~- R2 {  U  _$ \-  内部32K字节收发缓存
) ~2 }/ D1 _9 y-  内嵌10BaseT/100BaseTX 以太网物理层(PHY)
' z5 t1 q' \* @  A-  支持自动协商(10/100-Based全双工/半双工)
; W) P' H  l( ]9 q' U6 @-  不支持IP分片" i, @2 |7 \' u5 b+ O# i8 k3 |0 t$ k0 Z
-  3.3V工作电压,I/O信号口5V耐压;
+ k* B  p( y% c7 }* R! G-  LED状态显示(全双工/半双工,网络连接,网络速度,活动状态)8 @- [4 X" K- y0 n$ u
-  48引脚LQFP无铅封装(7x7mm, 0.5mm 间距)/ ^) Z$ N2 Z) H. P( v" |
W5500 数据手册 版本1.0 (2013八月)    3 / 67
( j+ }6 F& l$ T( y+ U9 L4 H" A5 ^目标应用2 b; P( Y* a# O+ |. C3 F; [
W5500适合于以下嵌入式应用:% z$ t, c* x8 {7 M& n0 t) n# ?# K
-  家庭网络设备: 机顶盒、个人录像机、数码媒体适配器
& k% ]6 m1 D$ t$ \6 ~* N8 \+ Y-  串行转以太网: 门禁控制、LED显示屏、无线AP继电器等
/ @! ?! M4 Q/ c" S. Q! C. y-  并行转以太网: POS/微型打印机、复印机0 z- O6 \$ Y4 t
-  USB转以太网: 存储设备、网络打印机# o+ ]9 o  Q! _! }/ G$ S! a$ M: C
-  GPIO转以太网: 家庭网络传感器4 H& p) S( p* N2 `5 C+ U* ]  A
-  安全系统: 数字录像机、网络摄像机、信息亭  i! L* I) w7 X( J" F+ K" K; j
-  工厂和楼宇自动化控制系统
0 h( Z1 ]: A; ?/ J4 }9 w-  医疗监测设备
$ x5 Q! f5 ^  z-  嵌入式服务器
2 q; S. W  r, i7 R. D' B TS-W5500.jpg
- D! N# r# _3 p6 z 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了,所以是在一个网段的)。跪求楼主大大帮我看看,非常感谢。8 _4 y( p/ Q5 q
这是我做的一些修改内容:4 q% s) O, W7 K: m8 Z& C. E
我看到你的引脚是这样连接的:(箭头后面是我改成了这些引脚)( [/ F3 w& U" ^! x' {6 _
*              PA8 -> W5500_RST        ---------->PA15
' [2 a6 G: E( o" u+ @, {6 n! Q6 N *              PA9 -> W5500_INT          ---------->PA8   + `7 g5 T( G8 x0 t, M8 g& T5 u
*              PA4 -> W5500_SCS          ---------->PB12    9 ]& Y% d) R# b" @: e( p
*              PA5 -> W5500_SCK          ---------->PB13  
1 `* f# _$ C$ x4 e+ i1 n" g+ Z! e *              PA6 -> W5500_MISO         ---------->PB14   
1 C) N& F! i3 r1 @ *              PA7 -> W5500_MOSI        ---------->PB15' I$ |" d4 C7 u9 l5 v
下面的引脚图是我摘出来的电路图。, j% o. g! u/ M. n
这是我改动代码的地方:
/ _- @. g6 Z# s8 R+ U" g(1)初始化SPI1改为初始化SPI2(因为我用的是PB12、13、14、15,我看到数据手册里这几个引脚是SPI2)
! S% i( g7 S1 I2 H2 G  @% f4 L/ u
  1. /*$ ^* j3 }3 p0 g$ U9 x6 a! v
  2.         //初始化SPI1 , B# A4 e/ V* L- l  b& D) m3 ~
  3.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_SPI1 | RCC_APB2Periph_AFIO, ENABLE);        7 n' L! J) M- W, a4 \4 ]( }
  4. */" S8 w7 k5 Y; J* ]  g7 G1 m
  5.         //初始化SPI2        +++++++5 a5 Y) f; l9 C! S* E
  6.         RCC_APB1PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB1Periph_SPI2 | RCC_APB2Periph_AFIO, ENABLE);       
    : }* N- e4 Y% D" g  W1 y- }
  7.        
复制代码
(2)初始化SCK、MISO、MOSI引脚,把你代码中的引脚改成了GPIOB_13/14/15
$ a6 X7 Z8 x4 _7 {( H
  1. /*初始化SCK、MISO、MOSI引脚 ++++++++*/
    * d* |- S5 H' W5 T  v% x* I. ^& J
  2.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
    2 @3 A8 {9 d4 W+ ]
  3.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    ' C: \7 w2 P9 M! ~
  4.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;$ V/ ?. d5 ?( N- z
  5.         GPIO_Init(GPIOB, &GPIO_InitStructure);( R5 b- G0 c9 v2 x
  6.         GPIO_SetBits(GPIOB,GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
复制代码
(3)初始化CS引脚,在这里我发现这些引脚使用宏定义的,而且我看到了相关的三个宏,所以我顺便吧这三个宏都改了:
4 q4 M' R8 D, h# ?  N! y
  1. //初始化CS引脚
复制代码
  1. /***************----- W5500 GPIO定义 -----***************/" M9 C& t, I* p4 g! l* C
  2. //#define W5500_SCS                GPIO_Pin_4     //定义w5500的cs引脚(PA4)# ?8 E# Z' y1 d
  3. //#define W5500_SCS_PORT        GPIOA# h2 _; L1 v2 o$ P3 U  T# y  L7 @
  4. //       
    3 l% H2 n" N; o& s3 |
  5. //#define W5500_RST                GPIO_Pin_8     //定义w5500的RST引脚(PA8)" u9 L: w) L8 _. E1 n/ o; {4 b
  6. //#define W5500_RST_PORT        GPIOA6 W4 F* o1 v" V, k  w& V

  7. * Z5 ^' p) T  ]6 E5 ~$ _/ j& o6 C
  8. //#define W5500_INT                GPIO_Pin_9     //定义w5500的INT引脚(P9A). A6 u: V! O' e) W) \! }4 J7 e
  9. //#define W5500_INT_PORT        GPIOA
    ! L. [3 P. R% o  W8 e1 v1 B! E
  10. ( M% o- y, c1 }/ B3 B8 r3 r! C
  11. /**********  LSY ----- W5500 GPIO定义----- ************/
    . l1 l# r0 i* C" ~, x
  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了)
5 h! d' D0 |) Y3 M6 A% \8 V/ g7 E
  1. SPI_Init(SPI2,&SPI_InitStructure);   
复制代码
(5)使能SPI1也改为使能SPI2了:4 R: q- z# K; e/ B
  1. SPI_Cmd(SPI2,ENABLE);       
复制代码
就改了这些,我是漏改了什么吗?跪求楼主大大帮我看看,非常感谢。- M) @7 s! H7 Q9 F( ]: k3 c

3 S4 A6 H4 c4 W0 f" m* [
! B5 V: [. e$ @# V
5 p+ j8 N+ m4 H/ s4 K: o; ?

yinjiaotu

yinjiaotu
jzt2497871470 回答时间:2015-11-19 10:58:20
        if(Read_W5500_SOCK_1Byte(0,Sn_SR) != SOCK_INIT)//如果socket打开失败& Y- L7 p# \1 v7 x  M" O
        {
3 h; O- Q7 I( ?' D                Write_W5500_SOCK_1Byte(0,Sn_CR,CLOSE);//打开不成功,关闭Socket
) f4 T; z& F( k& x                return FALSE;//返回FALSE(0x00)
( o) C9 O! O* _4 N        }
' Y' f' Q# N7 C: _% [你好, 有人看看 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模块资料

谢谢分享
% W1 l: E/ f, A2 U( U( k, o 
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 手机版