95ce2328
李外
完成USB移植,测试正常,
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
#ifndef _W5500_CONF_H_
#define _W5500_CONF_H_
#include "stm32f4xx.h"
#include "stdio.h"
#include "types.h"
#define __GNUC__
typedef void (*pFunction)(void);
extern uint8 remote_ip[4]; /*远端IP地址*/
extern uint16 remote_port; /*远端端口号*/
extern uint16 local_port; /*定义本地端口*/
extern uint8 use_dhcp; /*是否使用DHCP获取IP*/
extern uint8 use_eeprom; /*是否使用EEPROM中的IP配置信息*/
//#define STM32_SPI1
#define STM32_SPI2
/*W5500接STM32的 SPI1硬件接线定义*/
// W5500_SCS ---> STM32_GPIOA4 /*W5500的片选管脚*/
// W5500_SCLK ---> STM32_GPIOA5 /*W5500的时钟管脚*/
// W5500_MISO ---> STM32_GPIOA6 /*W5500的MISO管脚*/
// W5500_MOSI ---> STM32_GPIOA7 /*W5500的MOSI管脚*/
// W5500_RESET ---> STM32_GPIOC0 /*W5500的RESET管脚*/
// W5500_INT ---> STM32_GPIOC1 /*W5500的INT管脚*/
/*W5500接STM32的 SPI2硬件接线定义*/
// W5500_SCS ---> STM32_GPIOB12 /*W5500的片选管脚*/
// W5500_SCLK ---> STM32_GPIOB13 /*W5500的时钟管脚*/
// W5500_MISO ---> STM32_GPIOB14 /*W5500的MISO管脚*/
// W5500_MOSI ---> STM32_GPIOB15 /*W5500的MOSI管脚*/
// W5500_RESET ---> STM32_GPIOB9 /*W5500的RESET管脚*/
// W5500_INT ---> STM32_GPIOC6 /*W5500的INT管脚*/
#define FW_VER_HIGH 1
#define FW_VER_LOW 0
#define ON 1
#define OFF 0
#define HIGH 1
#define LOW 0
#define MAX_BUF_SIZE 1460 /*定义每个数据包的大小*/
#define KEEP_ALIVE_TIME 30 /*30sec*/
#define TX_RX_MAX_BUF_SIZE 2048
#define EEPROM_MSG_LEN sizeof(EEPROM_MSG)
#define IP_FROM_DEFINE 0 /*使用初始定义的IP信息*/
#define IP_FROM_DHCP 1 /*使用DHCP获取IP信息*/
#define IP_FROM_EEPROM 2 /*使用EEPROM定义的IP信息*/
extern uint8 ip_from; /*选择IP信息配置源*/
#pragma pack(1)
/*此结构体定义了W5500可供配置的主要参数*/
typedef struct _CONFIG_MSG
{
uint8 mac[6]; /*MAC地址*/
uint8 lip[4]; /*local IP本地IP地址*/
uint8 sub[4]; /*子网掩码*/
uint8 gw[4]; /*网关*/
uint8 dns[4]; /*DNS服务器地址*/
uint8 rip[4]; /*remote IP远程IP地址*/
uint8 sw_ver[2]; /*软件版本号*/
}CONFIG_MSG;
#pragma pack()
#pragma pack(1)
/*此结构体定义了eeprom写入的几个变量,可按需修改*/
typedef struct _EEPROM_MSG
{
uint8 mac[6]; /*MAC地址*/
uint8 lip[4]; /*local IP本地IP地址*/
uint8 sub[4]; /*子网掩码*/
uint8 gw[4]; /*网关*/
}EEPROM_MSG_STR;
#pragma pack()
extern EEPROM_MSG_STR EEPROM_MSG;
extern CONFIG_MSG ConfigMsg;
extern uint8 dhcp_ok; /*DHCP获取成功*/
extern uint32 dhcp_time; /*DHCP运行计数*/
extern vu8 ntptimer; /*NPT秒计数*/
/*MCU配置相关函数*/
void gpio_for_w5500_config(void); /*SPI接口reset 及中断引脚*/
void timer2_init(void); /*STM32定时器2初始化*/
void timer2_isr(void); /*定时器中断执行的函数*/
void reboot(void); /*STM32软复位*/
void write_config_to_eeprom(void); /*写配置信息到EEPROM中*/
void read_config_from_eeprom(void); /*从EEPROM中读出信息*/
/*W5500SPI相关函数*/
void IINCHIP_WRITE( uint32 addrbsb, uint8 data); /*写入一个8位数据到W5500*/
uint8 IINCHIP_READ(uint32 addrbsb); /*从W5500读出一个8位数据*/
uint16 wiz_write_buf(uint32 addrbsb,uint8* buf,uint16 len); /*向W5500写入len字节数据*/
uint16 wiz_read_buf(uint32 addrbsb, uint8* buf,uint16 len); /*从W5500读出len字节数据*/
/*W5500基本配置相关函数*/
void reset_w5500(void); /*硬复位W5500*/
void set_w5500_mac(void); /*配置W5500的MAC地址*/
void set_w5500_ip(void); /*配置W5500的IP地址*/
/*需要用定时的的应用函数*/
void dhcp_timer_init(void); /*dhcp用到的定时器初始化*/
void ntp_timer_init(void); /*npt用到的定时器初始化*/
#endif
|