查看:
6574
|
回复:
12
|
M0+MAC+TCP/IP 以太网单芯片方案 W7500EVB用户手册连载(2)--实战篇
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
发表于2018-02-26 09:11:08
|
只看该作者
1#
电梯直达
W7500(W7500P)芯片简介:
W7500 芯片为工业级以太网单芯片解决方案, 集成 ARM Cortex-M0,128KB Flash 及全硬件TCP/IP 核(和W5500、W5100内核一致),特别适用于物联网领域。 使用 W7500EVB, 让您轻松完成原型开发。 全硬件TCP/IP核的最大优点是他在执行联网操作时不需要占用MCU的运行资源,大大增加了MCU的工作效率。
本篇将从W7500最简单的外设说起。每一个实例都配有详细的代码及解释,手把手教你如何使用W7500EVB的各种外设,通过本篇的学习,希望大家能学会W7500EVB绝大部分外设的使用。
想了解更多关于WIZnet W7500更多信息,或者有技术问题请联系我们:gustin@wisioe.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
发表于2018-02-26 09:58:30
|
只看该作者
2#
第三章 RGB LED试验W7500 最简单的外设莫过于 IO 口的高低电平控制了,本章将通过一个经典的跑马灯程序,带大家开启 W7500EVB 之旅, 通过本章的学习, 将了解到W7500的 IO 口作为输出使用的方法。 在本章中, 我们将通过代码控制 W7500EVB 开发板上的RGB LED: 红绿蓝交替闪烁。 3.1 W7500 IO 口简介本章将要实现的是控制 W7500EVB 开发板上的RGB LED 实现一个跑马灯的效果, 该实验的关键在于如何控制 W7500 的 IO 口输出。了解了W7500的 IO 口是如何输出的,就可以实现跑马灯了。通过这一章的学习, 将初步掌握W7500基本 IO 口的使用,这是迈向W7500的第一步。
W7500 的 IO 口可以由软件配置成如下 3 种模式 1. 输入模式 2. 输出模式 3. 复用功能模式 每个 IO 口可以自由编程,都有各自的输出使能位和清除输出使能位以及其它复用功能的选择。 下面我们来看一下GPIO的初始化,我们可以调用GPIO_Init函数来进行初始化。 void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct); GPIO_Init函数有两个参数, 第一个参数GPIOx是用来指定 GPIO,取值范围为 GPIOA~GPIOD。第二个参数GPIO_InitStruct是初始化参数结构体指针,结构体类型为 GPIO_InitTypeDef。下面来看看这个结构体的定义。 typedef struct { uint32_t GPIO_Pin; GPIOMode_TypeDef GPIO_Mode; GPIOPad_TypeDef GPIO_Pad; }GPIO_InitTypeDef; 这里我们通过初始化一个GPIO来讲解这个结构体成员变量的含义。 初始化GPIO的常用格式是。
GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_Init(GPIOC, &GPIO_InitStructure); PAD_AFConfig(PAD_PC, GPIO_Pin_5, PAD_AF1);
上面代码的意思是设置GPIOC的第5个IO口为输出模式。从上面初始化代码可以看出,结构体 GPIO_InitStructure 的第一个成员变量 GPIO_Pin 用来设置是要初始化哪个或者哪些 IO 口; 第二个成员变量 GPIO_Mode 是用来设置对应 IO 口的输出输入模式,这些模式是上面我们讲解的3个模式,在 W7500x_gpio.h 中是通过一个枚举类型定义的。 typedef enum { GPIO_Mode_IN = 0x00, GPIO_Mode_OUT = 0x01, GPIO_Mode_AF = 0x02 }GPIOMode_TypeDef;
如果想知道某个IO口的电平状态,可以读取DATA寄存器的某个位的状态就可以了。在固件库中操作DATA寄存器读取IO口数据,可以通过GPIO_ReadInputDataBit函数实现。 uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
比如我要读 GPIOC_5 的电平状态,那么方法是。 GPIO_ReadInputDataBit(GPIOC, GPIO_PIN_5); 返回值是 1(Bit_SET)或者 0(Bit_RESET); 如果想要某个IO口输出高电平状态或低电平状态,只要设置GPIO字节屏蔽访问寄存器的某个位就可以了。使用起来也是比较简单的。在固件库中操作GPIO字节屏蔽访问寄存器设置IO口,是通过GPIO_SetBits函数或者GPIO_ResetBits函数。 void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
如果我要将 GPIOC_5 的电平状态拉高,那么方法是。 GPIO_SetBits(GPIOC, GPIO_Pin_5);
如果我要将 GPIOC_5 的电平状态拉低,那么方法是。 GPIO_ResetBits(GPIOC, GPIO_Pin_5);
如果想要使用某个IO口的备用功能,只要设置功能引脚备用功能选择寄存器(AFR)就可以了。在固件库中操作该寄存器的设置的PAD_AFConfig函数。 void PAD_AFConfig(PAD_Type Px, uint16_t GPIO_Pin, PAD_AF_TypeDef P_AF);
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
发表于2018-02-26 09:59:26
|
只看该作者
3#
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
发表于2018-02-26 10:04:58
|
只看该作者
4#
比如我要将 GPIOC_5 的工作模式设置成GPIO模式我们可以对照上面的表格来设置。 PAD_AFConfig(PAD_PC, GPIO_PIN_5, PAD_AF1); 3.2 硬件设计本章用到的硬件只有 RGB LED。其电路在 W7500 开发板上默认是已经连接好了的。LED R 接 PA3,LEDG接 PC5,LEDB接PA4。所以在硬件上不需要动任何东西,如图3.2.1所示: 图3.2.1 W7500EVB EGBLED原理图 3.3 软件设计在W7500EVB RGB LED工程里可,我们引入了 bsp_gpio.c 文件以及头文件bsp_gpio.h。 下面我们首先打开bsp_gpio.c 文件,代码如下: void LED_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; /* GPIO Configuration for red LED */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; // Connecting GPIO_Pin_8(LED(R)) GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; // Set to GPIO Mode to Output Port GPIO_Init(GPIOA, &GPIO_InitStructure); PAD_AFConfig(PAD_PA, GPIO_Pin_4, PAD_AF1); // PAD Config - LED used 2nd Function /* GPIO Configuration for green LED */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; // Connecting GPIO_Pin_9(LED(B)) GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; // Set to GPIO Mode to Output Port GPIO_Init(GPIOA, &GPIO_InitStructure); PAD_AFConfig(PAD_PA, GPIO_Pin_3, PAD_AF1); // PAD Config - LED used 2nd Function /* GPIO Configuration for blove LED */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; // Connecting GPIO_Pin_5(LED(G)) GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; // Set to GPIO Mode to Output Port GPIO_Init(GPIOC, &GPIO_InitStructure); PAD_AFConfig(PAD_PC, GPIO_Pin_5 , PAD_AF1); // PAD Config - LED used 2nd Function LEDR_H; LEDG_H; LEDB_H; } LEDR_H,LEDG_H和LEDB_H定义在bsp_gpio.h中: #define LEDR_H GPIO_SetBits(GPIOA, GPIO_Pin_4) #define LEDR_L GPIO_ResetBits(GPIOA, GPIO_Pin_4) #define LEDG_H GPIO_SetBits(GPIOC, GPIO_Pin_5) #define LEDG_L GPIO_ResetBits(GPIOC, GPIO_Pin_5) #define LEDB_H GPIO_SetBits(GPIOA, GPIO_Pin_3) #define LEDB_L GPIO_ResetBits(GPIOA, GPIO_Pin_3) 该代码里面中的 void LED_Configuration(void)函数就是用来配置 PA3、PA4和PC5 引脚作为输出模式。 在看看我们的main.c文件里的代码: int main() { SystemInit(); /* 系统内部时钟初始化 */ delay_init(); /* 系统滴答时钟配置*/ LED_Configuration(); /*---------------------------------------------------------------------- | 炜世科技—WIZnet W7500官方代理商,全程技术支持,价格绝对优势! | ----------------------------------------------------------------------*/ while(1) { LEDR_L; LEDG_H; LEDB_H; delay_ms(500); LEDR_H; LEDG_L; LEDB_H; delay_ms(500); LEDR_H; LEDG_H; LEDB_L; delay_ms(500); } } 3.4 下载验证程序成功下载到 W7500EVB 开发板上之后,我们可以看到RGB LED灯的红绿蓝交替闪烁,如图3.4.1所示: 图3.4.1 实验结果 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
发表于2018-02-26 15:29:35
|
只看该作者
5#
GOOD !
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
发表于2018-02-26 16:51:04
|
只看该作者
6#
对你有帮助就好。
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
发表于2018-02-27 09:39:18
|
只看该作者
7#
TCP/IP那块是需要怎么配置呢?有没有详细资料发一份邮箱2881982566@qq.com,谢谢!
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
发表于2018-02-27 09:49:07
|
只看该作者
8#
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
发表于2018-02-27 10:32:15
|
只看该作者
9#
非常不错,希望能尽快用到项目上,能否把资料发我邮箱,270013397@qq.com 谢谢!
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
发表于2018-02-27 17:13:01
|
只看该作者
10#
资料我们会接着连载,如果想要了解更多可以跟我们联系:0755-86568556 在我们这购买的话可以享受全程的技术支持。我们的价格绝对优势!! |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
发表于2018-07-19 11:22:30
|
只看该作者
11#
第三章 RGB LED试验W7500P最简单的外设莫过于IO口的高低电平控制了,本章将通过一个经典的跑马灯程序,带大家开W7500PEVB 之旅, 通过本章的学习, 将了解到W7500P的 IO 口作为输出使用的方法。 在本章中, 通过代码控制 W7500PEVB 开发板上的RGB LED: 红绿蓝灯交替闪烁。 3.1 W7500P IO 口简介本章将要实现的是控制 W7500PEVB 开发板上的RGB LED 实现一个跑马灯的效果, 该实验的关键在于如何控制 W7500P 的 IO 口输出。了解W7500P的 IO 口是如何输出的,就可以实现跑马灯了。通过这一章的学习, 将初步掌握W7500P 的IO 口基本使用。 SHAPE \* MERGEFORMAT
每个 IO 口可编程,都有各自的输出使能位和清除输出使能位,以及其它的复用功能。 下面我们来看一下GPIO的初始化,可以调用GPIO_Init函数来进行初始化。 void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct); GPIO_Init函数有两个参数, 第一个参数GPIOx是用来指定 GPIO,取值范围为 GPIOA~GPIOD。第二个参数GPIO_InitStruct是初始化参数结构体指针,结构体类型为 GPIO_InitTypeDef。下面来看看这个结构体的定义。
typedef struct { uint32_t GPIO_Pin; GPIOMode_TypeDef GPIO_Mode; GPIOPad_TypeDef GPIO_Pad; }GPIO_InitTypeDef; 这里我们通过初始化一个GPIO来讲解这个结构体成员变量的含义。 初始化GPIO的常用格式是:
GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_Init(GPIOC, &GPIO_InitStructure); PAD_AFConfig(PAD_PC, GPIO_Pin_5, PAD_AF1); 上面代码的意思是设置GPIOC的第5个IO口为输出模式。从上面初始化代码可以看出,结构体 GPIO_InitStructure 的第一个成员变量 GPIO_Pin 用来设置要初始化的IO 口; 第二个成员变量 GPIO_Mode 是用来设置对应 IO 口的输出输入模式,这些模式是上面讲解的3个模式,在 W7500x_gpio.h 中是通过一个枚举类型定义的。 typedef enum { GPIO_Mode_IN = 0x00, GPIO_Mode_OUT = 0x01, GPIO_Mode_AF = 0x02 }GPIOMode_TypeDef; 如果想知道某个IO口的电平状态,可以读取DATA寄存器的对应位就可以了。在固件库中操作DATA寄存器读取IO口数据,可以通过GPIO_ReadInputDataBit函数实现。
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
比如我要读 GPIOC_5 的电平状态,那么方法是:
GPIO_ReadInputDataBit(GPIOC, GPIO_PIN_5);
返回值是 1(Bit_SET)或者 0(Bit_RESET): 如果想要某个IO口输出高电平状态或低电平状态,可以设置GPIO字节屏蔽访问寄存器的对应位就可以了。在固件库中是通过GPIO_SetBits函数或者GPIO_ResetBits函数来操作GPIO字节屏蔽访问寄存器的。
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 如果我要将 GPIOC_5 的电平状态拉高,那么方法是:
GPIO_SetBits(GPIOC, GPIO_Pin_5);
如果我要将 GPIOC_5 的电平状态拉低,那么方法是:
GPIO_ResetBits(GPIOC, GPIO_Pin_5);
如果想要使用某个IO口的备用功能,只要设置功能引脚备用功能选择寄存器(AFR)就可以了。在固件库中操作该寄存器的是PAD_AFConfig函数。
void PAD_AFConfig(PAD_Type Px, uint16_t GPIO_Pin, PAD_AF_TypeDef P_AF);
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
发表于2018-07-19 11:24:11
|
只看该作者
12#
将 GPIOC_5 引脚的工作模式设置成GPIO模式可以对照上面的表格来设置。
3.2 硬件设计本实验用到的硬件资源有: 1) 指示灯LED 本章用到的硬件只有 RGB LED。其电路在 W7500 开发板上默认是已经连接好了的。LED R 接 PA5,LEDG接 PC0,LEDB接PC4。所以在硬件上不需要改动,如图3.2.1所示:
图3.2.1 W7500PEVB RGBLED原理图 3.3 软件设计打开W7500PEVB RGB LED工程,我们引入了 bsp_gpio.c 文件以及头文件bsp_gpio.h。 下面我们首先打开bsp_gpio.c 文件,代码如下:
LEDR_H,LEDG_H和LEDB_H定义在bsp_gpio.h中: #define LEDR_H GPIO_SetBits(GPIOC, GPIO_Pin_5) #define LEDR_L GPIO_ResetBits(GPIOC, GPIO_Pin_5) #define LEDG_H GPIO_SetBits(GPIOC, GPIO_Pin_0) #define LEDG_L GPIO_ResetBits(GPIOC, GPIO_Pin_0) #define LEDB_H GPIO_SetBits(GPIOC, GPIO_Pin_4) #define LEDB_L GPIO_ResetBits(GPIOC, GPIO_Pin_4) 该代码里面中的 void LED_Configuration(void)函数用来配置 PC5、PC0和PC4 引脚作为输出模式。 在看看我们的main.c文件里的代码: |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
发表于2018-07-19 11:24:41
|
只看该作者
13#
3.4 下载验证程序成功下载到 W7500PEVB 开发板上之后,可以看到RGB LED灯交替闪烁,如图3.4.1所示:
图3.4.1 实验结果 |
|