你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
每日签到
STM32团队2
论坛吐槽优化专区
升级测试
ST意法半导体中文论坛
»
论坛
›
【技术区】
›
ST开发工具
›
【HAL库每天一例】第065例:以太网-W5500
返回列表
查看:
3394
|
回复:
1
【HAL库每天一例】第065例:以太网-W5500
[复制链接]
haohao663
haohao663
当前离线
在线时间
498 小时
UID
331315
ST金币
0
蝴蝶豆
0
注册时间
2015-6-4
122
主题
129
回帖
0
蝴蝶豆
论坛元老
最后登录
2019-5-28
收听TA
发消息
发表于 2016-7-9 09:04:01
|
显示全部楼层
|
阅读模式
a0a.1 32b0c
【HAL库每天一例】系列例程从今天开始持续更新。。。。。
我们将坚持每天至少发布一个基于YS-F1Pro开发板的HAL库例程,
该系列例程将带领大家从零开始使用HAL库,后面会持续添加模块应用例程。
同样的,我们还程序发布基于HAL库的
指导文档和视频教程
,欢迎持续关注,并提出改进意见。
例程下载:
资料包括程序、相关说明资料以及软件使用截图
链接:
https://pan.baidu.com/s/1i574oPv
密码:r3s3
(硬石YS-F1Pro开发板HAL库例程持续更新\1. 软件设计之基本裸机例程(HAL库版本)\YSF1_HAL-064. 以太网-W5500
)
/**
******************************************************************************
* 硬石YS-F1Pro开发板例程功能说明
*
* 例程名称: 1. Network install
*
******************************************************************************
* 说明:
* 本例程配套硬石stm32开发板YS-F1Pro使用。
*
* 淘宝:
* 论坛:硬石电子社区
* 版权归硬石嵌入式开发团队所有,请勿商用。
******************************************************************************
*/
【1】例程简介
W5500 是一款全硬件 TCP/IP 嵌入式以太网控制器,为嵌入式系统提供了更加简易的互联网连接
方案.使用硬件逻辑门电路实现 TCP/IP 协议栈的传输层及网络层(如: TCP, UDP, ICMP, IPv4,
ARP, IGMP, PPPoE 等协议),并集成了数据链路层,物理层,以及 32K 字节片上 RAM 作为数据
收发缓存。使得上位机主控芯片,只需承担TCP/IP 应用层控制信息的处理任务。从而大大节省了上
位机对于数据复制、协议处理和中断处理等方面的工作量,提升了系统利用率及可靠性。
YS-F1Pro开发板上集成了W5500芯片,可以实现网络通信。
本例程实现W5500网络环境搭建,最后通过ping通验证网络通路。
【2】跳线帽情况
******* 为保证例程正常运行,必须插入以下跳线帽 **********
丝印编号 IO端口 目标功能引脚 出厂默认设置
JP1 PA10 TXD(CH340G) 已接入
JP2 PA9 RXD(CH340G) 已接入
JP8 PF9 INTn(W5500) 已接入
JP9 PF11 SCSn(W5500) 已接入
【3】操作及现象
使用网线接入YS-F1Pro开发板右上方网口,连接至路由器;使用开发板配套的MINI USB线连接到开发
板标示“调试串口”字样的MIMI USB接口(需要安装驱动),在电脑端打开串口调试助手工具,设置
参数为115200 8-N-1。根据自己网络环境设置w5500_conf.c文件中相关参数,编译程序并下载,等下
载完程序之后,在串口调试助手窗口可接收到信息。
在Windows下的具体操作是,开始—运行--(键入)cmd,在弹出的dos窗口中输入
ping+空格+ 要ping的网址,回车。
/******************* (C) COPYRIGHT 2015-2020 硬石嵌入式开发团队 *****END OF FILE****/
w5500_conf.h文件内容
#ifndef _W5500_CONF_H_
#define _W5500_CONF_H_
#include "stm32f1xx_hal.h"
#include "stdio.h"
#include "Ethernet/W5500/types.h"
#define __GNUC__
typedef void (*pFunction)(void);
//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配置信息 */
/*定义SPI作为W5500的硬件接口*/
#define WIZ_SPIx SPI3 /* 定义W5500所用的SPI接口 */
#define WIZ_SPIx_RCC_CLK_ENABLE() __HAL_RCC_SPI3_CLK_ENABLE() /* 定义W5500所用的SPI接口时钟 */
#define WIZ_SPI_GPIO_ClK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() /* GPIO端口时钟 */
#define WIZ_SPIx_GPIO_PORT GPIOB /* GPIO端口 */
#define WIZ_SPIx_SCLK_PIN GPIO_PIN_3 /* 定义W5500的时钟管脚 */
#define WIZ_SPIx_MISO_PIN GPIO_PIN_4 /* 定义W5500的MISO管脚 */
#define WIZ_SPIx_MOSI_PIN GPIO_PIN_5 /* 定义W5500的MOSI管脚 */
#define WIZ_SPIx_SCS_PIN GPIO_PIN_11 /* 定义W5500的片选管脚 */
#define WIZ_SPIx_SCS_PORT GPIOF /* GPIO端口 */
#define WIZ_SPIx_SCS_CLK_ENABLE() __HAL_RCC_GPIOF_CLK_ENABLE() /* GPIO端口时钟 */
#define WIZ_INT_PIN GPIO_PIN_9 /* 定义W5500的INT管脚 */
#define WIZ_INT_PORT GPIOF /* GPIO端口 */
#define WIZ_INT_CLK_ENABLE() __HAL_RCC_GPIOF_CLK_ENABLE() /* GPIO端口时钟 */
#define WIZ_RESET_PIN GPIO_PIN_8 /* 定义W5500的INT管脚 */
#define WIZ_RESET_PORT GPIOF /* GPIO端口 */
#define WIZ_RESET_CLK_ENABLE() __HAL_RCC_GPIOF_CLK_ENABLE() /* GPIO端口时钟 */
#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 __IO uint8_t 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
复制代码
<
回复
使用道具
举报
stary666
stary666
当前离线
在线时间
875 小时
UID
317774
ST金币
0
蝴蝶豆
1
注册时间
2010-4-9
100
主题
3617
回帖
1
蝴蝶豆
论坛元老
最后登录
2020-12-8
收听TA
发消息
发表于 2016-7-22 12:36:29
|
显示全部楼层
a1024a.1 32b0c
回复
支持
反对
使用道具
举报
返回列表
浏览过的版块
STM8
活动专区
STM32
签到区
其他
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表