第二十六章 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芯片上面实现上位机搜索和配置功能,并通过实战例程,为大家讲解如何通过上位机搜索局域网中的W55MH32,并进行网络地址配置。例程中提供了一个开源的上位机配置工具SmartConfigTool,支持搜索设备,设置网络地址参数以及固件升级等功能。
该例程用到的其他网络协议,例如DHCP请参考相关章节。有关W55MH32的初始化过程,请参考Network Install 章节,这里将不再赘述。
1 上位机简介
嵌入式上位机(Embedded Host)是指在嵌入式系统中,作为与嵌入式设备进行通信、控制和数据交换的上位设备。它通常拥有更强的计算能力和存储资源,用于控制和监控下位嵌入式设备(如传感器、执行器、嵌入式控制器等)的运行。
2 特点
高效性:上位机配置下位机可以大大提高控制系统的效率。上位机发出控制命令,下位机接收并解释成相应的时序信号来直接控制设备,响应速度快,可靠性高。
实时性:下位机可以实时地响应上位机的控制指令,并对设备进行实时控制,确保系统的稳定性和安全性。同时,下位机也可以实时地向上位机反馈设备状态数据,使得上位机可以及时了解系统状态并进行相应的控制调整。
灵活性:上位机和下位机可以灵活地组合和扩展,以满足不同系统的需求。上位机可以同时连接多个下位机,对它们进行监控、控制和数据处理。同时,下位机也可以根据需要连接多个设备,实现设备的分布式控制。
交互友好:上位机通常具有人机交互界面,为用户提供友好的图形界面或者文本界面,方便用户进行操作、配置和监控。
3 应用场景
W55MH32使用NetBIOS 协议可以进行以下几种应用:
工业自动化:上位机发出控制指令,下位机接收并解释成相应的时序信号来直接控制设备,响应速度快,可靠性高。上位机可以监控生产过程、发出控制指令、进行数据分析和优化等。下位机可以实时控制设备、采集设备状态数据、接收和执行控制指令等。
物联网:上位机可以远程监控和管理设备、进行数据分析和处理等。下位机可以接收和执行控制指令、采集和传输设备状态数据等。
智能家居:上位机可以发出控制指令、监控家庭网络等。下位机可以接收和执行控制指令、控制智能设备的运行和状态采集等。
医疗设备:上位机可以发出控制指令、远程监控和管理医疗设备等。下位机可以接收和执行控制指令、控制医疗设备的运行和状态采集等。
4 搜索和配置的基本工作流程
搜索:上位机通过 UDP 广播发送 FIND 命令,设备作为下位机在收到后将自身配置信息发送给上位机,上位机收到后呈现获取到的设备信息;
配置:在已经搜索到设备的基础上,上位机向该设备发送 SETT 命令后,设备收到后根据上位机显示的网络信息对本地进行重新配置,并在串口显示。

5 实现过程
接下来,我们在W55MH32上实现上位机搜索回复以及上位机配置功能。
注意:测试实例需要PC端和W55MH32处于同一网段。
首先在主循环内,调用了do_udp_config()函数。持续地运行do_udp_config()函数。
1. while (1) 2. { 3. do_udp_config(SOCKET_ID); // Run and precess UpperComputer command. 4. } 5.
do_udp_config()函数不断处理 UDP 配置相关的操作,包括接收来自上位机的命令,根据命令进行不同的操作,如接收网络信息查询请求并返回网络信息,或者接收网络配置信息并更新本地网络信息等。
do_udp_config()函数如下:
1. void do_udp_config(uint8_t sn) 2. { 3. uint16_t i; 4. uint16_t len = 0; 5. uint8_t rip[4]; 6. uint16_t rport; 7. uint16_t local_port = 1460; 8. uint8_t sw_version[2] = {1, 0}; 9. 10. memset(RecvMsg.op, 0, sizeof(RecvMsg)); // clear RecvMsg 11. 12. switch (getSn_SR(sn)) 13. { 14. case SOCK_UDP: 15. if ((len = getSn_RX_RSR(sn)) > 0) 16. { 17. len = recvfrom(sn, (uint8_t *)&RecvMsg, len, rip, &rport); 18. if (len > sizeof(ConfigMsg)) 19. break; 20. { 21. // FIND: searching, SETT: setting, FIRM: firmware uploading 22. if ((RecvMsg.op[0] == 'F') && (RecvMsg.op[1] == 'I') && (RecvMsg.op[2] == 'N') && (RecvMsg.op[3] == 'D')) 23. { 24. wizchip_getnetinfo(&netinfo); // get config network infomation. 25. 26. memcpy(ConfigMsg.mac, netinfo.mac, 6); 27. memcpy(ConfigMsg.lip, netinfo.ip, 4); 28. memcpy(ConfigMsg.gw, netinfo.gw, 4); 29. memcpy(ConfigMsg.dns, netinfo.dns, 4); 30. memcpy(ConfigMsg.sub, netinfo.sn, 4); 31. memcpy(ConfigMsg.sw_ver, sw_version, 2); 32. 33. RecvMsg = ConfigMsg; 34. memcpy(RecvMsg.op, "FIND", 4); 35. sendto(sn, (uint8_t *)&RecvMsg, sizeof(RecvMsg), rip, rport); // return network info to uppercomputer. 36. printf("Findrn"); 37. } 38. else if ((RecvMsg.op[0] == 'S') && (RecvMsg.op[1] == 'E') && (RecvMsg.op[2] == 'T') && (RecvMsg.op[3] == 'T')) 39. { 40. printf("Settrn"); 41. if ((RecvMsg.mac[0] == ConfigMsg.mac[0]) && (RecvMsg.mac[1] == ConfigMsg.mac[1]) && (RecvMsg.mac[2] == ConfigMsg.mac[2]) && (RecvMsg.mac[3] == ConfigMsg.mac[3]) && (RecvMsg.mac[4] == ConfigMsg.mac[4]) && (RecvMsg.mac[5] == ConfigMsg.mac[5])) 42. { 43. for (i = 0; i < 4; i++) // recv uppercomputer config network info 44. { 45. memcpy(netinfo.ip, RecvMsg.lip, 4); 46. memcpy(netinfo.sn, RecvMsg.sub, 4); 47. memcpy(netinfo.gw, RecvMsg.gw, 4); 48. memcpy(netinfo.dns, RecvMsg.dns, 4); 49. netinfo.dhcp = NETINFO_STATIC; 50. } 51. wizchip_setnetinfo(&netinfo); // write chip 52. printf("From the UpperComputer Config network information :rn"); 53. print_network_information(); // readback and print 54. } 55. } 56. } 57. } 58. 59. break; 60. case SOCK_CLOSED: 61. socket(sn, Sn_MR_UDP, local_port, 0x00); 62. break; 63. } 64. } 65.
首先会运行一个UDP的状态机,当接收到消息时,会判断指令,如果为“FIND”指令,则读取设备的网络地址信息进行回传,如果为“SETT”指令,则将上位机下发的地址更新到W55MH32中。
6 运行结果
烧录例程运行后,首先进行了PHY链路检测,然后是通过DHCP获取网络地址并打印网络地址信息,观察串口打印的信息以获取设备运行状态;等待设备打印相关网络信息后,打开ConfigTool上位机工具,点击Search可以看到上位机成功获取并呈现设备信息,然后修改IP地址,点击Setting可以看到串口这边打印了上位机配置后的网络信息,如下图所示:

上位机查找设备:

上位机修改网络配置信息:

7 总结
本文讲解了如何在 W55MH32 芯片上实现上位机搜索和配置功能,通过实战例程展示了使用开源上位机配置工具 SmartConfigTool 搜索局域网中的 W55MH32 并进行网络地址配置的过程。文章详细介绍了上位机的概念、特点、应用场景以及搜索和配置的基本工作流程,帮助读者理解其在嵌入式设备管理中的实际应用价值。
下一篇文章将聚焦在 W55MH32 芯片上面使用 TOE 中断功能,解析 TOE 中断功能的核心原理及应用,同时通过实战例程讲解如何利用中断进行回环数据测试,敬请期待!
WIZnet 是一家无晶圆厂半导体公司,成立于 1998 年。产品包括互联网处理器 iMCU™,它采用 TOE(TCP/IP 卸载引擎)技术,基于独特的专利全硬连线 TCP/IP。iMCU™ 面向各种应用中的嵌入式互联网设备。
WIZnet 在全球拥有 70 多家分销商,在香港、韩国、美国设有办事处,提供技术支持和产品营销。
香港办事处管理的区域包括:澳大利亚、印度、土耳其、亚洲(韩国和日本除外)。
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !