OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 39411|回复: 38

【正点原子探索者STM32F407开发板例程连载+教学】第60章 网络通信实验

[复制链接]

230

主题

1952

帖子

10

精华

论坛元老

Rank: 8Rank: 8

积分
4562
金钱
4562
注册时间
2010-12-14
在线时间
32 小时
发表于 2014-12-9 14:32:52 | 显示全部楼层 |阅读模式

第六十章 网络通信实验

 

[mw_shl_code=c,true]1.硬件平台:正点原子探索者STM32F407开发板 2.软件平台:MDK5.1 3.固件库版本:V1.4.0[/mw_shl_code]


本章,我们将向大家介绍探索者STM32F4开发板的网口及其使用。本章,我们将使用ALIENTEK探索者STM32F4开发板自带的网口和LWIP实现:TCP服务器、TCP客服端、UDP以及WEB服务器等四个功能。本章分为如下几个部分:

60.1 STM32F4以太网以及TCP/IP LWIP简介

60.2 硬件设计

60.3 软件设计

60.4 下载验证

 

60.1 STM32F4以太网以及TCP/IP LWIP简介

本章,我们需要用到STM32F4的以太网控制器和LWIP TCP/IP协议栈。接下来分别介绍这两个部分。

60.1.1 STM32F4以太网简介

STM32F407芯片自带以太网模块,该模块包括带专用DMA控制器的MAC 802.3(介质访问控制)控制器,支持介质独立接口 (MII) 和简化介质独立接口 (RMII),并自带了一个用于外部PHY通信的SMI接口,通过一组配置寄存器,用户可以为MAC控制器和DMA控制器选择所需模式和功能。

STM32F4自带以太网模块特点包括:

?  支持外部PHY接口,实现10M/100Mbit/s的数据传输速率

?  通过符合IEEE802.3MII/RMII接口与外部以太网PHY进行通信

?  支持全双工和半双工操作

?  可编程帧长度,支持高达16KB巨型帧

?  可编程帧间隔(40~96位时间,以8为步长)

?  支持多种灵活的地址过滤模式

?  通过SMIMDIO)接口配置和管理PHY设备

?  支持以太网时间戳(参见IEEE1588-2008),提供64位时间戳

?  提供接收和发送两组FIFO

?  支持DMA

STM32F4以太网功能框图如图60.1.1.1所示:


60.1.1.1 STM32F4以太网框图

从上图可以看出,STM32F4是必须外接PHY芯片,才可以完成以太网通信的,外部PHY芯片可以通过MII/RMII接口与STM32F4内部MAC连接,并且支持SMIMDIO&MDC)接口配置外部以太网PHY芯片。

接下来分别介绍SMI/MII/RMII接口和外部PHY芯片。

SMI接口,即站管理接口,该接口允许应用程序通过2条线:时钟(MDC)和数据线(MDIO)访问任意PHY 寄存器。该接口支持访问多达32PHY,应用程序可以从32PHY 中选择一个PHY,然后从任意PHY 包含的32个寄存器中选择一个寄存器,发送控制数据或接收状态信息。任意给定时间内只能对一个PHY 中的一个寄存器进行寻址。

MII接口,即介质独立接口,用于MAC层与PHY层进行数据传输。STM32F407通过MIIPHY层芯片的连接如图60.1.1.2所示。

60.1.1.2 MII接口信号

l  MII_TX_CLK:连续时钟信号。该信号提供进行TX 数据传输时的参考时序。标称频率为: 速率为10 Mbit/s 时为2.5 MHz;速率为100 Mbit/s 时为25 MHz

l  MII_RX_CLK:连续时钟信号。该信号提供进行RX 数据传输时的参考时序。标称频率为:速率为10 Mbit/s 时为2.5 MHz;速率为100 Mbit/s 时为25 MHz

l  MII_TX_EN:发送使能信号。

l  MII_TXD[3:0]:数据发送信号。该信号是4 个一组的数据信号,

l  MII_CRS:载波侦听信号。

l  MII_COL:冲突检测信号。

l  MII_RXD[3:0]:数据接收信号。该信号是4 个一组的数据信号

l  MII_RX_DV:接收数据有效信号。

l  MII_RX_ER:接收错误信号。该信号必须保持一个或多个周期(MII_RX_CLK),从而向 MAC 子层指示在帧的某处检测到错误。

RMII接口,即精简介质独立接口,该接口降低了在10/100 Mbit/s 下微控制器以太网外设与外部PHY间的引脚数。根据IEEE 802.3u 标准,MII 包括16个数据和控制信号的引脚。RMII 规范将引脚数减少为7个。

RMII 接口是 MAC PHY 之间的实例化对象。这有助于将MACMII转换为RMIIRMII具有以下特性:

1,支持10Mbit/s100Mbit/s的运行速率

2,参考时钟必须是50 MHz

3,相同的参考时钟必须从外部提供给MAC和外部以太网PHY

4,它提供了独立的2位宽(双位)的发送和接收数据路径

STM32F407通过RMII接口与PHY层芯片的连接如图60.1.1.3所示:

 

60.1.1.3 RMII接口信号

       从上图可以看出RMII相比MII,引脚数量精简了不少。注意,图中的REF_CLK信号,是RMII和外部PHY共用的50Mhz参考时钟,必须由外部提供,比如有源晶振,或者STM32F4MCO输出。不过有些PHY芯片可以自己产生50Mhz参考时钟,同时提供给STM32F4,这样也是可以的。

本章我们采用RMII接口和外部PHY芯片连接,实现网络通信功能,探索者STM32F4开发板使用的是LAN8720A作为PHY芯片。接下来,我们简单介绍一下LAN8720A这个芯片。

LAN8720A是低功耗的10/100M以太网PHY层芯片,I/O引脚电压符合IEEE802.3-2005标准,支持通过RMII接口与以太网MAC层通信,内置10-BASE-T/100BASE-TX全双工传输模块,支持10Mbps100Mbps

LAN8720A可以通过自协商的方式与目的主机最佳的连接方式(速度和双工模式),支持HP Auto-MDIX自动翻转功能,无需更换网线即可将连接更改为直连或交叉连接。LAN8720A的主要特点如下:

l  高性能的10/100M以太网传输模块

l  支持RMII接口以减少引脚数

l  支持全双工和半双工模式

l  两个状态LED输出

l  可以使用25M晶振以降低成本

l  支持自协商模式

l  支持HP Auto-MDIX自动翻转功能

l  支持SMI串行管理接口

l  支持MAC接口

LAN8720A功能框图如图60.1.1.4所示。

60.1.1.4 LAN8720A功能框图

       LAN8720A的应脚数是比较少的,因此,很多引脚具有多个功能。这里,我们介绍几个重要的设置。

       1PHY芯片地址设置

       LAN8720A可以通过PHYAD0引脚来配置,该引脚与RXER引脚复用,芯片内部自带下拉电阻,当硬复位结束后,LAN8720A会读取该引脚电平,作为器件的SMI地址,接下拉电阻时(浮空也可以,因为芯片内部自带了下拉电阻),设置SMI地址为0,当外接上拉电阻后,可以设置为1。本章我们采用的是该引脚浮空,即设置LAN8720地址为0

       2nINT/REFCLKO引脚功能配置

       nINT/REFCLKO引脚可以用作中断输出,或者参考时钟输出。通过LED2nINTSEL)引脚设置,LED2引脚的值在芯片复位后,被LAN8720A读取,当该引脚接上拉电阻(或浮空,内置上拉电阻),那么正常工作后,nINT/REFCLKO引脚将作为中断输出引脚(选中REF_CLK IN模式)。当该引脚接下拉电阻时,正常工作后,nINT/REFCLKO引脚将作为参考时钟输出(选中REF_CLK OUT模式)。

       REF_CLK IN模式,外部必须提供50Mhz参考时钟给LAN8720AXTAL1CLKIN)引脚。

       REF_CLK OUT模式,LAN8720A可以外接25Mhz石英晶振,通过内部倍频到50Mhz,然后通过REFCLKO引脚,输出50Mhz参考时钟给MAC控制器。这种方式,可以降低BOM成本。

本章,我们设置nINT/REFCLKO引脚为参考时钟输出(REF_CLK OUT模式),用于给STM32F4RMII提供50Mhz参考时钟。

       31.2V内部稳压器配置

       LAN8720A需要1.2V电压给VDDCR供电,不过芯片内部集成了1.2V稳压器,可以通过LED1(REGOFF)来配置是否使用内部稳压器,当不使用内部稳压器的时候,必须外部提供1.2V电压给VDDCR引脚。这里我们使用内部稳压器,所以我们在LED1接下拉电阻(浮空也行,内置了下拉电阻),以控制开启内部1.2V稳压器。

       最后,我们来看下LAN8720A同我们探索者STM32F4开发板的连接关系,如图60.1.1.5所示:

60.1.1.5 LAN8720ASTM32F407ZGT6连接原理图 

       从上图可以看出,LAN8720A总共通过10跟线同STM32F4连接,注意:MDIO同串口2TX信号有共用,所以串口2和以太网功能不能同时使用,使用时需要注意这个问题。

60.1.2 TCP/IP LWIP简介

1TCP/IP简介

TCP/IP中文名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。

TCP/IP协议不是TCPIP这两个协议的合称,而是指因特网整个TCP/IP协议族。从协议分层模型方面来讲,TCP/IP由四个层次组成:网络接口层、网络层、传输层、应用层。OSI是传统的开放式系统互连参考模型,该模型将TCP/IP分为七层: 物理层、数据链路层(网络接口层)、网络层(网络层)、传输层(传输层)、会话层、表示层和应用层(应用层)。TCP/IP模型与OSI模型对比如表60.1.2.1所示。

编号

OSI模型

TCP/IP模型

1

应用层

应用层

2

表示层

3

会话层

4

传输层

传输层

5

网络层

互联层

6

数据链路层

链路层

  7

物理层

60.1.2.1 TCP/IP模型与OSI模型对比

具体一点理解,本例程中的:PHY层芯片LAN8720A相当于物理层,STM32F407自带的MAC层相当于数据链路层,而LWIP提供的就是网络层、传输层的功能,应用层是需要用户自己根据自己想要的功能去实现的。

2LWIP简介

LWIP是瑞典计算机科学院(SICS)Adam Dunkels等开发的一个小型开源的TCP/IP协议栈,是TCP/IP的一种实现方式。LWIP是轻量级IP协议,有无操作系统的支持都可以运行,LWIP实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用,它只需十几KBRAM40K左右的ROM就可以运行,这使LWIP协议栈适合在低端的嵌入式系统中使用。 目前LWIP的最新版本是1.4.1。本教程采用的就是1.4.1版本的LWIP

关于LWIP的详细信息大家可以去http://savannah.nongnu.org/projects/lwip/这个网站去查阅,LWIP的主要特性如下:

ARP协议,以太网地址解析协议;

IP协议,包括IPv4IPv6,支持IP分片与重装,支持多网络接口下数据转发;

ICMP协议,用于网络调试与维护;

IGMP协议,用于网络组管理,可以实现多播数据的接收;

UDP协议,用户数据报协议;

TCP协议,支持TCP拥塞控制,RTT估计,快速恢复与重传等;

l  提供三种用户编程接口方式:raw/callback APIsequential APIBSD-style socket API

DNS,域名解析;

SNMP,简单网络管理协议;

DHCP,动态主机配置协议;

AUTOIPIP地址自动配置;

PPP,点对点协议,支持PPPoE

我们从LWIP官网上下载LWIP 1.4.1版本,打开后如图60.1.2.1所示。

60.1.2.1  LWIP 1.4.1源码内容

       打开从官网上下载下来的LWIP1.4.1其中包括docsrctest三个文件夹和5个其他文件。doc文件夹下包含了几个与协议栈使用相关的文本文档,doc文件夹里面有两个比较重要的文档:rawapi.txtsys_arch.txt

rawapi.txt告诉读者怎么使用raw/callback API进行编程,sys_arch.txt包含了移植说明,在移植的时候会用到。src文件夹是我们的重点,里面包含了LWIP的源码。testLWIP提供的一些测试程序,方便大家使用LWIP。打开src源码文件夹,如图60.1.2.2所示:

60.1.2.1  LWIP src文件夹内容

       src文件夹由4个文件夹组成:apicoreincludenetif四个文件夹。api文件夹里面是LWIPsequential API(Netconn)socket API两种接口函数的源码,要使用这两种API需要操作系统支持。core文件夹是LWIP内核源码,实现了各种协议支持,include文件夹里面是LWIP使用到的头文件,netif文件夹里面是与网络底层接口有关的文件。

 关于LWIP的移植,请参考:ALIENTEK STM32F4 LWIP使用教程.pdf(文档路径:光盘à6,软件资料àLWIP学习资料)第一章,该文档详细介绍了LWIPSTM32F4上面的移植。这里我们就不详细介绍了。

60.2 硬件设计

本节实验功能简介:开机后,程序初始化LWIP,包括:初始化LAN8720A、申请内存、开启DHCP服务、添加并打开网卡,然后等待DHCP获取IP成功,当DHCP获取成功后,将在LCD屏幕上显示DHCP得到的IP地址,如果DHCP获取失败,那么将使用静态IP(固定为:192.168.1.30),然后开启Web Server服务,并进入主循环,等待按键输入选择需要测试的功能:

KEY0按键,用于选择TCP Server测试功能。

KEY1按键,用于选择TCP Client测试功能

KEY2按键,用于选择UDP测试功能

TCP Server测试的时候,直接使用DHCP获取到的IP(DHCP失败,则使用静态IP)作为服务器地址,端口号固定为:8088。在电脑端,可以使用网络调试助手(TCP Client模式)连接开发板,连接成功后,屏幕显示连接上的Client的IP地址,此时便可以互相发送数据了。按KEY0发送数据给电脑,电脑端发送过来的数据将会显示在LCD屏幕上。按KEY_UP可以退出TCP Server测试。

TCP Client测试的时候,先通过KEY0/KEY2来设置远端IP地址(Server的IP),端口号固定为:8087。设置好之后,通过KEY_UP确认,随后,开发板会不断尝试连接到所设置的远端IP地址(端口:8087),此时我们需要在电脑端使用网络调试助手(TCP Server模式),设置端口为:8087,开启TCP Server服务,等待开发板连接。当连接成功后,测试方法同TCP Server测试的方法一样。

UDP测试的时候,同TCP Client测试几乎一模一样,先通过KEY0/KEY2设置远端IP地址(电脑端的IP),端口号固定为:8089,然后按KEY_UP确认。电脑端使用网络调试助手(UDP模式),设置端口为:8089,开启UDP服务。不过对于UDP通信,我们得先按开发板KEY0,发送一次数据给电脑,随后才可以电脑发送数据给开发板,实现数据互发。按KEY_UP可以退出UDP测试。

Web Server的测试相对简单,只需要在浏览器端输入开发板的IP地址(DHCP获取到的IP地址或者DHCP失败时使用的静态IP地址),即可登录一个Web界面,在Web界面,可以实现对DS1(LED1)的控制、蜂鸣器的控制、查看ADC1通道5的值、内部温度传感器温度值以及查看RTC时间和日期等。

DS0用于提示程序正在运行。

本例程所要用到的硬件资源如下:

1)  指示灯DS0 DS1

2)  四个按键(KEY0/KEY1/KEY2/KEY_UP

3)  串口

4)  TFTLCD模块

5)  ETHSTM32F4自带以太网功能)

6)  LAN8720A

这几个部分我们都已经详细介绍过了。本实验测试,需自备网线一根,路由器一个。

60.3 软件设计

本章,我们综合了《STM32F4 LWIP开发手册.pdf》这个文档里面的4LWIP基础例程:UDP实验、TCP客户端(TCP Client)实验、TCP服务器(TCP Server)实验和Web Server实验。这些实验测试代码在工程LWIPàlwip_app 文件夹下,如图60.3.1所示:

60.3.1 LWIP文件夹内容

       这里面总共4个文件夹:lwip_comm文件夹,存放了ALIENTEK提供的LWIP扩展支持代码,方便使用和配置LWIP,其他四个文件夹,则分别存放了TCP ClientTCP ServerUDPWeb Server测试demo程序。这里我们就不详细介绍这些内容了,详细的介绍,请参考:《STM32F4 LWIP开发手册.pdf》这个文档。本例程工程结构如图60.3.2所示:

60.3.2 例程工程结构体

       本章例程所实现的功能,全部由LWIP_APP组下的几个.c文件实现,这些文件的具体介绍在:ALIENTEK STM32F4 LWIP使用教程.pdf里面,请大家参考该文档学习。

       其他部分代码我们就不详细介绍了,最后,我们来看看main.c里面的代码,如下:

//加载UI

//mode:

//bit0:0,不加载;1,加载前半部分UI

//bit1:0,不加载;1,加载后半部分UI

void lwip_test_ui(u8 mode)

{

       u8 speed; u8 buf[30];

       POINT_COLOR=RED;

       if(mode&1<<0)

       {

              LCD_Fill(30,30,lcddev.width,110,WHITE); //清除显示

              LCD_ShowString(30,30,200,16,16,"Explorer STM32F4");

              LCD_ShowString(30,50,200,16,16,"Ethernet lwIP Test");

              LCD_ShowString(30,70,200,16,16,"ATOM@ALIENTEK");

              LCD_ShowString(30,90,200,16,16,"2014/8/15");     

       }

       if(mode&1<<1)

       {

              LCD_Fill(30,110,lcddev.width,lcddev.height,WHITE);       //清除显示

              LCD_ShowString(30,110,200,16,16,"lwIP Init Successed");

              if(lwipdev.dhcpstatus==2)sprintf((char*)buf,"DHCP IP:%d.%d.%d.%d",lwipdev.ip[0],

lwipdev.ip[1],lwipdev.ip[2],lwipdev.ip[3]);//IP地址

              else sprintf((char*)buf,"Static IP:%d.%d.%d.%d",lwipdev.ip[0],lwipdev.ip[1],

lwipdev.ip[2],lwipdev.ip[3]);//打印静态IP地址

              LCD_ShowString(30,130,210,16,16,buf);

              speed=LAN8720_Get_Speed();//得到网速

              if(speed&1<<1)LCD_ShowString(30,150,200,16,16,"Ethernet Speed:100M");

              else LCD_ShowString(30,150,200,16,16,"Ethernet Speed:10M");

              LCD_ShowString(30,170,200,16,16,"KEY0:TCP Server Test");

              LCD_ShowString(30,190,200,16,16,"KEY1:TCP Client Test");

              LCD_ShowString(30,210,200,16,16,"KEY2:UDP Test");

       }

}

int main(void)

{

       u8 t; u8 key;

       delay_init();            //延时初始化

       NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2

       uart_init(115200);       //串口波特率设置

       usmart_dev.init(84);             //初始化USMART

       LED_Init();                        //LED初始化

       KEY_Init();                              //按键初始化

       LCD_Init();                        //LCD初始化

       BEEP_Init();                       //蜂鸣器初始化

       RTC_Init();                        //RTC初始化

       Adc_Init();                         //ADC初始化

       TIM3_Int_Init(100-1,8400-1);//10khz的频率,计数10010ms

       my_mem_init(SRAMIN);     //初始化内部内存池

       my_mem_init(SRAMCCM);  //初始化CCM内存池

       POINT_COLOR=RED;        //红色字体

       lwip_test_ui(1);                    //加载前半部分UI

       //先初始化lwIP(包括LAN8720A初始化),此时必须插上网线,否则初始化会失败!!

       LCD_ShowString(30,110,200,16,16,"lwIP Initing...");

       while(lwip_comm_init()!=0)

       {

              LCD_ShowString(30,110,200,16,16,"lwIP Init failed!");

              delay_ms(1200);

              LCD_Fill(30,110,230,110+16,WHITE);//清除显示

              LCD_ShowString(30,110,200,16,16,"Retrying..."); 

       }

       LCD_ShowString(30,110,200,16,16,"lwIP Init Successed");

       //等待DHCP获取

      LCD_ShowString(30,130,200,16,16,"DHCP IP configing...");

       while((lwipdev.dhcpstatus!=2)&&(lwipdev.dhcpstatus!=0XFF))//等待DHCP成功/超时

       {

              lwip_periodic_handle();

       }

       lwip_test_ui(2);//加载后半部分UI

       httpd_init();    //HTTP初始化(默认开启websever)

       while(1)

       {

              key=KEY_Scan(0);

              switch(key)

              {

                     case KEY0_PRES://TCP Server模式

                            tcp_server_test();

                            lwip_test_ui(3);//重新加载UI

                            break;

                     case KEY1_PRES://TCP Client模式

                            tcp_client_test();

                            lwip_test_ui(3);//重新加载UI

                            break;

                     case KEY2_PRES://UDP模式

                            udp_demo_test();

                            lwip_test_ui(3);//重新加载UI

                            break;

              }

              lwip_periodic_handle();

              delay_ms(2);

              t++;

              if(t==100)LCD_ShowString(30,230,200,16,16,"Please choose a mode!");

              if(t==200)

              {

                     t=0;

                     LCD_Fill(30,230,230,230+16,WHITE);//清除显示

                     LED0=!LED0;

              }

       }

}

        这里,我们开启了定时器3,来给LWIP提供时钟,然后通过lwip_comm_init函数,初始化LWIP,该函数处理包括:初始化STM32F4的以太网外设、初始化LAN8720A、分配内存、使能DHCP、添加并打开网卡等操作。

这里特别注意:因为我们配置STM32F4的网卡使用自动协商功能(双工模式和连接速度),如果协商过程中遇到问题,则会进行多次重试,需要等待很久,而且如果协商失败,那么直接返回错误,导致LWIP初始化失败,因此一定要插上网线,然后LWIP才能初始化成功,否则肯定会初始化失败,而这个失败,不是硬件问题,是因为你没插网线的缘故!!!

LWIP初始化成功后,进入DHCP获取IP状态,当DHCP获取成功后,显示开发板获取到的IP地址,然后开启HTTP服务。此时可以在浏览器输入开发板IP地址,登录Web控制界面,进行Web Server测试。

在主循环里面,我们可以通过按键选择:TCP Server测试、TCP Client测试和UDP测试等测试项目,主循环还调用了lwip_periodic_handle函数,周期性处理LWIP事务。

软件设计部分就为大家介绍到这里。

60.4 下载验证

在开始测试之前,我们先用网线(需自备)将开发板和电脑连接起来。

对于有路由器的用户,直接用网线连接路由器,同时电脑也连接路由器,即可完成电脑与开发板的连接设置。

对于没有路由器的用户,则直接用网线连接电脑的网口,然后设置电脑的本地连接属性,如图60.4.1所示:

60.4.1 开发板与电脑直连时电脑本地连接属性设置

这里,我们设置IPV4的属性,设置IP地址为:192.168.1.100100是可以随意设置的,但是不能是301);子网掩码:255.255.255.0;网关:192.168.1.1DNS部分可以不用设置。

设置完后,点击确定,即可完成电脑端设置,这样开发板和电脑就可以通过互相通信了。

然后,在代码编译成功之后,我们通过下载代码到探索者STM32F4开发板上(这里我们以路由器连接方式介绍,下同,且假设DHCP获取IP成功),LCD显示如图60.4.2所示界面:

60.4.2 DHCP获取IP成功

此时屏幕提示选择测试模式,可以选择TCP ServerTCP ClientUDP三项测试。不过,我们先来看看网络连接是否正常。从60.4.2可以看到,我们开发板通过DHCP获取到的IP地址为:192.168.1.105,因此,我们在电脑上先来ping一下这个IP,看看能否ping通,以检查连接是否正常(Startà运行àCMD),如图60.4.3所示:

60.4.3 ping开发板IP地址

可以看到开发板所显示的IP地址,是可以ping通的,说明我们的开发板和电脑连接正常,可以开始后续测试了。

60.4.1 Web Server测试

这个测试不需要任何操作来开启,开发板在获取IP成功(也可以使用静态IP)后,即开启了Web Server功能。我们在浏览器输入:192.168.1.105(开发板显示的IP地址),即可进入一个Web界面,如图60.4.1.1所示:

60.4.1.1 Web Server测试网页

       该界面总共有5个子页面:主页、LED/BEEP控制、ADC/内部温度传感器、RTC实时时钟和联系我们等。登录Web时默认打开的是主页面,介绍了我们探索者STM32F4开发板的一些资源和特点和LWIP的一些简介。

       点击:LED/BEEP控制,进入该子页面,即可对开发板板载的DS0LED1)和蜂鸣器进行控制,如图60.4.1.2所示:

60.4.1.2 LED/BEEP控制页面

此时,选择ON,然后点击SEND按钮,即可点亮LED1或者打开蜂鸣器。同样,发送OFF即可关闭LED1或蜂鸣器。

       点击:ADC/内部温度传感器,进入该子页面,会显示ADC1通道5的值和STM32内部温度传感器所测得的温度,如图60.4.1.3所示:

60.4.1.3 ADC/内部温度传感器测试页面

ADC1_CH5是我们开发板多功能接口ADC的输入通道,默认连接在TPAD上,TPAD带有上拉电阻,所以这里显示3V多,大家可以将ADC接其他地方来测量电压。同时,该界面还显示了内部温度传感器采集到的温度值。该界面每个一秒钟刷新一次。

       点击:RTC实时时钟,进入该子页面,会显示STM32内部RTC的时间和日期,如图60.4.1.4所示:

60.4.1.4 RTC实时时钟测试页面

此界面显示了探索者STM32F4自带的RTC实时时钟的当前时间和日期等参数,每隔1秒钟刷新一次。

最后,点击联系我们,即可进入到ALIENTEK 官方店铺,这里就不再介绍了。

60.4.2 TCP Server测试

在提示界面,按KEY0即可进入TCP Server测试,此时,开发板作为TCP Server。此时,LCD屏幕上显示Server IP地址(就是开发板的IP地址),Server端口固定为:8088。如图60.4.2.1所示:

60.4.2.1 TCP Sever测试界面

图中显示了Server IP地址是192.168.1.105Server端口号是:8088。上位机配合我们测试,需要用到一个网络调试助手的软件,该软件在光盘à 6,软件资料à软件à网络调试助手à网络调试助手V3.8.exe

我们在电脑端打开网络调试助手,设置协议类型为:TCP Client,服务器IP地址为:192.168.1.105,服务器端口号为:8088,然后点击连接,即可连上开发板的TCP Sever,此时,开发板的液晶显示:Client IP:192.168.1.101(电脑的IP地址),如图60.4.2.1所示,而网络调试助手端则显示连接成功,如图60.4.2.2所示:

60.4.2.2 电脑端网络调试助手TCP Client测试界面

按开发板的KEY0按键,即可发送数据给电脑。同样,电脑端输入数据,也可以通过网络调试助手发送给开发板。如图60.4.2.1和图60.4.2.2所示。按KEY_UP按键,可以退出TCP Sever测试,返回选择界面。

60.4.3 TCP Client测试

在提示界面,按KEY1即可进入TCP Client测试,此时,先进入一个远端IP设置界面,也就是Client要去连接的Server端的IP地址。通过KEY0/KEY2可以设置IP地址,通过60.4.3.2节的测试,我们知道电脑的IP192.168.1.101,所以我们这里设置Client要连接的远端IP192.168.1.101,如图60.4.3.1所示:

60.4.3.1 远端IP地址设置

设置好之后,按KEY_UP,确认,进入TCP Client测试界面。开始的时候,屏幕显示Disconnected。然后我们在电脑端打开网络调试助手,设置协议类型为:TCP Server,本地IP地址为:192.168.1.101(电脑IP),本地端口号为:8087,然后点击连接,开启电脑端的TCP Server服务,如图60.4.3.2所示:

60.4.3.2 电脑端网络调试助手TCP Server测试界面

在电脑端开启Server后,稍等片刻,开发板的LCD即显示Connected,如图60.4.3.3所示:

60.4.3.3 TCP Client测试界面

在连接成功后,电脑和开发板即可互发数据,同样开发板还是按KEY0发送数据给电脑,测试结果如图60.4.3.2和图60.4.3.3所示。按KEY_UP按键,可以退出TCP Client测试,返回选择界面。

60.4.4 UDP测试

在提示界面,按KEY2即可进入UDP测试,UDP测试同TCP Client测试一样,要先设置远端IP地址,设置好之后,进入UDP测试界面,如图60.4.4.1所示:

60.4.4.1 UDP测试界面

可以看到,UDP测试时我们要连接的端口号为:8089,所以网络调试助手需要设置端口号为:8089。另外,UDP不是基于连接的传输协议,所以,这里直接就显示Connected了。在电脑端打开网络调试助手,设置协议类型为:UDP,本地IP地址为:192.168.1.101(电脑IP),本地端口号为:8089,然后点击连接,开启电脑端的UDP服务,如图60.4.4.2所示:

60.4.4.2 电脑端网络调试助手UDP测试界面

       然后,我们先按开发板的KEY0,发送一次数据给电脑端网络调试助手,这样电脑端网络调试助手便会识别出开发板的IP地址,然后就可以互相发送数据了。按KEY_UP按键,可以退出UDP测试,返回选择界面。 

 

实验详细手册和源码下载地址:http://www.openedv.com/posts/list/41586.htm 

正点原子探索者STM32F407开发板购买地址http://item.taobao.com/item.htm?id=41855882779

  


第六十章 网络通信实验-STM32F4开发指南-正点原子探索者STM32开发板.pdf

2.26 MB, 下载次数: 7436

实验55 网络通信实验.zip

2.37 MB, 下载次数: 5072

我是开源电子网?网站管理员,对网站有任何问题,请与我联系!QQ:389063473Email:389063473@qq.com
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
146
金钱
146
注册时间
2014-1-8
在线时间
40 小时
发表于 2014-12-11 10:56:38 | 显示全部楼层
顶起来    正要学习这个
回复 支持 反对

使用道具 举报

27

主题

98

帖子

0

精华

高级会员

Rank: 4

积分
790
金钱
790
注册时间
2014-7-7
在线时间
155 小时
发表于 2014-12-11 21:22:12 | 显示全部楼层
mdk5.11编译通不过
回复 支持 反对

使用道具 举报

558

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
164897
金钱
164897
注册时间
2010-12-1
在线时间
2100 小时
发表于 2014-12-11 22:52:29 | 显示全部楼层
回复【3楼】STM32_2022:
---------------------------------
报什么错?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

32

主题

153

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
453
金钱
453
注册时间
2014-11-5
在线时间
0 小时
发表于 2014-12-26 03:19:26 | 显示全部楼层
原子哥,能不能在其他电脑或者手机上登陆网页远程控制开发板呢?
酱油团队--
回复 支持 反对

使用道具 举报

558

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
164897
金钱
164897
注册时间
2010-12-1
在线时间
2100 小时
发表于 2014-12-26 22:36:18 | 显示全部楼层
回复【5楼】xiaolong12:
---------------------------------
可以啊
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

32

主题

153

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
453
金钱
453
注册时间
2014-11-5
在线时间
0 小时
发表于 2014-12-26 22:58:07 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
原子哥,我现在手里有里两块探索者F4和一块战舰开发板,两块51开发板。我想用51采集环境的温湿度信息通过2.4G发送给F4,战舰板接收F4的信息用来控制家里的各种灯和家电。同时F4也采集摄像头的信息。然后通过F4和路由器通讯,把采集的温度信息和摄像头录制的视频,传到网页。再通过其他电脑连接互联网,登陆网页查看视频和家里的温度信息。你觉得能不能实现?我想用来做毕业设计,因为买了不少的板子和模块。。想做个给力点的,希望获得个奖啥的
酱油团队--
回复 支持 反对

使用道具 举报

558

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
164897
金钱
164897
注册时间
2010-12-1
在线时间
2100 小时
发表于 2014-12-26 23:02:40 | 显示全部楼层
回复【7楼】xiaolong12:
---------------------------------
你这个好复杂啊。
建议别搞这么多单片机组合。精简下,一块,最多2快单片机。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

32

主题

153

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
453
金钱
453
注册时间
2014-11-5
在线时间
0 小时
发表于 2014-12-27 00:58:01 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
能不能把视频传到网页上呢?做防盗监控,探索者F4有以太网接口
酱油团队--
回复 支持 反对

使用道具 举报

32

主题

153

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
453
金钱
453
注册时间
2014-11-5
在线时间
0 小时
发表于 2014-12-27 09:02:09 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
原子哥,用CAN总线传输视频行不行呢?有线的应该比无线稳定
酱油团队--
回复 支持 反对

使用道具 举报

558

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
164897
金钱
164897
注册时间
2010-12-1
在线时间
2100 小时
发表于 2014-12-27 10:37:31 | 显示全部楼层
回复【10楼】xiaolong12:
---------------------------------
不行
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2015-1-5
在线时间
0 小时
发表于 2015-1-6 15:57:17 | 显示全部楼层

看到这硬件的连接,我有个问题,我想使用100脚的407VGT6,因为没有图中的PG口,也就是RMII_TXD0 和RMII_TXD1,那该如何接?目前对这个还不是很了解

-------------------------------------------------------------------------------------------------------

错了~~PB12 13可接~~

回复 支持 反对

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2015-4-2
在线时间
0 小时
发表于 2015-4-2 17:36:05 | 显示全部楼层
回复【11楼】正点原子:
---------------------------------
请问什么叫做移植LwIP呢?我用的STM32F107单片机中官方给的固件是移植好的么?如果不清楚怎么判断呢
回复 支持 反对

使用道具 举报

558

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
164897
金钱
164897
注册时间
2010-12-1
在线时间
2100 小时
发表于 2015-4-2 22:37:03 | 显示全部楼层
回复【13楼】sunnyvick:
---------------------------------
就是将lwip加到你的工程里面,用于驱动网卡。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2015-4-2
在线时间
0 小时
发表于 2015-4-8 11:17:58 | 显示全部楼层
回复【14楼】正点原子:
---------------------------------
那我想问一下,如果LwIP已经移植好了,socket编程中的函数可以直接套用么?
回复 支持 反对

使用道具 举报

558

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
164897
金钱
164897
注册时间
2010-12-1
在线时间
2100 小时
发表于 2015-4-8 23:18:28 | 显示全部楼层
回复【15楼】sunnyvick:
---------------------------------
这个我不太熟悉了,你得看看lwip的资料,应该是可以用
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2015-4-2
在线时间
0 小时
发表于 2015-4-9 09:26:13 | 显示全部楼层
回复【16楼】正点原子:
---------------------------------
好的 谢谢!
回复 支持 反对

使用道具 举报

6

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
金钱
291
注册时间
2014-8-12
在线时间
32 小时
发表于 2015-5-11 18:38:19 | 显示全部楼层
原子哥,这个网页是怎么做的,我想自己搞一个到探索者板上
回复 支持 反对

使用道具 举报

558

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
164897
金钱
164897
注册时间
2010-12-1
在线时间
2100 小时
发表于 2015-5-12 00:05:25 | 显示全部楼层
回复【18楼】heitu103:
---------------------------------
用网页开发软件写的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2015-5-13
在线时间
7 小时
发表于 2015-5-20 16:26:58 | 显示全部楼层
您好,我想问个问题,为什么网口中断中使用while判断接收的数据包,这样不会导致其他中断卡住么
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2015-7-15
在线时间
0 小时
发表于 2015-7-16 10:52:27 | 显示全部楼层
想问一下 那个加载UI是什么东西? 没弄过这一块 为什么程序里有加载UI
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2015-9-8
在线时间
0 小时
发表于 2015-9-8 17:11:59 | 显示全部楼层
我想请问下,哪段程序给REFCLKO引脚设置了时钟,怎么设置的,我是新手,没看出来。
回复 支持 反对

使用道具 举报

558

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
164897
金钱
164897
注册时间
2010-12-1
在线时间
2100 小时
发表于 2015-9-8 22:58:00 | 显示全部楼层
回复【22楼】daydayup_tao:
---------------------------------
这是硬件控制的
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2019-8-8
在线时间
27 小时
发表于 2015-9-9 15:38:25 | 显示全部楼层
原子哥,请教原理图上LAN8720有引脚(25)GND,但是LAN8720的封装是QFN24,GND在哪里?
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2015-4-1
在线时间
7 小时
发表于 2015-9-16 19:31:07 | 显示全部楼层
原子个,为什么我的 TCP Server测试时候出现网络调试助手说出现未知错误,就是连接不上
回复 支持 反对

使用道具 举报

7

主题

26

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
232
金钱
232
注册时间
2013-7-10
在线时间
3 小时
发表于 2015-10-2 00:56:23 | 显示全部楼层
原子哥好,请问MDIO引脚问什么要串联一个510R的电阻?我看了LAN8720A的官方参考方案【EVB8720 Evaluation Board Schematic.pdf】上面没有串联那个电阻。
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2015-8-28
在线时间
12 小时
发表于 2016-4-14 10:12:10 | 显示全部楼层
原子哥帅气
回复 支持 反对

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2016-4-7
在线时间
8 小时
发表于 2016-5-28 19:24:43 | 显示全部楼层
原子哥 我这个接上网线以后灯都在亮,我设置的IP为192.168.1.100 但是DHCP IP为192.168.1.30  那里出问题了吗
回复 支持 反对

使用道具 举报

558

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
164897
金钱
164897
注册时间
2010-12-1
在线时间
2100 小时
发表于 2016-5-28 20:06:56 | 显示全部楼层
深夏酱 发表于 2016-5-28 19:24
原子哥 我这个接上网线以后灯都在亮,我设置的IP为192.168.1.100 但是DHCP IP为192.168.1.30  那里出问题了 ...

你全文搜索,估计你改错地方了
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

21

主题

127

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
322
金钱
322
注册时间
2015-6-23
在线时间
66 小时
发表于 2016-5-28 22:24:52 | 显示全部楼层
非常好。。。
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2016-6-30
在线时间
4 小时
发表于 2016-6-30 10:25:36 | 显示全部楼层
原子哥  请问 如果我把25M的无源晶振换成  STM32 PA8 MCO输出25M时钟 需要修改程序哪里   移植过去发现lan8720a初始化不过  灯都亮   我用别的驱动是可以得 硬件没有问题
回复 支持 反对

使用道具 举报

3

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2016-11-22
在线时间
25 小时
发表于 2016-12-6 11:27:13 | 显示全部楼层
原子哥   网口这块可以不用外部SRAM不?用内部的
回复 支持 反对

使用道具 举报

8

主题

23

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
216
金钱
216
注册时间
2016-1-6
在线时间
87 小时
发表于 2016-12-21 15:29:16 | 显示全部楼层
板子用client端,电脑用server端,当板子给电脑发送数据的过程中电脑服务端断开,此时就无法重新连接了,这个该怎么解决?
回复 支持 反对

使用道具 举报

9

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2017-1-6
在线时间
32 小时
发表于 2017-5-24 14:34:22 | 显示全部楼层
原子哥,这个有没有视频啊,能发个视频地址吗,
回复 支持 反对

使用道具 举报

13

主题

145

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
469
金钱
469
注册时间
2015-5-14
在线时间
65 小时
发表于 2017-6-29 10:48:57 | 显示全部楼层
qhd27 发表于 2015-9-9 15:38
原子哥,请教原理图上LAN8720有引脚(25)GND,但是LAN8720的封装是QFN24,GND在哪里?

芯片下面还有一个焊盘的、、
回复 支持 反对

使用道具 举报

13

主题

145

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
469
金钱
469
注册时间
2015-5-14
在线时间
65 小时
发表于 2017-6-29 20:54:11 | 显示全部楼层
额,,,,这个例程下载到F4的开发板上始终无法链接到PC端的服务器,IP地址等网络参数已经修改好了,但是就是连接不上;LAN8720选择服务器模式,PC端也连不上,ping不通,也不知道事怎么回事?请原子大神解答、、、、
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2017-3-9
在线时间
7 小时
发表于 2017-8-3 17:58:24 | 显示全部楼层
有没有视频教程
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2018-1-30
在线时间
3 小时
发表于 2018-9-3 19:43:06 | 显示全部楼层
本帖最后由 yanhao 于 2018-9-3 19:54 编辑

TCP Client测试连接不上,如下图1:

连不上

连不上



网络调试助手设置,如下图2:

TIM截图20180903193958.png
还有就是这个问题,如下图:

TIM截图20180903195350.png

这是为什么,请帮助啊?





回复 支持 反对

使用道具 举报

12

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
231
金钱
231
注册时间
2018-6-15
在线时间
33 小时
发表于 2018-10-15 15:43:45 | 显示全部楼层
有没有视频
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-6-9 18:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表