历史上的今天

今天是:2024年10月12日(星期六)

正在发生

2020年10月12日 | STM32驱动W5100实现udp通信

发布者:快乐旅行 来源: eefocus关键字:STM32  驱动W5100  udp通信 手机看文章 扫描二维码
随时随地手机看文章

环境:


主机:WIN7


开发环境:MDK4.72


MCU:STM32F103ZE



源代码:


驱动层代码:


drv_w5100.h


/*********************************************************************

*   w5100驱动层头文件

*   (c)copyright 2013,jdh

*   All Right Reserved

*文件名:drv_w5100.h

*程序员:jdh

*修改日期:2013/10/22

*   2013/10/23

*   2013/10/24

**********************************************************************/

/*********************************************************************

硬件连接说明

电路标号 单片机引脚 特殊功能

W5100_MISO PB4 SPI3_MISO

W5100_MOSI PB5 SPI3_MOSI

W5100_CS PA15 SPI3_NSS

W5100_SCLK PB3 SPI3_SCK

/RESET PD3

/INT PD6

**********************************************************************/

 

#ifndef _DRV_W5100_H_

#define _DRV_W5100_H_

 

/*********************************************************************

* 头文件

**********************************************************************/

 

#include "stm32f10x.h"

#include "stm32f10x_spi.h"

 

/*********************************************************************

* 宏定义

**********************************************************************/

 

/*********************************************************************

* 读写操作

**********************************************************************/

 

//写操作

#define WRITE_COMMAND    0xf0   

//读操作

#define READ_COMMAND    0x0f    

 

/*********************************************************************

* 基地址

**********************************************************************/

 

#define COMMON_BASE 0x0000

 

/*********************************************************************

* 寄存器

**********************************************************************/

 

//-----------------------------------------------------------------------------

//                               Common register

//-----------------------------------------------------------------------------

//Mode register, R/W, Default=0x00

#define SOCKET0       0

#define SOCKET1       1

#define SOCKET2       2

#define SOCKET3       3

 

#define TCP_SERVER    0

#define TCP_CLIENT    1

#define UDP           2

 

#define W5100_MODE COMMON_BASE

#define MODE_RST 0x80 //Software reset

#define MODE_PB 0x10 //Ping block mode

#define MODE_PPPOE 0x08 //PPOE mode

#define MODE_AI 0x02 //Address auto increment in indirect bus I/F

#define MODE_IND 0x01 //Indirect bus I/F mode

 

//Gateway address register, R/W, default=0x00

#define W5100_GAR COMMON_BASE+0x01

 

//Subnet mask address, R/W, default=0x00

#define W5100_SUBR COMMON_BASE+0x05

 

//Source hardware address, R/W, default=0x00

#define W5100_SHAR COMMON_BASE+0x09

 

//Source IP address, R/W, default=0x00

#define W5100_SIPR COMMON_BASE+0x0f

 

//Interrupt and interrupt mask register

#define W5100_IR COMMON_BASE+0x15 //RO, Default=0x00

#define IR_CONFLICT 0x80 //IP conflict

#define IR_UNREACH 0x40 //Destination unreachable

#define IR_PPPOE 0x20 //PPOE close

#define IR_S3_INT 0x08 //Occurrence of socket 3 socket interrupt

#define IR_S2_INT 0x04 //Occurrence of socket 2 socket interrupt

#define IR_S1_INT 0x02 //Occurrence of socket 1 socket interrupt

#define IR_S0_INT 0x01 //Occurrence of socket 0 socket interrupt

 

#define W5100_IMR COMMON_BASE+0x16 //R/W, Default=0x00

#define IMR_CONFLICT 0x80 //IP conflict

#define IMR_UNREACH 0x40 //Destination unreachable

#define IMR_PPPOE 0x20 //PPOE close

#define IMR_S3_INT 0x08 //Occurrence of socket 3 socket interrupt

#define IMR_S2_INT 0x04 //Occurrence of socket 2 socket interrupt

#define IMR_S1_INT 0x02 //Occurrence of socket 1 socket interrupt

#define IMR_S0_INT 0x01 //Occurrence of socket 0 socket interrupt

 

//Retry time value. Value 1 means 100us, R/W, default=0x07D0

#define W5100_RTR COMMON_BASE+0x17

 

//Retry count, R/W, Default=0x08

#define W5100_RCR COMMON_BASE+0X19

 

//RX memory size register, R/W, default=0x55

//--------------------------------------------------------    S1      S0      Memory size

//  Socket3    |  Socket2    |  Socket1    |  Socket0    |    0       0           1KB

//-------------|-------------|-------------|-------------|    0       1           2KB

//S1       S0  |S1       S0  |S1       S0  |S1       S0  |    1       0           4KB

//--------------------------------------------------------    1       1           8KB

#define W5100_RMSR COMMON_BASE+0x1a

 

//TX memory size register, R/W, default=0x55

#define W5100_TMSR COMMON_BASE+0x1b

 

//Authentication type in PPPOE mode, R, default=0x0000

#define W5100_PATR COMMON_BASE+0x1c

 

//PPP LCP request timer register, R/W, default=0x28

//Value 1 is about 25ms

#define W5100_PTIMER COMMON_BASE+0x28

 

//PPP LCP magic number register, R/W, default=0x00

#define W5100_PMAGIC COMMON_BASE+0x29

 

//Unreachable IP address, RO, default=0x00

#define W5100_UIPR COMMON_BASE+0x2a

 

//Unreachable port register, RO, default=0x0000

#define W5100_UPORT COMMON_BASE+0x2e

 

 

//-----------------------------------------------------------------------------

//                                  Socket register

//-----------------------------------------------------------------------------

//Socket mode register, R/W, default=0x00

#define W5100_S0_MR COMMON_BASE+0x0400 //Socket 0

#define W5100_S1_MR COMMON_BASE+0x0500 //Socket 1

#define W5100_S2_MR COMMON_BASE+0x0600 //Socket 2

#define W5100_S3_MR COMMON_BASE+0x0700 //Socket 3

#define S_MR_MULTI 0x80 //Multcasting

#define S_MR_MC 0x20 //Multcast

 

//  P3   P2   P1   P0     Meaning

#define S_MR_CLOSED 0x00 //  0    0    0    0      Closed

#define S_MR_TCP 0x01 //  0    0    0    1      TCP

#define S_MR_UDP 0x02 //  0    0    1    0      UDP

#define S_MR_IPRAW 0x03 //  0    0    1    1      IPRAW

#define S_MR_MACRAW 0x04 //  0    1    0    0      MACRAW

#define S_MR_PPPOE 0x05 //  0    1    0    1      PPPOE

 

//Socket command register, R/W, default=0x00

#define W5100_S0_CR COMMON_BASE+0x0401 //Socket 0

#define W5100_S1_CR COMMON_BASE+0x0501 //Socket 1

#define W5100_S2_CR COMMON_BASE+0x0601 //Socket 2

#define W5100_S3_CR COMMON_BASE+0x0701 //Socket 3

#define S_CR_OPEN 0x01 //It is used to initialize the socket

#define S_CR_LISTEN 0x02 //In TCP mode, it waits for a connection request from any remote peer(Client)

#define S_CR_CONNECT 0x04 //In TCP mode, it sends a connection request to remote peer(SERVER)

#define S_CR_DISCON 0x08 //In TCP mode, it sends a connection termination request

#define S_CR_CLOSE 0x10 //Used to close the socket

#define S_CR_SEND 0x20 //It transmit the data as much as the increase size of write pointer

#define S_CR_SEND_MAC 0x21 //In UDP mode, same as SEND

#define S_CR_SEND_KEEP 0x22 //In TCP mode

#define S_CR_RECV 0x40 //Receiving is processed including the value of socket RX read

//pointer register

 

/* Definition for PPPOE */

#define S_CR_PCON 0x23 //Start of ADSL connection

#define S_CR_PDISCON 0x24 //End of ADSL connection

#define S_CR_PCR 0x25 //Send REQ message ineach phase

#define S_CR_PCN 0x26 //Send NAK message in each phase

#define S_CR_PCJ 0x27 //Senf REJECT message in each phase

 

//Socket interrup register, RO, default=0x00

#define W5100_S0_IR COMMON_BASE+0x0402 //Socket 0

#define W5100_S1_IR COMMON_BASE+0x0502 //Socket 1

#define W5100_S2_IR COMMON_BASE+0x0602 //Socket 2

#define W5100_S3_IR COMMON_BASE+0x0702 //Socket 3

#define S_IR_SENDOK 0x10 //Send data complete

#define S_IR_TIMEOUT 0x08 //Set if timeout occurs during connection or termination

//or data transmission

#define S_IR_RECV 0x04 //Set if data is received

#define S_IR_DISCON 0x02 //Set if receiv connection termination request

#define S_IR_CON 0x01 //Set if connetion is established

 

/* Definition for PPPOE */

#define S_IR_PRECV 0x80 //Indicate receiving no support option data

#define S_IR_PFAIL 0x40 //Indicate PAP Authentication fail

#define S_IR_PNEXT 0x20 //Go next phase

 

//Socket status register, RO, default=0x00

#define W5100_S0_SSR COMMON_BASE+0x0403 //Socket 0

#define W5100_S1_SSR COMMON_BASE+0x0503 //Socket 1

#define W5100_S2_SSR COMMON_BASE+0x0603 //Socket 2

#define W5100_S3_SSR COMMON_BASE+0x0703 //Socket 3

#define S_SSR_CLOSED 0x00 //In case that OPEN command are given to Sn_CR, Timeout interrupt

//is asserted or connection is terminated

#define S_SSR_INIT 0x13 //In case that Sn_MR is set as TCP and OPEN commands are given to Sn_CR

#define S_SSR_LISTEN 0x14 //In case that under the SOCK_INIT status, LISTEN commands

//are given to Sn_CR

#define S_SSR_ESTABLISHED 0x17 //In case that connection is established

#define S_SSR_CLOSE_WAIT 0x1c //In case that connection temination request is received

#define S_SSR_UDP 0x22 //In case that OPEN command is given to Sn_CR when Sn_MR is set as UDP

#define S_SSR_IPRAW 0x32 //In case that OPEN command is given to Sn_CR when Sn_MR is set as IPRAW

#define S_SSR_MACRAW 0x42 //In case that OPEN command is given to S0_CR when S0_MR is set as MACRAW

[1] [2] [3] [4] [5] [6] [7]
关键字:STM32  驱动W5100  udp通信 引用地址:STM32驱动W5100实现udp通信

上一篇:stm32f4中通过dma采集adc
下一篇:ucos-ii示例4:邮箱测试

推荐阅读

  电动汽车现已是行业发展大趋势   今年5月底,国际新能源署(IEA)发布了《2018全球电动汽车展望》报告,报告显示到2017年为止,全球电动汽车保有量超过300万辆(包括纯电动汽车和插电式混合动力汽车),可以说未来前景一片大好。   虽然电动汽车在动力和安全方面还赶不上汽油车发展的程度,但如果只是在城市中行驶,电动汽车拥有的“低运行成...
据小米官方消息,小米米家冰箱系列正式发布:共有两门到十字四门四款新品,价格为999元起,将于10月15日10点首卖。 米家两门冰箱容量为160L(100L冷藏室+60L冷冻室),尺寸为474×535×1496mm。采用7档控温调节,直冷制冷,39分贝低噪运行。价格为999元。此前,曾有传言小米冰箱是海尔代工的,为此,海尔和小米都双双发布公告辟谣。在小米推出冰箱之前,出现...
近日,Apollo 自动驾驶出租车正式登陆京城。无需预约,用百度地图打车,就能一键呼叫无人车,感受自动驾驶的科技魅力。 据悉,百度自动驾驶出租车服务在北京全面开放,北京的朋友们可在北京经济技术开发区、海淀区、顺义区的数十个自动驾驶出租车站点,无需预约,直接下单免费试乘自动驾驶出租车服务。 自动驾驶出租车在首都的正式开放意义非凡。因为北京...
近日,奥拓电子在接受机构调研时表示,公司Mini LED显示产品持续渗透,2021 年上半年公司Mini LED显示产品订单的相对占比和绝对数量持续双增长,Mini LED在LED显示产品订单中的占比提高至六成以上,相比2020年全年提高12个百分点。其中,公司在教育及政企市场收获颇丰,上半年签订合同金额同比增长516.96%。奥拓电子依托于Mini LED的先发优势、专业技...

史海拾趣

问答坊 | AI 解惑

VHDL设计实例与仿真的秒表程序

我按照书上的程序,用天祥的CPLD学习板测试,可通不过,按按键没反应,请各位看看,用QUARTUS II 8.1. 外接晶振:20MHZ.…

查看全部问答∨

51源程序代码及原理图

本帖最后由 paulhyde 于 2014-9-15 04:14 编辑 代码下载: 板上电路介绍: 1.USB下载电路,直接为S51,S52,ATMEAG8515,ATMEGA16(需要带转接板)下载程序 2.USB供电,无需另外再加电源.方便使用 3.留有电源接口,方便供电. 4.6个独立按键 5.引出串 ...…

查看全部问答∨

无线数传模块

一款超远距离的433模块,发射功率500毫瓦,接收电流35个毫安,发射电流500个毫安,接收灵敏度-117dbm,传输距离2700到3000米,在工业控制有很好的效果。深圳安美通科技        QQ125344386…

查看全部问答∨

有人用过L293D没有?

我用L293D驱动电机 V1接24V电源 V2接5V电源 然后准备控制电机正反转 A1 A2 EN1 接单片机接口 A1=0 A2=1 EN1=1 电机不转 测量A2=0 把连接线去掉测量A2=1 不知道怎么回事 有人指点下 谢谢!!! …

查看全部问答∨

s3c6410的nandflash分区问题,格式化binfs,exfat破坏了

现在在ut的开发板上学习,想吧nandflash的分区方式改一下:   256MB flash         ------   bootloader         ------   TOC          ...…

查看全部问答∨

232转485的一个小问题

   我现在手头有一个云台控制器,本来是可以在电脑上由232对云台进行控制。这个东西移交给我的时候就不可以用电脑控制了,但是在控制盒的里用手动按钮还是可以控制云台转动的。这说明问题出在电脑232出来到单片机获得数据之间的某个地方 ...…

查看全部问答∨

ARM 2440的板子内存64M,为什么CE控制面板里看到的确只有30M?

请问 ARM 2440的板子内存64M,为什么CE控制面板里看到的确只有30M?…

查看全部问答∨

用VS2005在WINCE5的平台上,如何开发FTP程序啊,我想用来实现自动更新

用VS2005在WINCE5的平台上,如何开发FTP程序啊,我想用来实现自动更新? 我们在WINCE的手持扫描器上开发了个程序,想实现用FTP自动更新,但苦于不知道如何开发WINCE的FTP程序.还望大虾们帮忙!! 或者有其它办法实现自动更新也好,谢谢,最好能提 ...…

查看全部问答∨

ddk编译dll

请问,怎么用ddk编译dll文件,封装一定功能的函数给程序使用啊。…

查看全部问答∨

如何将BYTE转化为HBITMAP

已经给出了BYTE类型的数组(是位图数据),而现在函数接口接受的是HBITMAP型的参数,所以要将BYTE类型的数组转化为HBITMAP,不知道如何转换? 补充:WinCE平台C++语言开发…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved