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

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

[复制链接]
kangxuebin 发布时间:2014-9-2 10:24
本帖最后由 kangxuebin 于 2017-11-8 17:28 编辑 & h& M* [/ N2 |: @$ u6 M. X

( g* U- [/ t: Y8 x. F& s
) a& E& k' ^# r4 g/ P
# N& Q8 x, @+ h- s. o# U; `[资料]STM32以太网入门培训课件: j1 w* u/ B8 O* J5 m8 j
2 ?8 z4 b" _& ~
从零开始使用 CubeMX 创建以太网工程
; j2 K! D2 b1 s6 }; E# q) `TS-W5500模块特点:# U9 |$ r: m" L
1、尺寸小:5CM*3CM
& b, z: s8 T# Q/ ~8 `- A; y2、4层板设计并了TVS等保护IC,差分走线,保障了良好的EMC兼容性& X" m- w9 A7 `& c+ {9 A
3、5V、3V单片机都兼容* u# D4 i9 m7 D- o; o0 f
W5500
" y6 H# @; q7 t2 b- e8 c  IW5500是一款全硬件TCP/IP嵌入式以太网控制器,为嵌入式系统提供了更加简易
* d0 A! i# }+ g1 N  O的互联网连接方案。W5500集成了TCP/IP协议栈,10/100M以太网数据链路层(MAC)* Y, s# p" V& ?" M* |( L- ~! u2 F
及物理层(PHY),使得用户使用单芯片就能够在他们的应用中拓展网络连接。, e/ T1 T7 D5 v
久经市场考验的WIZnet全硬件TCP/IP协议栈支持TCP,UDP,IPv4,ICMP,ARP,IGMP 以
1 z+ P) |7 |$ h+ t及PPPoE协议。W5500内嵌32K字节片上缓存以供以太网包处理。如果你使用W5500,
  e/ S3 D$ y% ?; _# z- m你只需要一些简单的Socket编程就能实现以太网应用。这将会比其他嵌入式以太网方案
* L. ~3 b# m2 V! D7 ^) t4 f6 N更加快捷、简便。用户可以同时使用8个硬件Socket独立通讯。
% E4 U# U( g8 M9 |7 d, t: t4 {W5500提供了SPI(外设串行接口)从而能够更加容易与外设MCU整合。而且,
  I0 ]4 A4 g' p. p2 M- VW5500的使用了新的高效SPI协议支持80MHz速率,从而能够更好的实现高速网络通讯。
& `; J. }9 c: ^& e% m) w为了减少系统能耗,W5500提供了网络唤醒模式(WOL)及掉电模式供客户选择使用。
$ o) ^6 ^( E  z  ]( @) P+ J+ X特点
7 j6 S, a: ^" P$ E! f8 F-  支持硬件TCP/IP协议:TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE
8 p( j/ G. O) @/ @-  支持8个独立端口(Socket)同时通讯
8 a2 g. a- {5 \" O$ d1 a4 d2 J0 s-  支持掉电模式2 @% _6 U+ S8 M2 j* s6 u& u
-  支持网络唤醒2 y; E' y! @* R* g3 f1 F
-  支持高速串行外设接口(SPI模式0,3)6 t4 r" ~  R* h1 s
-  内部32K字节收发缓存; R6 C# v6 r( ]& x" g! ~) T
-  内嵌10BaseT/100BaseTX 以太网物理层(PHY)' R  I8 K. ?( @7 c' T
-  支持自动协商(10/100-Based全双工/半双工)! ^; U2 T0 \) M. M/ u* C7 T
-  不支持IP分片( B  u0 n1 m! u1 ]# h3 d* U
-  3.3V工作电压,I/O信号口5V耐压;
/ ]2 ?/ a) B* M; h! g-  LED状态显示(全双工/半双工,网络连接,网络速度,活动状态)
; R$ s. I0 z2 K) S9 V-  48引脚LQFP无铅封装(7x7mm, 0.5mm 间距)) P$ S7 r/ v& g5 A3 H$ s
W5500 数据手册 版本1.0 (2013八月)    3 / 67# s" _0 b, O1 L4 @1 @, M
目标应用# V: |$ j6 ^8 C( V& r+ H: I6 w
W5500适合于以下嵌入式应用:
3 r* F* I7 i' q# w, z-  家庭网络设备: 机顶盒、个人录像机、数码媒体适配器) j0 E: p  C1 a. [
-  串行转以太网: 门禁控制、LED显示屏、无线AP继电器等4 }; b5 b6 u4 n% ~6 t0 o, n
-  并行转以太网: POS/微型打印机、复印机+ j; v6 y# r7 w3 T0 O0 Y, s+ I
-  USB转以太网: 存储设备、网络打印机
7 B6 a8 g& h3 P7 i% h-  GPIO转以太网: 家庭网络传感器
7 F' o3 h+ a1 t" D- q. G-  安全系统: 数字录像机、网络摄像机、信息亭6 \. d; M2 g$ _9 |- C0 R  }0 ?
-  工厂和楼宇自动化控制系统
, H+ w. ^# H" k0 ~-  医疗监测设备9 C8 {/ h# d" \* ^0 V. A
-  嵌入式服务器
1 p1 n9 N0 I. k8 A( p TS-W5500.jpg
3 J) o1 }* q0 o/ Z; f" e 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了,所以是在一个网段的)。跪求楼主大大帮我看看,非常感谢。
' K; M4 W8 E# ?这是我做的一些修改内容:
; c, \) O0 R; }2 \& h& c我看到你的引脚是这样连接的:(箭头后面是我改成了这些引脚)  }5 |5 k' O6 h( J0 z2 r$ e
*              PA8 -> W5500_RST        ---------->PA15
0 S: M) e" c& L! a$ j *              PA9 -> W5500_INT          ---------->PA8   % I- `/ }; }4 g5 R5 x  Q" {! X
*              PA4 -> W5500_SCS          ---------->PB12    . f; r6 V2 n/ p! @& t: v' p8 s
*              PA5 -> W5500_SCK          ---------->PB13  
3 c+ B  `7 A  } *              PA6 -> W5500_MISO         ---------->PB14   1 ^* F; y; y, }# r/ B3 o
*              PA7 -> W5500_MOSI        ---------->PB156 Q& F+ G( G  z& s* e9 P1 e
下面的引脚图是我摘出来的电路图。5 F* U6 z; f! K; z1 T
这是我改动代码的地方:
$ H7 \/ @  p; B( I! D(1)初始化SPI1改为初始化SPI2(因为我用的是PB12、13、14、15,我看到数据手册里这几个引脚是SPI2)
# p4 r3 }; E" x) l. n1 {7 z
  1. /*3 ~% Y- `0 W+ ?% |9 z
  2.         //初始化SPI1
    % m6 q3 U9 _  f+ m9 F/ x
  3.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_SPI1 | RCC_APB2Periph_AFIO, ENABLE);        3 o/ x/ C& e6 @' ?
  4. */2 M. C2 ?2 y) y. r% l
  5.         //初始化SPI2        +++++++
    4 b% A! ?% p/ h' |
  6.         RCC_APB1PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB1Periph_SPI2 | RCC_APB2Periph_AFIO, ENABLE);        : s" c* ~/ U8 I
  7.        
复制代码
(2)初始化SCK、MISO、MOSI引脚,把你代码中的引脚改成了GPIOB_13/14/15
* m  G, O6 ^1 c: m5 b2 O5 g
  1. /*初始化SCK、MISO、MOSI引脚 ++++++++*/
    1 N/ d6 Z$ i3 }$ a7 r& K6 n
  2.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;& P+ d3 r7 ^+ O* p
  3.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    . c& N7 w1 w0 }
  4.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    # a& g; P* D& R$ J) O. b/ j. S
  5.         GPIO_Init(GPIOB, &GPIO_InitStructure);* n, g: d/ e. ~- p. [
  6.         GPIO_SetBits(GPIOB,GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
复制代码
(3)初始化CS引脚,在这里我发现这些引脚使用宏定义的,而且我看到了相关的三个宏,所以我顺便吧这三个宏都改了:
: i" Q7 C0 O, L- \& D
  1. //初始化CS引脚
复制代码
  1. /***************----- W5500 GPIO定义 -----***************/9 T, h3 B4 ^% P5 q
  2. //#define W5500_SCS                GPIO_Pin_4     //定义w5500的cs引脚(PA4)
    7 |4 b; f9 L$ N
  3. //#define W5500_SCS_PORT        GPIOA
    ' g2 {: B& b5 o
  4. //        ! R& P) `6 ]9 c, V/ w4 `8 r& ~  ~/ w
  5. //#define W5500_RST                GPIO_Pin_8     //定义w5500的RST引脚(PA8); ?) Y( e) ?3 y, Z- q
  6. //#define W5500_RST_PORT        GPIOA0 \! X3 ^$ @- B# e0 h

  7. , w" u0 b0 I! `2 k2 x1 r; [
  8. //#define W5500_INT                GPIO_Pin_9     //定义w5500的INT引脚(P9A)
    1 ]) Y; M7 P; E& J% d+ A
  9. //#define W5500_INT_PORT        GPIOA
    . y" q! r# x! k3 S: O

  10. & d6 Q+ O( I3 i4 H" K% c% I' }
  11. /**********  LSY ----- W5500 GPIO定义----- ************/- ^1 S. ^6 \* g: [9 q4 G/ |
  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了)
) j  _3 a$ \0 B: Y9 `6 ]8 q
  1. SPI_Init(SPI2,&SPI_InitStructure);   
复制代码
(5)使能SPI1也改为使能SPI2了:4 a$ o, h6 t1 ~& L
  1. SPI_Cmd(SPI2,ENABLE);       
复制代码
就改了这些,我是漏改了什么吗?跪求楼主大大帮我看看,非常感谢。
6 ~& M7 B- c: s
6 r/ o# X1 c) o/ X* q$ @, Q" [$ t2 B1 `
% R8 s/ I5 `7 b. B  ~' s& k

yinjiaotu

yinjiaotu
jzt2497871470 回答时间:2015-11-19 10:58:20
        if(Read_W5500_SOCK_1Byte(0,Sn_SR) != SOCK_INIT)//如果socket打开失败
  M, [' J/ u$ t        {  m& m1 I, V* A. D
                Write_W5500_SOCK_1Byte(0,Sn_CR,CLOSE);//打开不成功,关闭Socket: q0 |0 t+ `  o- k' k6 K
                return FALSE;//返回FALSE(0x00)! t5 O0 B7 D1 Q% Z& @9 I& Z# K
        }
5 `" N; e  E0 `1 J' g你好, 有人看看 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模块资料

谢谢分享
3 I- [5 }& p& b: 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 手机版