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

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

[复制链接]
kangxuebin 发布时间:2014-9-2 10:24
本帖最后由 kangxuebin 于 2017-11-8 17:28 编辑
, I7 F3 E# q# s5 B9 ~; C, {# |- o
8 A& v9 i2 L- O0 |5 A4 T/ k; |5 P1 U( c# C3 r1 m

1 `* N( J) V8 j8 `[资料]STM32以太网入门培训课件7 G! }- p9 p$ y/ }6 v8 e# F

* I9 B3 E( e1 K% s% z% j* q( s2 ]
从零开始使用 CubeMX 创建以太网工程
/ m2 y" Z7 ~. B7 _( |. S4 aTS-W5500模块特点:
: D/ C0 F/ r+ P- c+ A5 {1、尺寸小:5CM*3CM1 ~, O* r/ L/ C3 E: ]8 g
2、4层板设计并了TVS等保护IC,差分走线,保障了良好的EMC兼容性
% u6 y% ?' G4 R5 d7 ]! K3、5V、3V单片机都兼容4 P+ z, f4 w8 Q5 t; K
W55007 v$ v  u' ^4 `( W" d
W5500是一款全硬件TCP/IP嵌入式以太网控制器,为嵌入式系统提供了更加简易
- Y! Z% w, F6 e, g$ v8 E. e. U* k的互联网连接方案。W5500集成了TCP/IP协议栈,10/100M以太网数据链路层(MAC)2 x9 o4 K  k; [2 G% G# W1 e. r
及物理层(PHY),使得用户使用单芯片就能够在他们的应用中拓展网络连接。3 F9 _! w5 Y4 B9 w
久经市场考验的WIZnet全硬件TCP/IP协议栈支持TCP,UDP,IPv4,ICMP,ARP,IGMP 以
" x+ `# K) V( \/ ~( \3 ^6 X+ ~及PPPoE协议。W5500内嵌32K字节片上缓存以供以太网包处理。如果你使用W5500,
0 J- u5 l1 }' A  B; k5 f6 f你只需要一些简单的Socket编程就能实现以太网应用。这将会比其他嵌入式以太网方案
4 l1 @1 p4 n! @# X更加快捷、简便。用户可以同时使用8个硬件Socket独立通讯。
# Z; H& `# l  YW5500提供了SPI(外设串行接口)从而能够更加容易与外设MCU整合。而且,7 l: n/ P, [# `
W5500的使用了新的高效SPI协议支持80MHz速率,从而能够更好的实现高速网络通讯。
2 [3 K  h+ o+ l# u为了减少系统能耗,W5500提供了网络唤醒模式(WOL)及掉电模式供客户选择使用。0 D) p" u# x9 f! F+ R% K
特点6 u* x3 c+ h0 i8 E7 d/ U
-  支持硬件TCP/IP协议:TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE
3 e: J+ n- z9 S/ W4 t# W-  支持8个独立端口(Socket)同时通讯
" `* M+ s) M% k-  支持掉电模式
0 g5 F( M) B. s-  支持网络唤醒8 G1 f  ~  @! P, u4 \  ]1 I
-  支持高速串行外设接口(SPI模式0,3)
! O* S, W4 \3 e% W2 J. q1 z% y-  内部32K字节收发缓存
' u' y) V6 M! A. ~, N-  内嵌10BaseT/100BaseTX 以太网物理层(PHY)$ t2 x" _1 [! \! {
-  支持自动协商(10/100-Based全双工/半双工)
0 _; a( j* r$ a, n3 D-  不支持IP分片: e, m3 E' c, Y" O- p% d
-  3.3V工作电压,I/O信号口5V耐压;7 x/ }- R- ^/ T1 I$ |1 A
-  LED状态显示(全双工/半双工,网络连接,网络速度,活动状态)
- G7 T5 O$ P! g; {5 S1 I-  48引脚LQFP无铅封装(7x7mm, 0.5mm 间距)! i' D. n1 `7 o. s
W5500 数据手册 版本1.0 (2013八月)    3 / 67) W) j3 R7 N( X1 h' \
目标应用
; m6 P$ E$ q+ y2 H' M% m/ y  o! w* IW5500适合于以下嵌入式应用:( G, p; }) g' R
-  家庭网络设备: 机顶盒、个人录像机、数码媒体适配器& K1 x7 ^+ N: C' s# R3 O8 r5 p+ T
-  串行转以太网: 门禁控制、LED显示屏、无线AP继电器等( M" H: y5 G& W0 k
-  并行转以太网: POS/微型打印机、复印机
' i4 Z3 C1 {' L0 z' L8 q-  USB转以太网: 存储设备、网络打印机2 w/ H& W" `4 {% Z
-  GPIO转以太网: 家庭网络传感器2 {1 d; |& ?" j* y3 c
-  安全系统: 数字录像机、网络摄像机、信息亭( x) K$ u/ F& f; w+ m
-  工厂和楼宇自动化控制系统  ]4 l  B1 z, _  v
-  医疗监测设备
' b0 ~' d9 l6 w0 M8 D% a3 G8 x" @-  嵌入式服务器
3 G  q+ T' X" o& m$ k TS-W5500.jpg 4 W' N  w! V, P
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了,所以是在一个网段的)。跪求楼主大大帮我看看,非常感谢。
. g* P7 z% z( k2 m: e& |这是我做的一些修改内容:
! W: Y5 H4 e, |) P$ [. F% J9 C/ i2 Q我看到你的引脚是这样连接的:(箭头后面是我改成了这些引脚)
, ^% [+ }8 N1 T; V* x- ^ *              PA8 -> W5500_RST        ---------->PA15
) ~3 q3 |  g4 |4 h *              PA9 -> W5500_INT          ---------->PA8   9 u! z8 F0 x+ O; I6 O3 ]9 ~
*              PA4 -> W5500_SCS          ---------->PB12    / r/ Z0 E5 V, E5 q# F9 k4 K: \0 F, o
*              PA5 -> W5500_SCK          ---------->PB13  
* N6 r8 g1 W2 S% e+ e  J1 O, Y' N *              PA6 -> W5500_MISO         ---------->PB14   
! n. Z7 q! ?2 ^+ s- ] *              PA7 -> W5500_MOSI        ---------->PB15- p0 ^, h( S) y
下面的引脚图是我摘出来的电路图。
$ P7 M$ O+ C2 m  s" W% E1 a6 [这是我改动代码的地方:
5 {2 l& J. I2 _+ k9 W/ m# }(1)初始化SPI1改为初始化SPI2(因为我用的是PB12、13、14、15,我看到数据手册里这几个引脚是SPI2)% @4 ~7 T3 A4 a) `
  1. /*
    $ e) J. S1 D6 Z$ a
  2.         //初始化SPI1
    - O$ x( h( x& r7 `4 S
  3.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_SPI1 | RCC_APB2Periph_AFIO, ENABLE);        / j  q0 @, j, A& j# F9 N+ m% M
  4. */
    : Z9 K1 k* w3 D. t
  5.         //初始化SPI2        +++++++
    & y+ x5 d) ^2 f4 A& x( e# E  E
  6.         RCC_APB1PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB1Periph_SPI2 | RCC_APB2Periph_AFIO, ENABLE);        " j2 q; O( h: r
  7.        
复制代码
(2)初始化SCK、MISO、MOSI引脚,把你代码中的引脚改成了GPIOB_13/14/154 A. M( g1 D8 W: \3 q
  1. /*初始化SCK、MISO、MOSI引脚 ++++++++*/0 R3 h. N& y& s+ Y
  2.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
    % J2 t8 ?+ Q. F+ E8 L: s7 M
  3.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;! \- h5 M9 y# t% O6 f7 ]$ p' R$ `
  4.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;/ o2 p, v: G2 j6 c, N- {2 h) e
  5.         GPIO_Init(GPIOB, &GPIO_InitStructure);# H) G; u+ e$ ~0 D; f3 c% V% C" V
  6.         GPIO_SetBits(GPIOB,GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
复制代码
(3)初始化CS引脚,在这里我发现这些引脚使用宏定义的,而且我看到了相关的三个宏,所以我顺便吧这三个宏都改了:. v5 _8 U4 `( d5 ~" O6 S' [
  1. //初始化CS引脚
复制代码
  1. /***************----- W5500 GPIO定义 -----***************/$ M3 C: l  _7 w1 u0 X
  2. //#define W5500_SCS                GPIO_Pin_4     //定义w5500的cs引脚(PA4)4 t, }8 l: n; I8 G/ s- |, Y- W; }
  3. //#define W5500_SCS_PORT        GPIOA
    ( o6 s. v% w# `: F' c/ L& D7 {
  4. //       
    2 c# B. X4 U2 @1 L. M' M
  5. //#define W5500_RST                GPIO_Pin_8     //定义w5500的RST引脚(PA8)
    6 G) p. Y) i% k% P* E
  6. //#define W5500_RST_PORT        GPIOA
    2 @) [/ v4 p4 J8 Y( y* q
  7. 3 s6 a, d1 v2 U8 c6 ~) j# ]
  8. //#define W5500_INT                GPIO_Pin_9     //定义w5500的INT引脚(P9A)
    ' `& f& r4 f& |" D7 U& ]
  9. //#define W5500_INT_PORT        GPIOA+ S7 A: |6 u% B7 t: w# c, q' ]
  10. ' A9 i2 Q( h4 {
  11. /**********  LSY ----- W5500 GPIO定义----- ************/
    / R7 _' U5 A  y) C: G2 ~7 _
  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了)+ T/ w8 s  O" _0 \4 u
  1. SPI_Init(SPI2,&SPI_InitStructure);   
复制代码
(5)使能SPI1也改为使能SPI2了:
; T) K' |$ |8 o4 U1 L$ Z( ^
  1. SPI_Cmd(SPI2,ENABLE);       
复制代码
就改了这些,我是漏改了什么吗?跪求楼主大大帮我看看,非常感谢。9 I! N3 j4 O9 P3 W
2 G" }' R; [1 S/ Z- f! }

9 t  [. Z# s% o9 X' U0 \- j0 R3 V+ l; O6 N

yinjiaotu

yinjiaotu
jzt2497871470 回答时间:2015-11-19 10:58:20
        if(Read_W5500_SOCK_1Byte(0,Sn_SR) != SOCK_INIT)//如果socket打开失败
9 o  u3 m4 q/ w  ?; E1 Z2 F        {% q* a7 `' i! c: k0 a
                Write_W5500_SOCK_1Byte(0,Sn_CR,CLOSE);//打开不成功,关闭Socket1 |" `% A, I: l7 L; L
                return FALSE;//返回FALSE(0x00)
4 v6 ^5 J5 A+ C8 ~6 ^* m9 R        }
8 j0 e* I6 T3 v5 a$ S1 v0 [你好, 有人看看 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模块资料

谢谢分享* ^5 ^) m0 D4 P+ i+ ^' f* k
 
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 手机版