野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6703|回复: 1

M0+MAC+TCP/IP 以太网单芯片方案 W7500EVB用户手册连载(16)--网络篇

[复制链接]
发表于 2018-3-15 17:52:00 | 显示全部楼层 |阅读模式
W7500(W7500P)芯片简介:
W7500 芯片为工业级以太网单芯片解决方案, 集成 ARM Cortex-M0,128KB Flash 及全硬件TCP/IP 核(和W5500、W5100内核一致),特别适用于物联网领域。 使用 W7500EVB, 让您轻松完成原型开发。

全硬件TCP/IP核的最大优点是他在执行联网操作时不需要占用MCU的运行资源,大大增加了MCU的工作效率。
例程讲解部分对常用协议的例程进行讲解说明。后期更新的例程,手册也会同步更新版本补足。如有任何疑惑,欢迎与炜世科技联系。

本章讲解的例程为Network install,Network install例程实现功能为:初始化配置W7500各基本功能,完成W7500EVB基本网络参数初始化配置,最终使W7500EVB成功接入网络。

想了解更多关于WIZnet W7500更多信息,或者有技术问题请联系我们:gustin@wisioe.com
深圳炜世科技—WIZnet官方代理商,全程技术支持,价格绝对优势!
电话:0755-86568556
邮箱:support@wisioe.com
回复

使用道具 举报

 楼主| 发表于 2018-3-15 17:52:56 | 显示全部楼层
网络篇
       例程讲解部分对常用协议的例程进行讲解说明。后期更新的例程,手册也会同步更新版本补足。如有任何疑惑,欢迎与炜世科技联系。
       例程使用前,我们需要了解网络的分层结构,这样会更加方便了解例程代码。
       为了使网络应用更为普及,ISO(国际标准化组织)推出了OSI参考模型。将网络划分为七层结构,其分别为:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层;具体信息如表1所示。
OSI参考模型
各层的解释
应用层
为应用程序提供服务
表示层
数据格式转化、数据加密
会话层
建立、管理和维护会话
传输层
建立、管理和维护都端的连接
网络层
IP选址及路由选择
数据链路层
途观介质问和链路管理
物理层
物理介质传达电子信号
表1:OSI参考模型
       TCP/IP协议中则将网络划分为五层结构,其分别为:物理层、数据链路层、网络层、传输层、应用层;其中应用层将OSI参考模型中的会话层、表示层、应用层都整合在内如表2所示。
TCP/IP协议五层结构
应用层
传输层
数据链路层
物理层
表2:TCP/IP协议五层结构
       而W7500芯片内部,将TCP、UDP协议通过逻辑门电路实现,在硬件上完成了传输层功能,应用层则由MCU负责。使得用户接入网络更为便捷。
第十七章 Network install17.1  Network install例程概述
       Network install例程实现功能为:初始化配置W7500各基本功能,完成W7500EVB基本网络参数初始化配置,最终使W7500EVB成功接入网络。
配置的主要参数介绍:
1.     IP地址
       IP是英文Internet Protocol的缩写,意思是“网络之间互连的协议”,也就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通。正是因为有了IP协议,因特网才得以迅速发展成为世界上最大的、开放的计算机通信网络。因此,IP协议也可以叫做“因特网协议”。
    Internet依靠TCP/IP协议,在全球范围内实现不同硬件结构、不同操作系统、不同网络系统的互联。在Internet上,每一个节点都依靠唯一的IP地址互相区分和相互联系。IP地址是一个32位二进制数的地址, 由4个8位字段组成,每个字段之间用点号隔开,用于标识TCP/IP宿主机。
       每个IP地址都包含两部分:网络ID和主机ID。网络ID标识在同一个物理网络上的所有宿主机,主机ID 标识该物理网络上的每一个宿主机,于是整个Internet上的每个计算机都依靠各自唯一的IP地址来标识。
       IP地址构成了整个Internet的基础,它是如此重要,每一台联网的计算机无权自行设定IP地址,有一个统一的机构—IANA负责对申请的组织分配唯一的网络ID,而该组织可以对自己的网络中的每一个主机分配一个唯一的主机ID。
2.     子网掩码
子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。
       子网掩码是一个32位地址,用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。
3.     网关
网关(Gateway)又称网间连接器、协议转换器。网关在网络层以上实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关既可以用于广域网互连,也可以用于局域网互连。 网关是一种充当转换重任的计算机系统或设备。使用在不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。与网桥只是简单地传达信息不同,网关对收到的信息要重新打包,以适应目的系统的需求。
4.     MAC地址
MAC(Media Access Control或者Medium Access Control)地址,意译为媒体访问控制,或称为物理地址、硬件地址,用来定义网络设备的位置。在OSI模型中,第三层网络层负责 IP地址,第二层数据链路层则负责 MAC地址。
因此一个主机会有一个全球唯一的MAC地址。
  1. 1.      #include <stdio.h>
  2. 2.      #include "W7500x.h"
  3. 3.      #include "ip_config.h"
  4. 4.      #include "time_delay.h"
  5. 5.      #include "bsp_uart.h"
  6. 6.     
  7. 7.      int main()
  8. 8.      {
  9. 9.        SystemInit();                       /* 系统内部时钟初始化 */
  10. 10.       S_UART_Init(115200);             /* 初始化串口2波特率为115200 */
  11. 11.       delay_init();                     /* 系统滴答时钟配置 */
  12. 12.       phy_init();                 /* PHY初始化设置 */
  13. 13.       set_w7500_ip();
  14. 14.       printf(" 网络已完成初始化!\r\n");
  15. 15.       printf(" 在Dos命令行中输入cmd之后,输入ping %d.%d.%d.%d\r\n",ConfigMsg.lip[0],ConfigMsg.lip[1],ConfigMsg.lip[2],ConfigMsg.lip[3]);
  16. 16.     
  17. 17.       while(1)
  18. 18.       {
  19. 19.        
  20. 20.       }
  21. 21.   }
复制代码

       此段代码为主函数部分。
       1~5行是基本的头文件引用。7~21 行为主函数部分。其中9、10行函数是单片机的初始化,9行函数初始化滴答定时器,10行函数初始化串口通信(波特率为115200),
       12行函数是PHY初始化和检查W7500EVB物理层是否连接,13行函数配置W7500EVB的MAC地址、IP地址、网关、子网掩码、8个socket的收发缓存。
       下面着重讲解set_w7500_ip();函数。
  1. 1.      void set_w7500_ip(void)
  2. 2.      {
  3. 3.          /*将IP配置信息写入W7500相应寄存器*/
  4. 4.          setSHAR(mac);
  5. 5.          setSIPR(lip);
  6. 6.          setGAR(gw);
  7. 7.          setSUBR(sub);
  8. 8.          /* Set Network Configuration */
  9. 9.          wizchip_init(tx_size, rx_size);
  10. 10.       getSHAR(mac);
  11. 11.       printf(" MAC ADDRESS : %.2X:%.2X:%.2X:%.2X:%.2X:%.2X\r\n",mac[0],mac[1],mac[2],mac[3],mac[4],mac[5]);
  12. 12.       getSIPR(lip);
  13. 13.       printf("IP ADDRESS : %d.%d.%d.%d\r\n",ConfigMsg.lip[0] = lip[0],ConfigMsg.lip[1] = lip[1],ConfigMsg.lip[2] = lip[2],ConfigMsg.lip[3] = lip[3]);
  14. 14.       getGAR(gw);
  15. 15.       printf("GW ADDRESS : %d.%d.%d.%d\r\n",gw[0],gw[1],gw[2],gw[3]);
  16. 16.       getSUBR(sub);
  17. 17.       printf("SN MASK: %d.%d.%d.%d\r\n",sub[0],sub[1],sub[2],sub[3]);
  18. 18.   }
复制代码

       4~7行是将IP地址、子网掩码、网关等信息写入到W7500EVB对应的寄存器中,10~17行则并且读取相应的寄存器打印串口发送出来的IP信息,判断是否正确。
       至此,Network install例程代码解析就结束了。将Network install例程编译烧录后打印串口信息结果如图17.1.1。
1.JPG
图17.1.1 Network install例程打印结果
       打印串口信息表明网络已完成初始化,我们尝试PC机能否Ping通W7500EVB。结果如图17.1.2,成功Ping通W7500EVB,至此W7500EVB网络参数初始化配置成功,已与PC机接入同一网络中。
2.JPG
图17.1.2 Ping结果

回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-1 14:56 , Processed in 0.056152 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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