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

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

[复制链接]
kangxuebin 发布时间:2014-9-2 10:24
本帖最后由 kangxuebin 于 2017-11-8 17:28 编辑 $ M6 f% h. W' k

: c3 d. Y% ^) _" F& G0 h, z
7 U% g2 Q0 r% l9 I, h+ O$ o" }9 u& [" l* ?, V- |  o4 b
[资料]STM32以太网入门培训课件. y. z4 ~7 U0 R( ?! h* S/ E; `
4 k7 V1 m% Q3 R9 p+ i
从零开始使用 CubeMX 创建以太网工程
' G1 A  o2 w% j" Z/ |TS-W5500模块特点:. c$ I; Y9 J0 T0 G6 D5 {
1、尺寸小:5CM*3CM% N4 }0 e9 w0 ~# M3 O
2、4层板设计并了TVS等保护IC,差分走线,保障了良好的EMC兼容性; v* O0 H! U# i. h: r9 U
3、5V、3V单片机都兼容
2 F( v7 L4 _8 \9 ]) L  gW5500
/ S3 V* E6 I: N* Q6 yW5500是一款全硬件TCP/IP嵌入式以太网控制器,为嵌入式系统提供了更加简易( ?6 u% p, L+ @3 P$ J% o2 |1 U6 x% m
的互联网连接方案。W5500集成了TCP/IP协议栈,10/100M以太网数据链路层(MAC)( p; S/ w. j" M, m3 U  ?; r( A' I3 p
及物理层(PHY),使得用户使用单芯片就能够在他们的应用中拓展网络连接。  @  \* G+ I, O1 T/ L6 _  `
久经市场考验的WIZnet全硬件TCP/IP协议栈支持TCP,UDP,IPv4,ICMP,ARP,IGMP 以
7 v/ z9 l' j: u0 a! B3 J及PPPoE协议。W5500内嵌32K字节片上缓存以供以太网包处理。如果你使用W5500,
4 G: v( X1 F+ {. _6 @1 M1 G' |你只需要一些简单的Socket编程就能实现以太网应用。这将会比其他嵌入式以太网方案
- t6 X0 ^9 Y" s# n更加快捷、简便。用户可以同时使用8个硬件Socket独立通讯。1 O! E+ g7 ~, t: Z  G" G
W5500提供了SPI(外设串行接口)从而能够更加容易与外设MCU整合。而且,
2 z8 |2 l3 b5 q2 ~) I# \+ cW5500的使用了新的高效SPI协议支持80MHz速率,从而能够更好的实现高速网络通讯。
* c8 @% P* I3 t% H3 ]2 E- R为了减少系统能耗,W5500提供了网络唤醒模式(WOL)及掉电模式供客户选择使用。3 C" |3 M5 d: U. V! W; @
特点
* _; |8 A# J! i  u5 I4 M6 d-  支持硬件TCP/IP协议:TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE, y! d7 w: ^3 N
-  支持8个独立端口(Socket)同时通讯
8 r9 R( r# r/ I, i. N-  支持掉电模式( a; u" z+ K3 X7 P8 {
-  支持网络唤醒
3 n' C. n+ P1 C7 Y9 Q. f# B, s3 `4 `-  支持高速串行外设接口(SPI模式0,3)
( M9 J" D# w, n& ^4 I0 E6 V# ]  o-  内部32K字节收发缓存
% P- ^5 E/ g. e6 Z8 F# t8 G-  内嵌10BaseT/100BaseTX 以太网物理层(PHY)* q# e# Q- m7 u& ?2 S" j
-  支持自动协商(10/100-Based全双工/半双工)7 k- h( y1 U# \: C* q8 r8 S
-  不支持IP分片
0 C# K1 c4 S4 b3 Q5 i-  3.3V工作电压,I/O信号口5V耐压;4 q. U( N) M. Z' N
-  LED状态显示(全双工/半双工,网络连接,网络速度,活动状态)6 g* C4 _) e. X4 S
-  48引脚LQFP无铅封装(7x7mm, 0.5mm 间距)
; ]7 f5 o' U5 k0 n8 V5 @6 YW5500 数据手册 版本1.0 (2013八月)    3 / 67
' X) q4 |* T1 N! G, i3 ^目标应用
' W+ ^. _5 E9 C' s5 F% nW5500适合于以下嵌入式应用:
5 R* }1 H  J$ j7 X3 f* c" O0 J$ n-  家庭网络设备: 机顶盒、个人录像机、数码媒体适配器1 z% T4 J, Y6 _- w1 l) q, i, N
-  串行转以太网: 门禁控制、LED显示屏、无线AP继电器等
: S! k5 L$ f+ ^5 a9 y-  并行转以太网: POS/微型打印机、复印机. X" Q4 T& y) [& q! s( V- {
-  USB转以太网: 存储设备、网络打印机1 x4 o- ?4 x9 C& X: v
-  GPIO转以太网: 家庭网络传感器
) g) n4 I+ s& K% }1 }-  安全系统: 数字录像机、网络摄像机、信息亭
* B3 |  D1 J4 |- R$ ]-  工厂和楼宇自动化控制系统
. w3 R% z1 j* R: Q) E-  医疗监测设备
1 h4 v2 _6 [# `! e, M7 S-  嵌入式服务器8 l5 x" |! o5 l( {
TS-W5500.jpg 8 ^0 Y6 t1 D. {4 i3 o5 M+ R( ~
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了,所以是在一个网段的)。跪求楼主大大帮我看看,非常感谢。
" _- q& m) x! W! [. l7 L' Z9 ^这是我做的一些修改内容:
3 l: x/ v: P: i. W# y( b5 q: |. a我看到你的引脚是这样连接的:(箭头后面是我改成了这些引脚)! d' U/ U0 _" @  D4 x$ I8 ^! @
*              PA8 -> W5500_RST        ---------->PA15. l( F+ c+ Y6 c
*              PA9 -> W5500_INT          ---------->PA8   7 L! \& u  X- G8 |8 P6 d
*              PA4 -> W5500_SCS          ---------->PB12   
' t2 V9 q+ v7 g# u7 G *              PA5 -> W5500_SCK          ---------->PB13  ( c/ u) F- a8 \- k6 _  l: ?
*              PA6 -> W5500_MISO         ---------->PB14   5 Y* w8 V- P5 B
*              PA7 -> W5500_MOSI        ---------->PB15
! a: Y+ l! Y) Y' s8 M% I. ]下面的引脚图是我摘出来的电路图。
6 s4 a1 X; Y. N( L, v这是我改动代码的地方:. N: q+ g6 h5 @7 s0 z; j  k' z, ]
(1)初始化SPI1改为初始化SPI2(因为我用的是PB12、13、14、15,我看到数据手册里这几个引脚是SPI2)
; S- c9 q0 p6 ]% B) Z
  1. /*
    : c! A( w. q/ i$ |
  2.         //初始化SPI1 " Q. Q% j  b9 G' `: }. P4 M6 @; E
  3.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_SPI1 | RCC_APB2Periph_AFIO, ENABLE);        ; y* ^, F" J1 e5 {3 a/ v
  4. */
      Y4 p( }9 L# m- V8 O8 Q* I* M
  5.         //初始化SPI2        +++++++
    ' V- F5 e# F, {2 j4 `( T5 e; I
  6.         RCC_APB1PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB1Periph_SPI2 | RCC_APB2Periph_AFIO, ENABLE);        + |0 V5 A9 z  Q4 j. u
  7.        
复制代码
(2)初始化SCK、MISO、MOSI引脚,把你代码中的引脚改成了GPIOB_13/14/15
' K3 P/ G& L) y
  1. /*初始化SCK、MISO、MOSI引脚 ++++++++*/
    / ]- h3 I, @; P5 _
  2.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;8 w; r/ [1 g9 L$ z
  3.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;" Y1 r" G8 V# p: L4 ]) Z: J: P
  4.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    % v. K6 }" c$ [$ O4 U
  5.         GPIO_Init(GPIOB, &GPIO_InitStructure);1 j4 E3 l; |( C5 ^3 U% Y4 l5 b7 x
  6.         GPIO_SetBits(GPIOB,GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
复制代码
(3)初始化CS引脚,在这里我发现这些引脚使用宏定义的,而且我看到了相关的三个宏,所以我顺便吧这三个宏都改了:) q0 B& C9 W, A' C
  1. //初始化CS引脚
复制代码
  1. /***************----- W5500 GPIO定义 -----***************/7 ^: n. ]7 a: y  _  i- \
  2. //#define W5500_SCS                GPIO_Pin_4     //定义w5500的cs引脚(PA4)8 T& z1 p4 o& N6 ^! q6 O: s
  3. //#define W5500_SCS_PORT        GPIOA3 J- t; i4 J" f
  4. //        ! W+ G- }# N; D3 y
  5. //#define W5500_RST                GPIO_Pin_8     //定义w5500的RST引脚(PA8)* u" A" y$ M& L) o7 x! G9 E
  6. //#define W5500_RST_PORT        GPIOA  i* M/ f; y; b' \
  7. & h& O3 @3 F* w! H* x; l/ E( z0 B
  8. //#define W5500_INT                GPIO_Pin_9     //定义w5500的INT引脚(P9A); [' v  I) n+ o4 L" t( k
  9. //#define W5500_INT_PORT        GPIOA+ f/ j! ~) g0 \) k0 G
  10. % [2 n4 t) f* ]
  11. /**********  LSY ----- W5500 GPIO定义----- ************/6 v; @4 n1 |/ ^4 ?8 }+ F( v. g
  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了), {$ M: Q: c5 J5 t, n; L
  1. SPI_Init(SPI2,&SPI_InitStructure);   
复制代码
(5)使能SPI1也改为使能SPI2了:( u& g7 G: F8 P4 y- R
  1. SPI_Cmd(SPI2,ENABLE);       
复制代码
就改了这些,我是漏改了什么吗?跪求楼主大大帮我看看,非常感谢。
' D" D. q# S  m, D; L8 [7 g  K4 A: l  [( o) U. H2 }6 @
$ C" l) e3 b# ^( z7 p

+ Z7 t* U' g& B+ d/ Z6 _1 |3 G  O

yinjiaotu

yinjiaotu
jzt2497871470 回答时间:2015-11-19 10:58:20
        if(Read_W5500_SOCK_1Byte(0,Sn_SR) != SOCK_INIT)//如果socket打开失败
; L: G7 M1 D/ o5 c* J, I2 V        {
8 J$ s- Y3 @4 M                Write_W5500_SOCK_1Byte(0,Sn_CR,CLOSE);//打开不成功,关闭Socket
1 f7 l$ Z2 o, |0 |4 J                return FALSE;//返回FALSE(0x00)9 u; f" o' ^5 \1 N# W: ^7 O" S
        }5 _% }0 _7 J9 a+ r
你好, 有人看看 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模块资料

谢谢分享9 {% u$ a; q: G6 B6 v& S
 
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 手机版