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

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

[复制链接]
kangxuebin 发布时间:2014-9-2 10:24
本帖最后由 kangxuebin 于 2017-11-8 17:28 编辑
' h, {  R* _7 C- t1 S( X7 x) Q- a# X: a3 y; V7 ^% j8 t

0 d1 _+ ^. p- l4 m: R: [  u) ~) l0 J8 [
[资料]STM32以太网入门培训课件; R: E- O$ L& k+ L, \
3 u6 Z8 I! A; K/ t" n& ?+ H
从零开始使用 CubeMX 创建以太网工程
1 w) W# H$ {( l9 v1 d3 y1 v2 v' b  }TS-W5500模块特点:( U5 l, u& X$ e
1、尺寸小:5CM*3CM
% m1 E7 {" s( A5 z2、4层板设计并了TVS等保护IC,差分走线,保障了良好的EMC兼容性/ v' q  V/ X+ x5 a
3、5V、3V单片机都兼容+ A; k5 T3 W8 E# Q1 a( w/ w& ?" P
W5500( G1 i7 l! d) |* o
W5500是一款全硬件TCP/IP嵌入式以太网控制器,为嵌入式系统提供了更加简易. c" t; P- B- d; v; f1 ^
的互联网连接方案。W5500集成了TCP/IP协议栈,10/100M以太网数据链路层(MAC)! J  U- [% P; `2 @/ `0 v
及物理层(PHY),使得用户使用单芯片就能够在他们的应用中拓展网络连接。
$ T! ~: R: Y; n8 F1 `/ K- E* z久经市场考验的WIZnet全硬件TCP/IP协议栈支持TCP,UDP,IPv4,ICMP,ARP,IGMP 以( K, J" G& o; \
及PPPoE协议。W5500内嵌32K字节片上缓存以供以太网包处理。如果你使用W5500,
, l; M* }' G% A8 q% g. S' }你只需要一些简单的Socket编程就能实现以太网应用。这将会比其他嵌入式以太网方案
) l6 `. J) ?2 x1 |8 w6 g# s更加快捷、简便。用户可以同时使用8个硬件Socket独立通讯。/ T: ^& g+ ^* x: z6 H/ n
W5500提供了SPI(外设串行接口)从而能够更加容易与外设MCU整合。而且,6 h) i6 e5 t9 y/ j3 S
W5500的使用了新的高效SPI协议支持80MHz速率,从而能够更好的实现高速网络通讯。
% j+ M1 L3 M2 z+ k$ S为了减少系统能耗,W5500提供了网络唤醒模式(WOL)及掉电模式供客户选择使用。/ Z% v' r- g7 w% K* I! y
特点
, h9 ~& m+ _! O8 V9 C* e& n/ q-  支持硬件TCP/IP协议:TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE& z# L8 R% J# X
-  支持8个独立端口(Socket)同时通讯8 R+ t6 t+ t/ l+ T! v
-  支持掉电模式
: L( l6 h. q$ K4 n+ C; O- ]-  支持网络唤醒5 |" ^; p2 n5 s6 o: h  }* A% S
-  支持高速串行外设接口(SPI模式0,3)
( t0 k' F7 d' S1 L& F-  内部32K字节收发缓存
& s4 d" E) j+ ]7 T  X  l: D; |-  内嵌10BaseT/100BaseTX 以太网物理层(PHY)
2 X3 \; `1 g" a# `! U3 E  c) O-  支持自动协商(10/100-Based全双工/半双工)
, }( p! M% v7 J! `( V; ^! g' s-  不支持IP分片' C+ e3 ~$ b3 |$ n/ k
-  3.3V工作电压,I/O信号口5V耐压;
! ^4 ]0 h7 e0 s" w! g-  LED状态显示(全双工/半双工,网络连接,网络速度,活动状态)
9 g' W8 e. `' [/ N& X! K; B-  48引脚LQFP无铅封装(7x7mm, 0.5mm 间距)0 W5 q; I& H! H) ~9 d  R+ }: e: X
W5500 数据手册 版本1.0 (2013八月)    3 / 67$ |1 ?$ ~+ ^3 Y  a* i3 {& z
目标应用  A: J% D: A- y# J5 |
W5500适合于以下嵌入式应用:
) c# U: K/ E# q  A# u4 i-  家庭网络设备: 机顶盒、个人录像机、数码媒体适配器
7 O4 R1 g- o+ ]- h7 G! q-  串行转以太网: 门禁控制、LED显示屏、无线AP继电器等8 W) t) G; ?$ r: ]# U
-  并行转以太网: POS/微型打印机、复印机
/ Y3 b. Y. r# H; G2 a9 n4 f. J-  USB转以太网: 存储设备、网络打印机
; c) t( |+ y8 Y0 \. [1 ?0 G-  GPIO转以太网: 家庭网络传感器
# ], g* Z. F8 y  p! F9 l6 w, C-  安全系统: 数字录像机、网络摄像机、信息亭3 {, Q4 P0 J% j
-  工厂和楼宇自动化控制系统
/ s+ m, s* F' r* {' J-  医疗监测设备6 ?9 r+ F8 I7 m. K6 |$ S: o
-  嵌入式服务器
  j7 w+ O1 H9 y1 c+ b3 B9 n TS-W5500.jpg
, H* b8 D/ \: e6 C 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了,所以是在一个网段的)。跪求楼主大大帮我看看,非常感谢。
# D* a, n: t, C3 |8 d这是我做的一些修改内容:5 ]$ a4 v5 j$ D( k
我看到你的引脚是这样连接的:(箭头后面是我改成了这些引脚)
& B0 w" m; E( q7 L* @ *              PA8 -> W5500_RST        ---------->PA154 O# l1 h7 Q" v$ ]) g( }
*              PA9 -> W5500_INT          ---------->PA8   # k' U  r; d4 c/ b) @3 W8 Y( [
*              PA4 -> W5500_SCS          ---------->PB12   
* k7 s' x9 V3 I* D, W% C1 z' [& [9 v *              PA5 -> W5500_SCK          ---------->PB13  
, B& r$ B7 U) \ *              PA6 -> W5500_MISO         ---------->PB14   5 `7 y6 G9 U7 a# m/ q1 H9 A
*              PA7 -> W5500_MOSI        ---------->PB15
  Q9 T4 z5 Q! N1 r2 G7 Q下面的引脚图是我摘出来的电路图。, n; v* p( S% ], q
这是我改动代码的地方:
& c) j8 D' X) A0 W(1)初始化SPI1改为初始化SPI2(因为我用的是PB12、13、14、15,我看到数据手册里这几个引脚是SPI2)1 f8 n7 ^( c& V) \" d% e/ y
  1. /*6 N! V; P0 {3 R: c
  2.         //初始化SPI1
    5 x; d0 Q0 g) U$ n% F: Z: Q/ w5 q; U0 V
  3.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_SPI1 | RCC_APB2Periph_AFIO, ENABLE);        0 e' A, y2 l& R5 b# Q& {6 T( K
  4. */0 `% O. r+ O( n8 x1 ~
  5.         //初始化SPI2        +++++++- c& W' ^- ^' R$ V
  6.         RCC_APB1PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB1Periph_SPI2 | RCC_APB2Periph_AFIO, ENABLE);        1 G; r( v2 R/ n5 \) e$ p, E% g3 l
  7.        
复制代码
(2)初始化SCK、MISO、MOSI引脚,把你代码中的引脚改成了GPIOB_13/14/15# u0 d. T/ y7 U
  1. /*初始化SCK、MISO、MOSI引脚 ++++++++*/4 C2 S# H3 ]$ k2 [1 A
  2.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;# Z5 K& i3 `  r% T8 c5 V% ?4 j
  3.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;& T' R! ^3 R2 ?* z9 @3 n) d$ x
  4.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;9 J5 E. h8 L2 T! [0 V
  5.         GPIO_Init(GPIOB, &GPIO_InitStructure);
    0 g5 c: W; y$ ^. `  s) U" a9 w
  6.         GPIO_SetBits(GPIOB,GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
复制代码
(3)初始化CS引脚,在这里我发现这些引脚使用宏定义的,而且我看到了相关的三个宏,所以我顺便吧这三个宏都改了:, b( ~0 V5 |, j% G
  1. //初始化CS引脚
复制代码
  1. /***************----- W5500 GPIO定义 -----***************/
    2 a4 V" f5 g! G" V
  2. //#define W5500_SCS                GPIO_Pin_4     //定义w5500的cs引脚(PA4): `2 @7 N3 U2 z- S) i
  3. //#define W5500_SCS_PORT        GPIOA% L' k2 A1 K! Y5 t1 `
  4. //        6 z7 c2 Q; r. ?
  5. //#define W5500_RST                GPIO_Pin_8     //定义w5500的RST引脚(PA8)2 `' c& O* r/ o* X
  6. //#define W5500_RST_PORT        GPIOA- v  e  c/ ?5 _- a, K/ C. ^

  7. ! \, T0 Z# V1 P% }0 N! y  V( E2 g
  8. //#define W5500_INT                GPIO_Pin_9     //定义w5500的INT引脚(P9A)  H  k4 e! R& C
  9. //#define W5500_INT_PORT        GPIOA/ @+ s( o! [: a- a1 O  j! ]8 Z  L
  10. & y8 J. y5 w! s- g/ X
  11. /**********  LSY ----- W5500 GPIO定义----- ************/
    1 L# c% O3 R# H: D: D
  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了)/ N, d  n/ O4 w$ ~# D8 @: P
  1. SPI_Init(SPI2,&SPI_InitStructure);   
复制代码
(5)使能SPI1也改为使能SPI2了:
0 W/ x$ X0 p" N2 L
  1. SPI_Cmd(SPI2,ENABLE);       
复制代码
就改了这些,我是漏改了什么吗?跪求楼主大大帮我看看,非常感谢。6 w) I8 p# k6 i+ k0 r- \1 d

2 p! {9 E1 @' Q- b8 P  ?% B: ]4 y* X! R  M) C* x1 X* v, {, u1 I

( q. H- W  c/ i

yinjiaotu

yinjiaotu
jzt2497871470 回答时间:2015-11-19 10:58:20
        if(Read_W5500_SOCK_1Byte(0,Sn_SR) != SOCK_INIT)//如果socket打开失败; G. {0 {8 G1 d
        {
4 @; K8 U) _! F( N" Q  T* T                Write_W5500_SOCK_1Byte(0,Sn_CR,CLOSE);//打开不成功,关闭Socket. `1 f5 B7 @( w
                return FALSE;//返回FALSE(0x00)
% A- f8 b$ T4 ^) R" m( g  }8 U        }+ F) F1 q/ H3 j, |
你好, 有人看看 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模块资料

谢谢分享
: z7 o9 V4 j# q( _$ S7 `! @ 
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 手机版