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

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

[复制链接]
kangxuebin 发布时间:2014-9-2 10:24
本帖最后由 kangxuebin 于 2017-11-8 17:28 编辑
9 M* f" A9 h  o4 |- I5 p6 z6 Z6 s; E! {  D* @- c1 a* ]
4 u! j% n( b- |9 n2 Y
# a( I5 X( Q' U& s4 Y' l8 P, w
[资料]STM32以太网入门培训课件
" L3 e" Z! Q2 t6 A  u" W6 e- ]' H, A+ j3 h+ k, O/ W8 P, w
从零开始使用 CubeMX 创建以太网工程( b6 r+ }- `( u& }
TS-W5500模块特点:
& r4 a5 t+ b+ T# Z% y1 _1、尺寸小:5CM*3CM
* m6 r, c9 h. ^: m7 C2、4层板设计并了TVS等保护IC,差分走线,保障了良好的EMC兼容性" N- j: W$ x- D  N3 J
3、5V、3V单片机都兼容
: L- v. e2 `4 p6 Q8 |4 JW5500
9 |) c+ b, Q& w8 y( n: AW5500是一款全硬件TCP/IP嵌入式以太网控制器,为嵌入式系统提供了更加简易
% i* d0 M1 z5 v9 ~$ l# d8 k的互联网连接方案。W5500集成了TCP/IP协议栈,10/100M以太网数据链路层(MAC)
' p6 u! U7 K1 E及物理层(PHY),使得用户使用单芯片就能够在他们的应用中拓展网络连接。
; j0 r& D, w. u& f久经市场考验的WIZnet全硬件TCP/IP协议栈支持TCP,UDP,IPv4,ICMP,ARP,IGMP 以
7 L" H+ V  o1 C' ~及PPPoE协议。W5500内嵌32K字节片上缓存以供以太网包处理。如果你使用W5500,
& x/ h+ X3 ~. Z+ G; q" @% p你只需要一些简单的Socket编程就能实现以太网应用。这将会比其他嵌入式以太网方案
: N2 ^; K' W/ w8 F3 `2 k更加快捷、简便。用户可以同时使用8个硬件Socket独立通讯。
7 e) s% w  W0 e" W' bW5500提供了SPI(外设串行接口)从而能够更加容易与外设MCU整合。而且,
% L; c7 ~$ v0 n/ _% ]4 m) m% {W5500的使用了新的高效SPI协议支持80MHz速率,从而能够更好的实现高速网络通讯。8 |1 z: E: d/ ^: D' V; [
为了减少系统能耗,W5500提供了网络唤醒模式(WOL)及掉电模式供客户选择使用。/ n  l& ^$ q4 y  ]
特点
! _$ Q9 B7 S# {  a, V" N' g$ V-  支持硬件TCP/IP协议:TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE$ C% G/ R7 t0 B
-  支持8个独立端口(Socket)同时通讯! u6 r9 i0 X- F+ I$ y+ M
-  支持掉电模式
, i  ^& L$ }- t6 G8 U8 D. q& O-  支持网络唤醒: O/ n. g. G# a! w/ H+ _: P, |
-  支持高速串行外设接口(SPI模式0,3)& _1 e1 L- A) R0 t
-  内部32K字节收发缓存; K' x/ q: ?, ]- o! E& G
-  内嵌10BaseT/100BaseTX 以太网物理层(PHY)1 x# p- ~: S' U; {  m9 ?
-  支持自动协商(10/100-Based全双工/半双工)% V' J4 e$ E! v' U; I' D$ C* M# I7 A
-  不支持IP分片
. M; A. J' [7 D6 _" a6 s+ a) f-  3.3V工作电压,I/O信号口5V耐压;
7 v! V. Y4 g$ `, o' Z% c4 {-  LED状态显示(全双工/半双工,网络连接,网络速度,活动状态)
2 E3 m$ A7 d: R5 K: _-  48引脚LQFP无铅封装(7x7mm, 0.5mm 间距)" @9 ~1 O( P' L) I- b
W5500 数据手册 版本1.0 (2013八月)    3 / 67. s+ O, [$ n! |. Q& X
目标应用
7 _8 \, e. y( T0 b/ t* KW5500适合于以下嵌入式应用:
$ ~8 P) w. H& \-  家庭网络设备: 机顶盒、个人录像机、数码媒体适配器
2 Q" i$ c* `4 \/ t$ N! w6 M-  串行转以太网: 门禁控制、LED显示屏、无线AP继电器等
7 `2 \9 I4 @  R  j# ~$ O# z0 m7 [-  并行转以太网: POS/微型打印机、复印机
6 u4 O& r0 X5 X, }& Z& ^# |$ l+ Q-  USB转以太网: 存储设备、网络打印机
- m" I7 G; i, g* B5 ~-  GPIO转以太网: 家庭网络传感器
* Y+ y3 b6 J% z3 ^. O3 Q+ A1 g. B-  安全系统: 数字录像机、网络摄像机、信息亭" J1 M/ A# |* [  f5 q& o1 i0 t( y- l8 \
-  工厂和楼宇自动化控制系统( k7 P$ \& T1 s1 ?; `
-  医疗监测设备
7 F9 ?+ m  Y3 `: V% n: o0 i  C7 |-  嵌入式服务器
, y, \1 [& Z4 W1 F' l, p: U1 l TS-W5500.jpg   S8 p7 _1 h! C; o, E# s
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了,所以是在一个网段的)。跪求楼主大大帮我看看,非常感谢。
7 r3 f$ |' X- ]3 W! R  s这是我做的一些修改内容:( y6 J6 I/ K* D  S" H% }
我看到你的引脚是这样连接的:(箭头后面是我改成了这些引脚)
) X1 \1 A8 h0 _2 V: k7 s8 z6 b2 L9 Y *              PA8 -> W5500_RST        ---------->PA15  x  D7 A& v0 d! D
*              PA9 -> W5500_INT          ---------->PA8   * o) K+ a( {; m* }' ]. o# x
*              PA4 -> W5500_SCS          ---------->PB12   
: [8 {' z; }* c *              PA5 -> W5500_SCK          ---------->PB13  
2 x+ M' R- R5 Z' u1 m. H6 r% o *              PA6 -> W5500_MISO         ---------->PB14   - f; e# U5 s! b7 ]' P
*              PA7 -> W5500_MOSI        ---------->PB15
4 o0 Z* n$ j- `) y( }下面的引脚图是我摘出来的电路图。
1 d' R6 }5 i% m/ X) `* M这是我改动代码的地方:1 R/ E9 r6 K. x2 i2 Z5 `4 d7 ~9 |
(1)初始化SPI1改为初始化SPI2(因为我用的是PB12、13、14、15,我看到数据手册里这几个引脚是SPI2)9 K+ _; `0 Y( }% Q. B$ x4 O- d) \
  1. /*, ~) x' f8 _" _% i. k* f8 [+ `
  2.         //初始化SPI1
    0 \3 g" L) B8 o7 E' y. V5 q7 f
  3.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_SPI1 | RCC_APB2Periph_AFIO, ENABLE);        ) X1 Q- e% v- p& p3 x# p4 Y, M
  4. */" O: u4 G$ ~+ s. {' i. J
  5.         //初始化SPI2        +++++++$ I: \5 L: p2 h
  6.         RCC_APB1PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB1Periph_SPI2 | RCC_APB2Periph_AFIO, ENABLE);       
    $ X% Y9 h4 \/ M5 o$ R1 L
  7.        
复制代码
(2)初始化SCK、MISO、MOSI引脚,把你代码中的引脚改成了GPIOB_13/14/15
. S3 ?0 U2 l3 A& m% `* m7 L* [, x
  1. /*初始化SCK、MISO、MOSI引脚 ++++++++*/$ V# A! K: Z! z4 W, {
  2.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;4 s& ~2 z# n3 N" `: l1 T, G4 W
  3.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;# c5 b# g8 K% v! j2 i* e2 h7 K
  4.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    / {8 K1 y2 c& `0 ^9 F8 f
  5.         GPIO_Init(GPIOB, &GPIO_InitStructure);
    % @. m3 r6 N5 }% w& u+ [
  6.         GPIO_SetBits(GPIOB,GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
复制代码
(3)初始化CS引脚,在这里我发现这些引脚使用宏定义的,而且我看到了相关的三个宏,所以我顺便吧这三个宏都改了:; T  n2 H; g. y, J9 W1 @7 e! W! e, B
  1. //初始化CS引脚
复制代码
  1. /***************----- W5500 GPIO定义 -----***************/" s, p; y9 l) v" M+ A# i% W
  2. //#define W5500_SCS                GPIO_Pin_4     //定义w5500的cs引脚(PA4)
    , g$ c+ ^  p+ R- e
  3. //#define W5500_SCS_PORT        GPIOA( W& A6 O$ u3 I7 @1 H
  4. //          r3 f* S( ~+ s/ z7 y9 S! U
  5. //#define W5500_RST                GPIO_Pin_8     //定义w5500的RST引脚(PA8)
      A9 p) Q7 ?2 [) d
  6. //#define W5500_RST_PORT        GPIOA- e- V: B" l! e0 i
  7. 4 \- x4 n9 l- ]( o, w3 l7 x
  8. //#define W5500_INT                GPIO_Pin_9     //定义w5500的INT引脚(P9A)
    8 H) W' e$ c, C- `( Y
  9. //#define W5500_INT_PORT        GPIOA
    4 v& w% x5 f, B$ T

  10. . r! M3 |1 l' @3 w, a/ Y( c
  11. /**********  LSY ----- W5500 GPIO定义----- ************/6 \" I5 M2 |) A6 x3 k# \( J8 V7 `
  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了)
' N3 [, e% Y' C" M6 C2 f' H1 |
  1. SPI_Init(SPI2,&SPI_InitStructure);   
复制代码
(5)使能SPI1也改为使能SPI2了:! a0 g2 z/ P6 E8 H3 {! K
  1. SPI_Cmd(SPI2,ENABLE);       
复制代码
就改了这些,我是漏改了什么吗?跪求楼主大大帮我看看,非常感谢。6 c( j: n5 i5 g4 O/ e! F1 G
* F- |- }$ }  v4 b

6 H& _2 e8 @) i, U6 I9 {5 ]* z2 \
! a5 m! ]9 |! S- s+ H8 e" e

yinjiaotu

yinjiaotu
jzt2497871470 回答时间:2015-11-19 10:58:20
        if(Read_W5500_SOCK_1Byte(0,Sn_SR) != SOCK_INIT)//如果socket打开失败
2 y' x' J0 y6 V, M0 l4 l0 _) ]        {* ]- U$ \2 Q8 k6 @& Z, q
                Write_W5500_SOCK_1Byte(0,Sn_CR,CLOSE);//打开不成功,关闭Socket
& `; |3 ?! Z8 y* S                return FALSE;//返回FALSE(0x00). r0 \% K1 L8 n
        }6 p; G: `1 E; l8 F: ~
你好, 有人看看 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模块资料

谢谢分享
' J9 G3 \5 q% x6 d6 G' h# n) 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 手机版