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

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

[复制链接]
kangxuebin 发布时间:2014-9-2 10:24
本帖最后由 kangxuebin 于 2017-11-8 17:28 编辑 & h9 [8 f% k& O: D0 c
& \4 d- U& a3 L2 Q' }

) v$ E6 @$ k" u* I; D7 G; R7 m8 J- M% F7 |0 O
[资料]STM32以太网入门培训课件) J# @4 L( G& C) ^7 P" A
9 @, d" D7 n4 s1 s+ |6 x7 w
从零开始使用 CubeMX 创建以太网工程/ `' O/ J& Z2 |. @
TS-W5500模块特点:
6 P' t4 w! y2 g: Y7 L1、尺寸小:5CM*3CM; N3 u, T9 G1 h! ~) T
2、4层板设计并了TVS等保护IC,差分走线,保障了良好的EMC兼容性# q5 h" S" n$ {
3、5V、3V单片机都兼容
! h6 a/ U: i  V; _W5500
- M& @. E  h! P7 D. BW5500是一款全硬件TCP/IP嵌入式以太网控制器,为嵌入式系统提供了更加简易
# b4 g  z) c, Q8 I6 d$ V的互联网连接方案。W5500集成了TCP/IP协议栈,10/100M以太网数据链路层(MAC)* w; g- r2 z6 V
及物理层(PHY),使得用户使用单芯片就能够在他们的应用中拓展网络连接。
- X( M7 d2 K+ Z& l' ^1 Z: Z久经市场考验的WIZnet全硬件TCP/IP协议栈支持TCP,UDP,IPv4,ICMP,ARP,IGMP 以* R. J! h  F$ ^  |* B, ~
及PPPoE协议。W5500内嵌32K字节片上缓存以供以太网包处理。如果你使用W5500,' |9 Y( ^. O# V2 l: }1 u) K
你只需要一些简单的Socket编程就能实现以太网应用。这将会比其他嵌入式以太网方案
0 y+ o7 ^  Q; p4 f* ?6 l* v% }" B更加快捷、简便。用户可以同时使用8个硬件Socket独立通讯。9 `  @5 X- Y7 C7 J' o6 b
W5500提供了SPI(外设串行接口)从而能够更加容易与外设MCU整合。而且,. w" E* @6 I; g% R# \
W5500的使用了新的高效SPI协议支持80MHz速率,从而能够更好的实现高速网络通讯。1 F" d* ?; t# ~1 H7 x, Z
为了减少系统能耗,W5500提供了网络唤醒模式(WOL)及掉电模式供客户选择使用。
* R* \4 W) Q9 z特点
; g3 [: Y) D8 i6 \2 K( `6 E; [) P-  支持硬件TCP/IP协议:TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE' G% N7 X4 O; P' k! O% Z
-  支持8个独立端口(Socket)同时通讯+ R" P: ~; z: ?7 H2 m
-  支持掉电模式
( Q, k* |. R& ~! a6 {; w1 f. {-  支持网络唤醒1 U: ^3 M( d( J" N+ u- {
-  支持高速串行外设接口(SPI模式0,3)  T  D% y( P  l# j+ H
-  内部32K字节收发缓存0 Q2 O' v/ ^) E- A) X* s( s' B' Q
-  内嵌10BaseT/100BaseTX 以太网物理层(PHY)
. R/ [5 O2 ]& s8 u/ p4 K/ l; M-  支持自动协商(10/100-Based全双工/半双工)! y4 z& c! Q6 D% R
-  不支持IP分片8 o& J: n* W4 b  G- W5 B& G. g
-  3.3V工作电压,I/O信号口5V耐压;
- ?& ~3 P; z' Y" ?( f2 K-  LED状态显示(全双工/半双工,网络连接,网络速度,活动状态)5 g$ E) w; _! N# j
-  48引脚LQFP无铅封装(7x7mm, 0.5mm 间距). F7 C- v6 U% u; s
W5500 数据手册 版本1.0 (2013八月)    3 / 67
" }; A2 `2 ?* ~目标应用7 Y' ], ^( F: r
W5500适合于以下嵌入式应用:
4 ^2 M& M3 C9 J% A% W-  家庭网络设备: 机顶盒、个人录像机、数码媒体适配器0 r+ x3 n  P2 l! ?( |; M- H
-  串行转以太网: 门禁控制、LED显示屏、无线AP继电器等
. X( M& N% w- ~, |-  并行转以太网: POS/微型打印机、复印机' \" I: ]) X$ i0 s3 x( @
-  USB转以太网: 存储设备、网络打印机
0 H! A: p$ P: U' W, _-  GPIO转以太网: 家庭网络传感器  n& ]9 K1 O7 J: b
-  安全系统: 数字录像机、网络摄像机、信息亭
  E  }7 Q9 Q( f/ j$ R/ I% @-  工厂和楼宇自动化控制系统
& _, G9 J" t; `% L+ C-  医疗监测设备3 U! t" ]* m) ^9 S+ l
-  嵌入式服务器8 i* t( N8 _8 H& Q2 L+ a( {
TS-W5500.jpg
/ `0 {& Q0 x# v0 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 a- n# ?( f2 Q5 H  R4 d4 D& x- J
这是我做的一些修改内容:$ g( Q; v9 P- ]( Z1 n* x
我看到你的引脚是这样连接的:(箭头后面是我改成了这些引脚)) P# k9 u4 s7 V9 H" d
*              PA8 -> W5500_RST        ---------->PA150 G% N" Y+ ~; Z7 Z$ J9 x! y" ]/ k
*              PA9 -> W5500_INT          ---------->PA8   
. i# v* M& s/ j9 F- t+ U$ b *              PA4 -> W5500_SCS          ---------->PB12   
  `. X/ n6 ~0 J# t *              PA5 -> W5500_SCK          ---------->PB13  - f/ ^0 t  G- h. z; N- C
*              PA6 -> W5500_MISO         ---------->PB14   
1 w) ]; n( I( h9 m8 r' p4 t *              PA7 -> W5500_MOSI        ---------->PB15
/ V9 Y! I! n- B5 w& F% H! f下面的引脚图是我摘出来的电路图。
. p! r4 Y1 d; r6 V4 ]这是我改动代码的地方:1 _# p% q8 \3 B( h- k+ ]& Z$ y
(1)初始化SPI1改为初始化SPI2(因为我用的是PB12、13、14、15,我看到数据手册里这几个引脚是SPI2)0 m+ w+ Y  T$ B! \- ~5 S; T
  1. /*
    4 T$ F& D9 v% l' {9 y) W+ [
  2.         //初始化SPI1 * N1 P9 f5 e. ]# ?! G0 T( Z
  3.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_SPI1 | RCC_APB2Periph_AFIO, ENABLE);        " o) B  h* w( y4 f
  4. */
    9 ]$ @  p! h8 h/ J, q) T7 B( k: Z
  5.         //初始化SPI2        +++++++
    , `: Y3 U4 e" Q, |
  6.         RCC_APB1PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB1Periph_SPI2 | RCC_APB2Periph_AFIO, ENABLE);       
    ) y2 a* Q  Q# Z0 A1 O
  7.        
复制代码
(2)初始化SCK、MISO、MOSI引脚,把你代码中的引脚改成了GPIOB_13/14/15/ @! y$ ]$ _8 _
  1. /*初始化SCK、MISO、MOSI引脚 ++++++++*/
    % \, D/ m" m- D" ^; j7 D, k: Y
  2.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;$ D/ L3 H% E: V2 c+ O4 U# v
  3.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;* b0 \) r9 l6 R4 P
  4.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;; k: Q" h+ l8 c' S1 k3 v, f
  5.         GPIO_Init(GPIOB, &GPIO_InitStructure);! U+ a' V/ j8 y/ Z1 {+ G
  6.         GPIO_SetBits(GPIOB,GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
复制代码
(3)初始化CS引脚,在这里我发现这些引脚使用宏定义的,而且我看到了相关的三个宏,所以我顺便吧这三个宏都改了:
6 `5 a. R7 n) J( {; _4 ~
  1. //初始化CS引脚
复制代码
  1. /***************----- W5500 GPIO定义 -----***************/
    ( n; ~  l/ N/ p/ v9 W  x1 G' x4 F
  2. //#define W5500_SCS                GPIO_Pin_4     //定义w5500的cs引脚(PA4): n1 z! E$ S1 C5 {% p0 g7 J
  3. //#define W5500_SCS_PORT        GPIOA- V9 v  F1 r8 K9 f% l" o2 |
  4. //        1 A. c$ f/ n0 S- x. L/ d
  5. //#define W5500_RST                GPIO_Pin_8     //定义w5500的RST引脚(PA8)
    ! v1 `# O5 ~) x, v. V! p$ F
  6. //#define W5500_RST_PORT        GPIOA& i# `  j; m; u; i+ b7 b: i

  7. , v# m) g7 j, e5 P$ E4 v
  8. //#define W5500_INT                GPIO_Pin_9     //定义w5500的INT引脚(P9A)' B$ q5 C* O0 Y3 ^% S
  9. //#define W5500_INT_PORT        GPIOA
    : @7 ]; L8 n5 m" E: K6 ?; D: M
  10. 3 L& F; R: b  }
  11. /**********  LSY ----- W5500 GPIO定义----- ************/
    2 v4 g# s3 b/ W1 `# M/ I! f
  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了)! u, b$ }4 m3 p3 G$ d+ Y
  1. SPI_Init(SPI2,&SPI_InitStructure);   
复制代码
(5)使能SPI1也改为使能SPI2了:% c+ l, t3 K8 j" k4 S. c
  1. SPI_Cmd(SPI2,ENABLE);       
复制代码
就改了这些,我是漏改了什么吗?跪求楼主大大帮我看看,非常感谢。) J9 S1 j9 Z7 z

2 X8 Q' g# n0 a7 w6 \
6 F7 e7 E, Q4 `. c0 S! l: R. t( S8 G. ], b# m

yinjiaotu

yinjiaotu
jzt2497871470 回答时间:2015-11-19 10:58:20
        if(Read_W5500_SOCK_1Byte(0,Sn_SR) != SOCK_INIT)//如果socket打开失败
; B: e! U  b0 `3 Y6 A9 Q* \3 K3 u        {( r8 D; r/ H* ?! d* D. A
                Write_W5500_SOCK_1Byte(0,Sn_CR,CLOSE);//打开不成功,关闭Socket
6 T5 r- ]2 |: `4 }4 L9 j                return FALSE;//返回FALSE(0x00)
4 C- Z1 |% @2 \* e' Y7 y2 D2 R        }+ S$ A7 D2 k1 p% g' z- ?$ L% ]
你好, 有人看看 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模块资料

谢谢分享
% H+ E2 `( m; C  l( L: p 
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 手机版