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

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

[复制链接]
kangxuebin 发布时间:2014-9-2 10:24
本帖最后由 kangxuebin 于 2017-11-8 17:28 编辑 ) m9 @& `$ S8 h& R" q1 s
# @7 W9 I( h3 x( o( p

3 U( O$ x: x% ^7 C6 I5 q8 x  w0 }0 I" @6 P( f
[资料]STM32以太网入门培训课件8 O2 y/ I$ v/ H# |

% x! m1 }3 u# a
从零开始使用 CubeMX 创建以太网工程
4 s- F- ^% G8 z% }' zTS-W5500模块特点:
4 |0 Q% @, R% u/ [9 B$ z! [% F1、尺寸小:5CM*3CM0 t. \- G9 C2 w- e% z8 G! b4 P
2、4层板设计并了TVS等保护IC,差分走线,保障了良好的EMC兼容性3 L8 c2 P3 \( R! z
3、5V、3V单片机都兼容6 Q; D4 B3 ^5 i* b8 u  f2 }; J
W55009 I3 A9 D+ Y+ j
W5500是一款全硬件TCP/IP嵌入式以太网控制器,为嵌入式系统提供了更加简易: ^7 |% ^& h" z
的互联网连接方案。W5500集成了TCP/IP协议栈,10/100M以太网数据链路层(MAC)
) v: m* K% Z& W6 w; m及物理层(PHY),使得用户使用单芯片就能够在他们的应用中拓展网络连接。) ?, `7 B0 `* G) o9 A# H- L  R: ?
久经市场考验的WIZnet全硬件TCP/IP协议栈支持TCP,UDP,IPv4,ICMP,ARP,IGMP 以
5 ?/ _) f+ @/ U% v及PPPoE协议。W5500内嵌32K字节片上缓存以供以太网包处理。如果你使用W5500,, R: Q5 L8 u% k4 m* D
你只需要一些简单的Socket编程就能实现以太网应用。这将会比其他嵌入式以太网方案8 y  q1 J& x" h. B4 b
更加快捷、简便。用户可以同时使用8个硬件Socket独立通讯。2 ?5 k2 s( [# Q( `0 k( k( W
W5500提供了SPI(外设串行接口)从而能够更加容易与外设MCU整合。而且,8 t4 f6 h! e  Y% s# ^2 j' I+ r
W5500的使用了新的高效SPI协议支持80MHz速率,从而能够更好的实现高速网络通讯。
4 |' q2 |0 {; {. \1 h  m为了减少系统能耗,W5500提供了网络唤醒模式(WOL)及掉电模式供客户选择使用。. `* \! R& T& m+ H3 O# C& u; g9 M
特点2 r* Q7 g# U( F, b% e
-  支持硬件TCP/IP协议:TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE
* A8 J* O* U8 b/ t" J-  支持8个独立端口(Socket)同时通讯1 o& j! ^6 w  O
-  支持掉电模式
1 ]4 [  Y# @5 B* K6 P& k-  支持网络唤醒
0 k2 b5 E+ Z" W2 @' G-  支持高速串行外设接口(SPI模式0,3)
0 Y9 ?7 m& A; b0 N2 D2 `  e-  内部32K字节收发缓存
7 y$ b& l# k, {+ U. h-  内嵌10BaseT/100BaseTX 以太网物理层(PHY)
6 }$ O2 W) D) K+ ~-  支持自动协商(10/100-Based全双工/半双工)
+ X' k+ W' z# K2 k6 _6 ]-  不支持IP分片0 C1 v6 |% k. z
-  3.3V工作电压,I/O信号口5V耐压;) B  Y5 T5 M' c
-  LED状态显示(全双工/半双工,网络连接,网络速度,活动状态)
3 Z6 U  {2 E) t# p/ M+ v9 X-  48引脚LQFP无铅封装(7x7mm, 0.5mm 间距)
6 j9 w  r. k. B$ jW5500 数据手册 版本1.0 (2013八月)    3 / 67
( |2 h3 w) m2 R( L  c目标应用
1 K6 K) Q7 B; [5 JW5500适合于以下嵌入式应用:
' Q( D# M4 }$ M6 u2 }# v" z-  家庭网络设备: 机顶盒、个人录像机、数码媒体适配器4 W* k; m& }6 ]* c3 V
-  串行转以太网: 门禁控制、LED显示屏、无线AP继电器等% Z! C' x4 k1 H& Q- d2 O0 i" {; Y) i
-  并行转以太网: POS/微型打印机、复印机* N0 D4 W4 W; u3 e* r! Y
-  USB转以太网: 存储设备、网络打印机8 W/ m& s& ]9 @, W
-  GPIO转以太网: 家庭网络传感器/ g# h4 c2 x: N# B8 }
-  安全系统: 数字录像机、网络摄像机、信息亭7 S. b8 y( ~6 d. u" V% U
-  工厂和楼宇自动化控制系统$ T2 Q6 _' e9 E9 C9 I3 Z5 C- i+ t
-  医疗监测设备
* h! g/ g+ O+ _-  嵌入式服务器( N1 f9 `% M5 Q) l# L" R2 |' h* [% `
TS-W5500.jpg ) |; H' k& F# h3 |, ]/ Q* ^; ?2 f- a
W5500模块原理图V1.0.pdf (42.72 KB, 下载次数: 2172)

评分

参与人数 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了,所以是在一个网段的)。跪求楼主大大帮我看看,非常感谢。& @' K$ O* K$ v) I' g/ {
这是我做的一些修改内容:" {" g# D' o" N! }) C
我看到你的引脚是这样连接的:(箭头后面是我改成了这些引脚)
: Z0 l- }. I' r$ S *              PA8 -> W5500_RST        ---------->PA15* f; U; E7 n4 ~& m- Y* ~( c) r
*              PA9 -> W5500_INT          ---------->PA8   - `/ z% I% @+ r. d# E( T+ N
*              PA4 -> W5500_SCS          ---------->PB12    - j; P/ r# z5 {: e+ t
*              PA5 -> W5500_SCK          ---------->PB13  9 o) L$ x. D* y  E0 k+ b
*              PA6 -> W5500_MISO         ---------->PB14   
% Q2 |+ {  T4 L8 {* V *              PA7 -> W5500_MOSI        ---------->PB15& H0 L2 I! B" E+ e
下面的引脚图是我摘出来的电路图。! G' a' X/ q0 \, o0 k7 c# z
这是我改动代码的地方:2 y9 {6 P: {" m% |  E; a7 [4 g
(1)初始化SPI1改为初始化SPI2(因为我用的是PB12、13、14、15,我看到数据手册里这几个引脚是SPI2)3 p7 a3 V5 H/ |/ b* ?2 L
  1. /*- O5 I5 i5 ]: C! y9 s7 K
  2.         //初始化SPI1 9 Z& _2 m" V" F/ k6 E8 W) w
  3.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_SPI1 | RCC_APB2Periph_AFIO, ENABLE);       
    8 u3 v) ]5 {9 S6 t, _
  4. */
    : b5 {* z# _" [) C; |% Y
  5.         //初始化SPI2        +++++++0 h* P' r9 }) p, u7 F) Q
  6.         RCC_APB1PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB1Periph_SPI2 | RCC_APB2Periph_AFIO, ENABLE);       
    . ~; _% O! y1 g; S! c7 f6 g$ l
  7.        
复制代码
(2)初始化SCK、MISO、MOSI引脚,把你代码中的引脚改成了GPIOB_13/14/15
, F& Q$ k+ v0 B3 D
  1. /*初始化SCK、MISO、MOSI引脚 ++++++++*/
    ! `4 e7 W& `# \2 u
  2.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;. i  h7 S3 W8 w/ W* c* X
  3.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    + i3 R- I; |: e2 z0 A1 n) L7 d
  4.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  u( Q4 G1 X: E$ _1 h* v
  5.         GPIO_Init(GPIOB, &GPIO_InitStructure);
    ' O) T) n6 f" a1 y+ K/ u
  6.         GPIO_SetBits(GPIOB,GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
复制代码
(3)初始化CS引脚,在这里我发现这些引脚使用宏定义的,而且我看到了相关的三个宏,所以我顺便吧这三个宏都改了:8 A  V% o6 S% m0 e6 }( D& `
  1. //初始化CS引脚
复制代码
  1. /***************----- W5500 GPIO定义 -----***************/# P- M% t+ i; p* j
  2. //#define W5500_SCS                GPIO_Pin_4     //定义w5500的cs引脚(PA4)! i* Q: Z  ]5 ]2 r
  3. //#define W5500_SCS_PORT        GPIOA2 c! s* G: z9 {9 J
  4. //       
    5 Q0 a0 t9 j8 }& [* \
  5. //#define W5500_RST                GPIO_Pin_8     //定义w5500的RST引脚(PA8)* v( y- E1 B5 ^! b1 |
  6. //#define W5500_RST_PORT        GPIOA
    7 I& c0 Y8 @  [  k$ n  i! O

  7. + h- `" j6 B7 U% [: O2 c4 ^
  8. //#define W5500_INT                GPIO_Pin_9     //定义w5500的INT引脚(P9A), g3 }: l6 G9 a/ l- Q* A
  9. //#define W5500_INT_PORT        GPIOA
    ' m* G0 {( _2 u  ^; w
  10. / `& @, v& m$ a8 m+ D7 n
  11. /**********  LSY ----- W5500 GPIO定义----- ************/: R# ~0 u/ e5 ?6 J! R9 R& z) X
  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了)
0 p- X0 h. O  i" j: z; K
  1. SPI_Init(SPI2,&SPI_InitStructure);   
复制代码
(5)使能SPI1也改为使能SPI2了:7 F  o3 ]* g/ k1 j9 k2 T0 s( E
  1. SPI_Cmd(SPI2,ENABLE);       
复制代码
就改了这些,我是漏改了什么吗?跪求楼主大大帮我看看,非常感谢。$ H, P* W  m) @( p2 t$ t. @

2 `6 ?: t8 i8 S3 T2 f
2 R% G2 s, q" C! u# W, e# o
, j( a9 N! C$ t4 x' S0 O+ v

yinjiaotu

yinjiaotu
jzt2497871470 回答时间:2015-11-19 10:58:20
        if(Read_W5500_SOCK_1Byte(0,Sn_SR) != SOCK_INIT)//如果socket打开失败' V! j$ j& N  z3 A8 o$ F
        {
# i6 ~4 k- ]" O! \: S. m2 w                Write_W5500_SOCK_1Byte(0,Sn_CR,CLOSE);//打开不成功,关闭Socket( u! t3 o' a3 m5 T
                return FALSE;//返回FALSE(0x00)4 L% I" i: N5 q# i8 x" Y
        }
7 [3 R! ]3 @- B+ f  m: l/ ]6 Q- m你好, 有人看看 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模块资料

谢谢分享
& `, J* V# U" f! a, w 
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 手机版