使用带 W6100-EVB 的 STM32CubeMX 制作环回服务器,使用 WIZnet W6100 硬连线 TCP/IP 芯片制作 ipv6
转发: Make IPv4 or IPv6 loopback server with STM32f103vc and w6100
项目介绍
第一步:准备软件
Loopback示例测试需要以下串口终端程序,从下面的链接下载和安装。
第二步:准备硬件
将以太网电缆连接到 W6100-EVB 以太网端口。
使用 5 针微型 USB 数据线将 W6100-EVB 连接到台式机或笔记本电脑。
第 3 步:设置环回示例
如果您需要STMCubeIDE和ST Flash Loader设置或使用教程,请参考WIZnet docs sige中的getting start page
Getting Started with the W6100-EVB | WIZnet Document System
Make New W6100-EVB Projects using STM32CubeIDE | WIZnet Document System
而且,这里有很多 W6100-EVB 的示例(MQTT、HTTP、NTP、TLS 等)WIZnet ioLibrary & io6Library examples · GitHub
那是为了 truestudio。 但使用此示例转换 stm32cube 并不困难。
要测试 Loopback 示例,应在代码中完成次要设置。
- 如果要使用 SPI 测试环回示例,请设置模式开关 [0 0]
- 如果您想使用总线测试环回示例,请设置模式开关 [0 1]
如果您想使用 DMA,请在“W6100_EVB_SPI_DMA/Core/Inc/”目录中的 main.h 中定义注释。
//#define DMA
- 在“main.c”中设置网络配置,例如 IP,这是“W6100_EVB_SPI_DMA/Core/Src/”目录中的环回示例。 如果您使用自动地址配置,请不要删除此评论
/* Network */
wiz_NetInfo gWIZNETINFO = { .mac = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
},
.ip = {
192, 168, 111, 107
},
.sn = {
255, 255, 255, 0
},
.gw = {
192, 168, 11, 1
},
.dns = {
8, 8, 8, 8
},
.lla={
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0
},
.gua={
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0
},
.sn6={
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0
},
.gw6={
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0
}
};
/* Address Auto Configuration */
if(1 != AddressAutoConfig_Init(&gWIZNETINFO))
{
// Manual Set IPv6
gWIZNETINFO = gWIZNETINFO_M;
ctlnetwork(CN_SET_NETINFO, &gWIZNETINFO);
}
如果您使用静态网络,请配置此注释。 并删除 AddressAutoConfig_Init
wiz_NetInfo gWIZNETINFO_M = { .mac = {0x00,0x08,0xdc,0xFF,0xFF,0xFF},
.ip = {192,168,11,107},
.sn = {255, 255, 255, 0},
.gw = {192, 168, 11, 1},
.dns = {8, 8, 8, 8},
//.dhcp = NETINFO_STATIC,
.lla={
0x00,0x00, 0x00,0x00,
0x00,0x00, 0x00,0x00,
}, ///< Source Link Local Address
.gua={0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00}, ///< Source Global Unicast Address
.sn6={0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00 }, ///< IPv6 Prefix
.gw6={0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00} ///< Gateway IPv6 Address
};
并添加这个。
// Manual Set IPv6
gWIZNETINFO = gWIZNETINFO_M;
ctlnetwork(CN_SET_NETINFO, &gWIZNETINFO);
- 在“main.c”中设置环回端口配置。
/* Port */
while (1)
{
loopback_udps(0,ethBuf0,50000,AS_IPV4);
loopback_tcps(1,ethBuf3,50003,AS_IPV4);
loopback_tcps(2,ethBuf4,50004,AS_IPV6);
loopback_tcps(3,ethBuf5,50005,AS_IPDUAL);
}
第 4 步:构建
- 完成 Loopback 示例配置后,鼠标右键单击项目名称并选择“构建项目”
- 构建完成后,将在“\Debug”或“\Release”目录中生成“xxx.hex”。
第 5 步:上传并运行
通过 UART 进行闪存编程
STMicroelectronics 闪存加载程序演示程序是一个通过其 UART 执行 MCU 闪存在系统编程 (ISP) 的程序。
按下板上的“Boot0”按钮开关,直到复位或供电后打开板子。
- 按下板上的“Boot0”按钮开关,直到复位或供电后打开板子。
在 Flash 加载器演示程序的主窗口中设置设置。 下图为W6100-EVB的默认配置
- 在 Flash 加载器演示程序的主窗口中设置设置。 下图为W6100-EVB的默认配置
- 参考下图 如果您在 flash loader demonstrator 中没有进入下一页,请用户重试此操作。 '按下板上的'Boot0'按钮开关,直到复位或供电后打开板子。
- 完成flash编程和板卡复位后,MCU开始运行程序 当运行到loopback程序时,如下图串口调试信息打印出来。
- 使用 ScriptCommunicator TCP、UDP IPv4 或 IPv6 客户端连接到开放环回服务器。 连接loopback server时需要输入步骤3配置的IP,默认为UDP:50000, TCP IPv4:50003, TCP IPv6:50004, TCP IPv4+IPv6:55000
您在终端的启动消息中获得了 IP 信息 📷
- 运行 ScriptCommunicator 并为 IPv4 连接设置套接字。 并向 W6100EVB 发送消息。 然后 W6100EVB 回复您发送的消息。
- 运行 ScriptCommunicator 并为 IPv6 连接设置套接字。 并向 W6100EVB 发送消息。 然后 W6100EVB 回复您发送的消息。
- 测试抓包