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

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

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

[复制链接]
kangxuebin 发布时间:2014-9-2 10:24
本帖最后由 kangxuebin 于 2017-11-8 17:28 编辑
$ \6 P7 }- J9 C+ F
" j& V! Z4 ?" H4 r# \1 M% ~
" d+ M& ]% |. v
# |, W: K6 t2 c" m: U' W[资料]STM32以太网入门培训课件% r; z( M0 h1 y7 [* J7 o; O! ~, L  p1 e
9 e% t/ D1 t5 L# h: y
从零开始使用 CubeMX 创建以太网工程: ]6 T# f4 Q8 }) v4 w
TS-W5500模块特点:: ?% f4 y2 H1 D4 U
1、尺寸小:5CM*3CM) [9 f7 ]1 O# X5 p& I8 m" j
2、4层板设计并了TVS等保护IC,差分走线,保障了良好的EMC兼容性3 ^$ A9 B& N% n/ e1 k1 b* {" F
3、5V、3V单片机都兼容
: F$ g* y5 S) D. ]; VW5500
3 U( c1 ^+ r! e1 ]) O7 VW5500是一款全硬件TCP/IP嵌入式以太网控制器,为嵌入式系统提供了更加简易, {$ }2 d) E3 T0 b6 }) p- C2 T
的互联网连接方案。W5500集成了TCP/IP协议栈,10/100M以太网数据链路层(MAC)2 ?% T$ ?  E, A* q$ g* F( q4 |" Z8 H
及物理层(PHY),使得用户使用单芯片就能够在他们的应用中拓展网络连接。
. Z2 J( r4 T+ v( X+ U9 U3 W( W久经市场考验的WIZnet全硬件TCP/IP协议栈支持TCP,UDP,IPv4,ICMP,ARP,IGMP 以
+ a% O) I( o$ u* _1 D" \及PPPoE协议。W5500内嵌32K字节片上缓存以供以太网包处理。如果你使用W5500,7 d  Y  }9 \$ O% y6 l7 d* V
你只需要一些简单的Socket编程就能实现以太网应用。这将会比其他嵌入式以太网方案. r* w$ \' f$ [  }7 O' x' F
更加快捷、简便。用户可以同时使用8个硬件Socket独立通讯。, b, e6 o! h, f6 \( O6 _7 N6 o. F, a
W5500提供了SPI(外设串行接口)从而能够更加容易与外设MCU整合。而且,
) p4 M6 P3 I3 u7 s6 ZW5500的使用了新的高效SPI协议支持80MHz速率,从而能够更好的实现高速网络通讯。" f+ g& Z7 ?# l; H4 a$ {6 h
为了减少系统能耗,W5500提供了网络唤醒模式(WOL)及掉电模式供客户选择使用。& {8 ^, V+ z/ B( l4 p% C, q
特点4 E4 a4 y; H/ W- e/ g; y0 k
-  支持硬件TCP/IP协议:TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE
) Y$ y8 s+ x" d; R/ f-  支持8个独立端口(Socket)同时通讯
+ s6 q2 x, q( n: L1 J6 E4 Y9 G-  支持掉电模式
: I, I  `$ E5 ~7 o" R8 e. q-  支持网络唤醒
, a! E" K# p! C  g) p' X' y-  支持高速串行外设接口(SPI模式0,3)
$ c% g, f  X# ~2 Y3 ?, F-  内部32K字节收发缓存8 b# @" ]7 L% n$ J
-  内嵌10BaseT/100BaseTX 以太网物理层(PHY)
" l) g7 T% z! g4 ?, N' a5 h-  支持自动协商(10/100-Based全双工/半双工)
2 q3 V# Q$ j0 i2 R. j-  不支持IP分片! T( \  |: ?2 }" M
-  3.3V工作电压,I/O信号口5V耐压;
; T6 y6 J8 t  I1 ?6 H+ |$ E' R7 V-  LED状态显示(全双工/半双工,网络连接,网络速度,活动状态)
( W+ d+ w* \5 d: I) f4 ?-  48引脚LQFP无铅封装(7x7mm, 0.5mm 间距)
  v: ?( U1 }) ZW5500 数据手册 版本1.0 (2013八月)    3 / 67* z/ @7 x1 y/ ~/ k2 n! a
目标应用! S8 U# A4 f: C
W5500适合于以下嵌入式应用:, b0 s) O) l" E9 `& O
-  家庭网络设备: 机顶盒、个人录像机、数码媒体适配器
( Z4 B; e- ?3 w" ?6 E-  串行转以太网: 门禁控制、LED显示屏、无线AP继电器等3 N; d8 U0 b! a8 I
-  并行转以太网: POS/微型打印机、复印机! H6 ^) ?- f/ A- V
-  USB转以太网: 存储设备、网络打印机
( F9 J) e) O" j8 m) X6 o1 F7 C5 v-  GPIO转以太网: 家庭网络传感器% u$ D4 |4 N+ T
-  安全系统: 数字录像机、网络摄像机、信息亭
+ J7 Z) d$ A1 B-  工厂和楼宇自动化控制系统/ U& a' `. @! z0 j; P" u
-  医疗监测设备
& K1 t  o! ?+ {. u; ?-  嵌入式服务器
& N2 R  `! Y5 ^: D. c& O TS-W5500.jpg ; U) w7 n5 s+ Q" }. U1 v% ~! i& ~
W5500模块原理图V1.0.pdf (42.72 KB, 下载次数: 2162)

评分

参与人数 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了,所以是在一个网段的)。跪求楼主大大帮我看看,非常感谢。6 ]9 q5 N4 \: q" T; j% W7 m
这是我做的一些修改内容:- p2 V& z  E! p/ r7 D1 t6 C
我看到你的引脚是这样连接的:(箭头后面是我改成了这些引脚)! Z  h7 s( {, l$ Q/ A2 H1 l# \% \
*              PA8 -> W5500_RST        ---------->PA15
* Y  S- f, X" `5 \1 y) q; a" n, e& ] *              PA9 -> W5500_INT          ---------->PA8   
" x' j# O2 R1 A! s2 A *              PA4 -> W5500_SCS          ---------->PB12    % R& y+ r0 {) j3 c) Z
*              PA5 -> W5500_SCK          ---------->PB13  : `* N: o) }; w2 l& f( R9 r9 Q
*              PA6 -> W5500_MISO         ---------->PB14   5 D" b5 K# Q* l; A
*              PA7 -> W5500_MOSI        ---------->PB15) y( D( r+ r; P) i1 f
下面的引脚图是我摘出来的电路图。
; R% T' t, C! [' P- w9 `( M这是我改动代码的地方:; A; i2 x! l- m2 s
(1)初始化SPI1改为初始化SPI2(因为我用的是PB12、13、14、15,我看到数据手册里这几个引脚是SPI2)8 d* _/ j* F. E; H$ S* G
  1. /*6 l5 L( y6 r( l& z! ]5 u- @$ K
  2.         //初始化SPI1
    * T& k& I8 [$ Y( v( n! x& }
  3.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_SPI1 | RCC_APB2Periph_AFIO, ENABLE);        ' w7 K" q" m# o1 L+ F
  4. */# M  n. A6 `2 w2 z6 K
  5.         //初始化SPI2        +++++++6 d% [4 c. |) w* N% P) v
  6.         RCC_APB1PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB1Periph_SPI2 | RCC_APB2Periph_AFIO, ENABLE);       
    * H1 ?3 }- J4 t6 A
  7.        
复制代码
(2)初始化SCK、MISO、MOSI引脚,把你代码中的引脚改成了GPIOB_13/14/151 M7 p3 m6 c$ c7 a# c2 U3 u
  1. /*初始化SCK、MISO、MOSI引脚 ++++++++*/
    3 }; O: U8 W& s! E/ m
  2.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;$ `  L: B+ A! i
  3.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;, q+ m! N. G, C, [! B* {
  4.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;( a' l1 w6 \9 ?4 }/ A
  5.         GPIO_Init(GPIOB, &GPIO_InitStructure);
    3 P3 l' p0 O6 W7 ]$ c% `
  6.         GPIO_SetBits(GPIOB,GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
复制代码
(3)初始化CS引脚,在这里我发现这些引脚使用宏定义的,而且我看到了相关的三个宏,所以我顺便吧这三个宏都改了:+ }' \; B  c9 V# f
  1. //初始化CS引脚
复制代码
  1. /***************----- W5500 GPIO定义 -----***************/0 d6 {7 _/ t% T# U  P3 t. [
  2. //#define W5500_SCS                GPIO_Pin_4     //定义w5500的cs引脚(PA4)& f. b: |# P/ q9 [% O; A! H+ ]
  3. //#define W5500_SCS_PORT        GPIOA
    # L! U0 Y8 v) t7 Q) i
  4. //        4 K0 Y/ x4 Y% z  n
  5. //#define W5500_RST                GPIO_Pin_8     //定义w5500的RST引脚(PA8)
    % u9 ^/ L$ y& B5 ^8 _. F. R
  6. //#define W5500_RST_PORT        GPIOA; m8 q5 g1 {# y$ M4 O; m, X
  7. , ?+ t& d  p- [  y: H' ^
  8. //#define W5500_INT                GPIO_Pin_9     //定义w5500的INT引脚(P9A)
      c( s+ j! g# V' }5 w  }
  9. //#define W5500_INT_PORT        GPIOA
    1 }& h8 ?, k; b; k; e
  10. ' `9 _4 g8 l7 b
  11. /**********  LSY ----- W5500 GPIO定义----- ************/1 I: q# x% L( v/ I5 G% T
  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了)1 \! D0 s  s9 Q3 d* O
  1. SPI_Init(SPI2,&SPI_InitStructure);   
复制代码
(5)使能SPI1也改为使能SPI2了:  y) J. ?7 N. ?& c6 Q6 j
  1. SPI_Cmd(SPI2,ENABLE);       
复制代码
就改了这些,我是漏改了什么吗?跪求楼主大大帮我看看,非常感谢。
- g/ m. _: E+ q' X6 q1 \# U/ {7 U# D- Y  ~/ q1 d/ ^7 d0 J4 Y; F6 V& m

- P7 G6 t9 X5 z9 i0 d
/ b) Q* t, _' g! Z

yinjiaotu

yinjiaotu
jzt2497871470 回答时间:2015-11-19 10:58:20
        if(Read_W5500_SOCK_1Byte(0,Sn_SR) != SOCK_INIT)//如果socket打开失败
( O9 u' a8 e0 |( K! N        {( D1 s0 F1 V, e! f" w
                Write_W5500_SOCK_1Byte(0,Sn_CR,CLOSE);//打开不成功,关闭Socket) o1 g4 I1 [. f
                return FALSE;//返回FALSE(0x00)' h0 d4 M$ n4 L, a: L
        }+ e3 J- D: C6 W( q/ y7 {( P- J$ I
你好, 有人看看 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模块资料

谢谢分享) q) a) @: R4 F) m# f1 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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版