第一章 W55MH32 网络初始化示例

描述

单芯片解决方案,开启全新体验——W55MH32 高性能以太网单片机

W55MH32是WIZnet重磅推出的高性能以太网单片机,它为用户带来前所未有的集成化体验。这颗芯片将强大的组件集于一身,具体来说,一颗W55MH32内置高性能Arm® Cortex-M3核心,其主频最高可达216MHz;配备1024KB FLASH与96KB SRAM,满足存储与数据处理需求;集成TOE引擎,包含WIZnet全硬件TCP/IP协议栈、内置MAC以及PHY,拥有独立的32KB以太网收发缓存,可供8个独立硬件socket使用。如此配置,真正实现了All-in-One解决方案,为开发者提供极大便利。

在封装规格上,W55MH32 提供了两种选择:QFN100和QFN68。

W55MH32L采用QFN100封装版本,尺寸为12x12mm,其资源丰富,专为各种复杂工控场景设计。它拥有66个GPIO、3个ADC、12通道DMA、17个定时器、2个I2C、5个串口、2个SPI接口(其中1个带I2S接口复用)、1个CAN、1个USB2.0以及1个SDIO接口。如此丰富的外设资源,能够轻松应对工业控制中多样化的连接需求,无论是与各类传感器、执行器的通信,还是对复杂工业协议的支持,都能游刃有余,成为复杂工控领域的理想选择。同系列还有QFN68封装的W55MH32Q版本,该版本体积更小,仅为8x8mm,成本低,适合集成度高的网关模组等场景,软件使用方法一致。更多信息和资料请进入http://www.w5500.com/网站或者私信获取。

此外,本W55MH32支持硬件加密算法单元,WIZnet还推出TOE+SSL应用,涵盖TCP SSL、HTTP SSL以及 MQTT SSL等,为网络通信安全再添保障。

为助力开发者快速上手与深入开发,基于W55MH32L这颗芯片,WIZnet精心打造了配套开发板。开发板集成WIZ-Link芯片,借助一根USB C口数据线,就能轻松实现调试、下载以及串口打印日志等功能。开发板将所有外设全部引出,拓展功能也大幅提升,便于开发者全面评估芯片性能。

若您想获取芯片和开发板的更多详细信息,包括产品特性、技术参数以及价格等,欢迎访问官方网页:http://www.w5500.com/,我们期待与您共同探索W55MH32的无限可能。

第一章 W55MH32 网络初始化示例

W55MH32 芯片展现出卓越的性能优势。其内核选用 32 位的 Arm® Cortex®-M3 Core,运行主频能够达到令人瞩目的 216MHz,这为高效的数据处理提供了坚实保障。芯片配备了 1024KB 的 FLASH 以及 96KB 的 SRAM,大容量的存储配置足以满足复杂程序和数据的存储需求。同时,它对外设的支持能力强大,最高可支持 61 个 GPIO,极大地拓展了其应用的多样性和灵活性。

尤为值得一提的是,W55MH32 芯片搭载了 WIZnet 的 TCP/IP 卸载引擎 (TOE),该引擎整合了全硬件 TCP/IP 协议栈、MAC 以及 PHY。这种高度集成化的设计使得仅需这一颗芯片,就能轻松实现嵌入式以太网应用,显著降低了开发的复杂性和成本,为嵌入式以太网的应用开发带来了极大的便利与高效性,是嵌入式以太网项目的首选芯片。

本篇文章我们将详细介绍如何在W55MH32芯片上面使用TOE功能,初始TOE引擎并进行网络初始化配置,开启以太网章节教程。

关于TOE的寄存器信息请参考“W55MH32 参考手册“的第9章”TCP/IP 卸载引擎(TOE)“。

1 TCP/IP卸载引擎(TOE)简介

TCP/IP 卸载引擎(TOE)是一个嵌入式全硬件 TCP/IP 以太网控制器,它可以提供更简洁的嵌入式网络接入方案。10/100M 以太网数据链路层(MAC)及物理层(PHY),使得用户使用单芯片就能够在他们的应用中拓展网络连接。

久经市场考验的 WIZnet 全硬件 TCP/IP 协议栈支持 TCP, UDP, IPv4, ICMP,ARP,IGMP 以及 PPPoE 协议。 内嵌 32K 字节片上缓存以供以太网包处理。使用 TCP/IP 卸载引擎(TOE),只需要一些简单的 Socket 编程就能实现以太网应用。这将会比其他嵌入式以太网方案更加快捷、简便。用户可以同时使用 8 个硬件 Socket 独立通讯。为了减少系统能耗, 提供了网络唤醒模式(WOL)及掉电模式供客户选择使用。

2 网络地址信息简介

网络地址信息是计算机网络中用于标识和定位设备、主机、网络等资源的数字标识符,在网络通信中起着至关重要的作用,它能帮助数据包在不同的网络节点间传递并到达目标设备。网络地址通常由IP地址子网掩码网关地址及DNS地址等组成,在不同层级上起着不同的作用。

注意:本文及后续文章的IP地址皆为IPv4版本。

IP地址:IP地址是计算机网络中用于唯一标识设备的地址。每台连接到网络上的设备都有一个IP地址,用于在网络上进行通信。通常以四个点分十进制数表示,每个数值的范围为0-255,例如:192.168.1.1。

子网掩码:子网掩码用于将一个IP地址划分为网络部分和主机部分。子网掩码的1对应的IP地址部分为网络地址,0对应的IP地址为主机地址,例如一个设备的IP地址为192.168.1.100,子网掩码为255.255.255.0,使用IP地址和子网掩码做与运算(AND运算)得出192.168.1.0,则说明该设备属于192.168.1.0网段设备,如果他想与192.168.2.0网段的设备进行通讯,则需要将数据交给网关进行处理。

网关地址:网关地址是当设备需要访问不同网络时,数据包首先经过的设备的IP地址。这个设备通常是网络边缘的路由器或防火墙,帮助本地设备与外部网络(如互联网)通信。

DNS地址:DNS地址是域名系统的IP地址,DNS是用于将易于记忆的域名转换为计算机能够理解的IP地址。例如,当您在浏览器中键入www.example.com时,DNS服务器将把www.example.com这个域名解析为相应的IP地址(可能是192.168.1.1或其他)。一般我们的DNS地址设置为公共DNS服务器地址(例如中国电信提供的114.114.114.114),也可以设置为私有DNS服务器地址(例如在您自己的网络中运行的服务器)。

除此之外,还有MAC地址,即硬件地址,也叫物理地址。

MAC地址:MAC地址是网络接口卡在数据链路层(OSI模型第二层)使用的唯一标识符。每个网络设备都应该被分配有一个唯一的MAC地址,用于在局域网中表示设备。它的长度为6字节,通常以16进制格式表示。前三个字节标识了设备制造商,例如WIZnet的设备的MAC地址前三个字节为00 08 DC,后三个字节表示该厂商的不同设备。需要注意的是,MAC地址的首字节必须为偶数,奇数则为组播地址。

注意:当IP地址冲突和MAC地址冲突时,都会导致网络无法通信。

3 实现过程

接下来,我们在W55MH32上实现网络初始化的功能。

注意:测试实例需要PC端和W55MH32处于同一网段。

步骤一:定义网络地址信息,并设置DHCP模式为静态地址模式

 

/* network information */
wiz_NetInfo default_net_info = {
    .mac  = {0x00, 0x08, 0xdc, 0x12, 0x22, 0x12},
    .ip   = {192, 168, 1, 30},
    .gw   = {192, 168, 1, 1},
    .sn   = {255, 255, 255, 0},
    .dns  = {8, 8, 8, 8},
    .dhcp = NETINFO_STATIC
};

 

步骤二:初始化硬件

 

/* hardware initialization */
rcc_clk_config();
delay_init();
console_usart_init(115200);
tim3_init();

 

步骤三:初始化TOE引擎并检测PHY状态

 

1.     /* wiztoe init */
2.     wiz_toe_init();
3.  
4.     wiz_phy_link_check();

 

wiz_phy_link_check函数主要靠读取PHY寄存器来检测PHY连接状态,函数内容如下:

 

 /**
* @brief Ethernet Link Detection
*/
void wiz_phy_link_check(void)
{
   uint8_t phy_link_status;
   do
   {
       delay_ms(1000);
       ctlwizchip(CW_GET_PHYLINK, (void *)&phy_link_status);
       if (phy_link_status == PHY_LINK_ON)
       {
           printf("PHY linkrn");
           wiz_print_phy_info();
       }
       else
       {
           printf("PHY no linkrn");
       }
   } while (phy_link_status == PHY_LINK_OFF);
}

 

步骤四:设置网络地址信息

 

 network_init(ethernet_buf, &default_net_info);

 

network_init函数的作用则是将步骤1定义的网络地址信息设置到TOE引擎中。

如果DHCP模式为NETINFO_DHCP,则执行DHCP进程去更新网络地址信息为DHCP获取的网络地址信息。如果是NETINFO_STATIC模式则直接设置静态网络地址信息,并打印设置的网络地址信息。

函数定义如下:

 

/**
* @brief   set network information
*
* First determine whether to use DHCP. If DHCP is used, first obtain the Internet Protocol Address through DHCP.
* When DHCP fails, use static IP to configure network information. If static IP is used, configure network information directly
*
* @param   sn: socketid
* @param   ethernet_buff:
* @param   net_info: network information struct
* @return  none
*/
void network_init(uint8_t *ethernet_buff, wiz_NetInfo *conf_info)
{
   int ret;
   wizchip_setnetinfo(conf_info); // Configuring Network Information
   if (conf_info- >dhcp == NETINFO_DHCP)
   {
       ret = wiz_dhcp_process(0, ethernet_buff);
       if (ret == 0)
       {
           conf_info- >dhcp = NETINFO_STATIC;
           wizchip_setnetinfo(conf_info);
       }
   }
   print_network_information();
}

 

步骤五:回读IP地址并打印PING提示信息

 

wizchip_getnetinfo(&net_info);
printf("please try ping %d.%d.%d.%drn", net_info.ip[0], net_info.ip[1], net_info.ip[2], net_info.ip[3]);

 

4 运行结果

烧录例程运行后,首先可以看到进行了PHY链路检测,然后打印了设置的网络地址信息以及PING提示信息。

使用PC端PING W55MH32的IP地址(192.168.1.30),可以PING通。

如果无法PING通,可以按照以下步骤进行排查。

检查设置的地址是否能与PC端地址进行通信,一般建议设置为同一网段的地址

确认PC端与W55MH32网线连接正确,如果连接在交换机或路由器上,可以改成PC直连W55MH32的方式。

回读IP,子网掩码,默认网关,这几个寄存器的值是否与设置一致。

关闭PC端防火墙。

5 总结

本文介绍了 W55MH32 芯片的性能,阐述网络地址信息组成与作用,通过实战展示该芯片网络初始化过程,含定义地址信息、初始化硬件和 TOE、设置地址及回读 IP 等步骤。烧录例程可完成相关检测与信息打印,PC 能 PING 通设备,若失败有排查方法。

下一篇文章将详细讲解DHCP协议,解析 DHCP 协议的核心原理及在获取 IP 信息中的应用,同时通过实战例程讲解在W55MH32 芯片上实现DHCP获取网络信息的具体实现步骤与要点,敬请期待!

WIZnet 是一家无晶圆厂半导体公司,成立于 1998 年。产品包括互联网处理器 iMCU™,它采用 TOE(TCP/IP 卸载引擎)技术,基于独特的专利全硬连线 TCP/IP。iMCU™面向各种应用中的嵌入式互联网设备。

WIZnet 在全球拥有 70 多家分销商,在香港、韩国、美国设有办事处,提供技术支持和产品营销。

香港办事处管理的区域包括:澳大利亚、印度、土耳其、亚洲(韩国和日本除外)。

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐
  • 热点推荐

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分