环境:
主机: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
上一篇:stm32f4中通过dma采集adc
下一篇:ucos-ii示例4:邮箱测试
推荐阅读
史海拾趣
背景:在快速发展的同时,振华新云注重法治建设和企业文化建设,努力营造良好的经营环境。
内容:公司严格按照法治央企的各项建设要求,积极推进企业法治文化建设。同时,注重加强企业文化建设,弘扬“自力更生、艰苦奋斗、大力协同、无私奉献”的精神。通过开展各种文化活动和培训等方式,提高员工的文化素养和综合素质。
成果:法治建设和企业文化建设的不断推进,为公司的健康稳定发展提供了有力保障。同时,也增强了公司的凝聚力和向心力,激发了员工的积极性和创造力。
请注意,以上故事仅为概述,具体细节和内容需要根据实际情况进行补充和完善。
背景:1966年,在贵州凯里白午山区,国营新云器材厂(后更名为振华新云)正式成立,标志着公司的诞生。
内容:成立初期,公司面临着技术落后、设备陈旧等困难。然而,在老一辈员工的艰苦奋斗下,公司逐渐摸索出适合自身的发展道路。通过引进新技术、优化生产流程,不断提高产品质量和生产效率。
成果:经过几年的努力,振华新云逐渐在电子元器件行业崭露头角,为后续的快速发展奠定了坚实基础。
随着全球对环保意识的提高,Eska公司积极响应并融入环保理念。公司采用再生纸作为原材料,制造灰板纸,有效减少了资源浪费和环境污染。同时,Eska的造纸过程也注重节能减排,每生产一顿纸板所需的水量非常少。此外,公司还拥有自己的加热和发电站,所产出的电力和蒸汽供应自给自足,进一步减少了对环境的破坏。
人才是企业发展的重要保障。Fenghua (HK) Electronics Ltd高度重视人才队伍建设,通过校园招聘、社会招聘等多种渠道吸引优秀人才加入公司。公司提供了完善的培训体系和晋升机会,激发了员工的积极性和创造力。同时,公司注重营造良好的企业文化氛围,让员工在工作中感受到归属感和成就感。
随着技术的不断进步,Diodes Incorporated始终保持着对新技术研发的投入。其中,公司推出的首款碳化硅(SiC)萧特基势垒二极管(SBD)就是一个重要的里程碑。这款产品的推出,不仅大幅提高了半导体器件的效率和高温可靠性,还满足了市场对降低系统执行成本和减少维护需求的期望。这一技术创新的突破,进一步巩固了Diodes Incorporated在半导体行业中的领先地位。
在食品加工领域,Eclipse Magnetics公司同样展现出了强大的实力。他们针对谷蛋白粉加工过程中可能出现的金属污染问题,量身定制了一款磁选机。这款磁选机能够有效地去除原料中的金属杂质,保护加工麸质免受污染。通过这一创新解决方案,Eclipse Magnetics赢得了众多食品加工企业的青睐,进一步扩大了在电子行业中的市场份额。
请注意,以上故事均基于虚构性构建,旨在展示Eclipse Magnetics公司在电子行业中的发展历程和成就。如有需要,建议查阅相关公司资料或行业报告以获取更详细和准确的信息。
本帖最后由 paulhyde 于 2014-9-15 04:14 编辑 代码下载: 板上电路介绍: 1.USB下载电路,直接为S51,S52,ATMEAG8515,ATMEGA16(需要带转接板)下载程序 2.USB供电,无需另外再加电源.方便使用 3.留有电源接口,方便供电. 4.6个独立按键 5.引出串 ...… 查看全部问答∨ |
|
我用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对云台进行控制。这个东西移交给我的时候就不可以用电脑控制了,但是在控制盒的里用手动按钮还是可以控制云台转动的。这说明问题出在电脑232出来到单片机获得数据之间的某个地方 ...… 查看全部问答∨ |
用VS2005在WINCE5的平台上,如何开发FTP程序啊,我想用来实现自动更新 用VS2005在WINCE5的平台上,如何开发FTP程序啊,我想用来实现自动更新? 我们在WINCE的手持扫描器上开发了个程序,想实现用FTP自动更新,但苦于不知道如何开发WINCE的FTP程序.还望大虾们帮忙!! 或者有其它办法实现自动更新也好,谢谢,最好能提 ...… 查看全部问答∨ |
|
已经给出了BYTE类型的数组(是位图数据),而现在函数接口接受的是HBITMAP型的参数,所以要将BYTE类型的数组转化为HBITMAP,不知道如何转换? 补充:WinCE平台C++语言开发… 查看全部问答∨ |